diff --git a/contrib/btree_gist/btree_time.c b/contrib/btree_gist/btree_time.c
index cbbe05d..efb53e7 100644
--- a/contrib/btree_gist/btree_time.c
+++ b/contrib/btree_gist/btree_time.c
@@ -29,12 +29,25 @@ Datum		gbt_timetz_consistent(PG_FUNCTION_ARGS);
 Datum		gbt_time_penalty(PG_FUNCTION_ARGS);
 Datum		gbt_time_same(PG_FUNCTION_ARGS);
 
+/* workaround for bug in utils/date.h about Datum and TimeADT conversation */
+static float8 timeadt1, timeadt2;
+
+static float8*
+makeTimeADTPointer( float8* t, TimeADT s ) {
+	*t = s;
+	return t;
+}
+
+#define VoidGetDatum1(x)	PointerGetDatum(  makeTimeADTPointer(&timeadt1, *(TimeADT*)(x)) )
+#define VoidGetDatum2(x)	PointerGetDatum(  makeTimeADTPointer(&timeadt2, *(TimeADT*)(x)) )
+#define P_TimeADTGetDatum1(x)	PointerGetDatum(  makeTimeADTPointer(&timeadt1, (x)) )
+#define P_TimeADTGetDatum2(x)	PointerGetDatum(  makeTimeADTPointer(&timeadt2, (x)) )
 
 static bool
 gbt_timegt(const void *a, const void *b)
 {
 	return DatumGetBool(
-						DirectFunctionCall2(time_gt, TimeADTGetDatum(*((TimeADT *) a)), TimeADTGetDatum(*((TimeADT *) b)))
+						DirectFunctionCall2(time_gt, VoidGetDatum1(a), VoidGetDatum2(b))
 		);
 }
 
@@ -42,7 +55,7 @@ static bool
 gbt_timege(const void *a, const void *b)
 {
 	return DatumGetBool(
-						DirectFunctionCall2(time_ge, TimeADTGetDatum(*((TimeADT *) a)), TimeADTGetDatum(*((TimeADT *) b)))
+						DirectFunctionCall2(time_ge, VoidGetDatum1(a), VoidGetDatum2(b))
 		);
 }
 
@@ -50,7 +63,7 @@ static bool
 gbt_timeeq(const void *a, const void *b)
 {
 	return DatumGetBool(
-						DirectFunctionCall2(time_eq, TimeADTGetDatum(*((TimeADT *) a)), TimeADTGetDatum(*((TimeADT *) b)))
+						DirectFunctionCall2(time_eq, VoidGetDatum1(a), VoidGetDatum2(b))
 		);
 }
 
@@ -58,7 +71,7 @@ static bool
 gbt_timele(const void *a, const void *b)
 {
 	return DatumGetBool(
-						DirectFunctionCall2(time_le, TimeADTGetDatum(*((TimeADT *) a)), TimeADTGetDatum(*((TimeADT *) b)))
+						DirectFunctionCall2(time_le, VoidGetDatum1(a), VoidGetDatum2(b))
 		);
 }
 
@@ -66,7 +79,7 @@ static bool
 gbt_timelt(const void *a, const void *b)
 {
 	return DatumGetBool(
-						DirectFunctionCall2(time_lt, TimeADTGetDatum(*((TimeADT *) a)), TimeADTGetDatum(*((TimeADT *) b)))
+						DirectFunctionCall2(time_lt, VoidGetDatum1(a), VoidGetDatum2(b))
 		);
 }
 
@@ -116,17 +129,23 @@ Datum
 gbt_timetz_compress(PG_FUNCTION_ARGS)
 {
 	GISTENTRY  *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
-	GISTENTRY  *retval;
+	GISTENTRY  *retval = entry;
 
 	if (entry->leafkey)
 	{
 		timeKEY    *r = (timeKEY *) palloc(sizeof(timeKEY));
 		TimeTzADT  *tz = DatumGetTimeTzADTP(entry->key);
+		TimeADT		tmp;
 
 		retval = palloc(sizeof(GISTENTRY));
 
 		/* We are using the time + zone only to compress */
-		r->lower = r->upper = (tz->time + tz->zone);
+#ifdef HAVE_INT64_TIMESTAMP
+		tmp = tz->time + (tz->zone * INT64CONST(1000000));
+#else
+		tmp = (tz->time + tz->zone);
+#endif
+		r->lower = r->upper = tmp;
 		gistentryinit(*retval, PointerGetDatum(r),
 					  entry->rel, entry->page,
 					  entry->offset, sizeof(timeKEY), FALSE);
@@ -141,7 +160,6 @@ Datum
 gbt_time_consistent(PG_FUNCTION_ARGS)
 {
 	GISTENTRY  *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
-	TimeADT		query = PG_GETARG_TIMEADT(1);
 	timeKEY    *kkk = (timeKEY *) DatumGetPointer(entry->key);
 	GBT_NUMKEY_R key;
 	StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
@@ -151,7 +169,7 @@ gbt_time_consistent(PG_FUNCTION_ARGS)
 
 
 	PG_RETURN_BOOL(
-				   gbt_num_consistent(&key, (void *) &query, &strategy, GIST_LEAF(entry), &tinfo)
+				   gbt_num_consistent(&key, (void *) PG_GETARG_POINTER(1), &strategy, GIST_LEAF(entry), &tinfo)
 		);
 }
 
@@ -160,17 +178,25 @@ gbt_timetz_consistent(PG_FUNCTION_ARGS)
 {
 	GISTENTRY  *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
 	TimeTzADT  *query = PG_GETARG_TIMETZADT_P(1);
-	TimeADT		qqq = query->time + query->zone;
+	StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
+
 	timeKEY    *kkk = (timeKEY *) DatumGetPointer(entry->key);
+	TimeADT		qqq;
 	GBT_NUMKEY_R key;
-	StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
+	bool res;
+
+#ifdef HAVE_INT64_TIMESTAMP
+	qqq = query->time + (query->zone * INT64CONST(1000000));
+#else
+	qqq = (query->time + query->zone);
+#endif
 
 	key.lower = (GBT_NUMKEY *) & kkk->lower;
 	key.upper = (GBT_NUMKEY *) & kkk->upper;
 
-	PG_RETURN_BOOL(
-				   gbt_num_consistent(&key, (void *) &qqq, &strategy, GIST_LEAF(entry), &tinfo)
-		);
+	res = gbt_num_consistent(&key, (void *) &qqq, &strategy, GIST_LEAF(entry), &tinfo);
+
+	PG_RETURN_BOOL( res );
 }
 
 
@@ -202,8 +228,8 @@ gbt_time_penalty(PG_FUNCTION_ARGS)
 
 	intr = DatumGetIntervalP(DirectFunctionCall2(
 												 time_mi_time,
-										TimeADTGetDatum(newentry->upper),
-									 TimeADTGetDatum(origentry->upper)));
+										P_TimeADTGetDatum1(newentry->upper),
+									 P_TimeADTGetDatum2(origentry->upper)));
 
 	/* see interval_larger */
 	res = Max(intr->time + intr->month * (30 * 86400), 0);
@@ -211,8 +237,8 @@ gbt_time_penalty(PG_FUNCTION_ARGS)
 
 	intr = DatumGetIntervalP(DirectFunctionCall2(
 												 time_mi_time,
-									   TimeADTGetDatum(origentry->lower),
-									  TimeADTGetDatum(newentry->lower)));
+									   P_TimeADTGetDatum1(origentry->lower),
+									  P_TimeADTGetDatum2(newentry->lower)));
 
 	/* see interval_larger */
 	res += Max(intr->time + intr->month * (30 * 86400), 0);
@@ -224,8 +250,8 @@ gbt_time_penalty(PG_FUNCTION_ARGS)
 	{
 		intr = DatumGetIntervalP(DirectFunctionCall2(
 													 time_mi_time,
-									   TimeADTGetDatum(origentry->upper),
-									 TimeADTGetDatum(origentry->lower)));
+									   P_TimeADTGetDatum1(origentry->upper),
+									 P_TimeADTGetDatum2(origentry->lower)));
 		*result += FLT_MIN;
 		*result += (float) (res / ((double) (res + intr->time + intr->month * (30 * 86400))));
 		*result *= (FLT_MAX / (((GISTENTRY *) PG_GETARG_POINTER(0))->rel->rd_att->natts + 1));
diff --git a/contrib/btree_gist/btree_ts.c b/contrib/btree_gist/btree_ts.c
index f9d801a..aaa0c2e 100644
--- a/contrib/btree_gist/btree_ts.c
+++ b/contrib/btree_gist/btree_ts.c
@@ -29,6 +29,8 @@ Datum		gbt_ts_penalty(PG_FUNCTION_ARGS);
 Datum		gbt_ts_same(PG_FUNCTION_ARGS);
 
 
+#define P_TimestampGetDatum(x)  PointerGetDatum( &(x) )
+
 static bool
 gbt_tsgt(const void *a, const void *b)
 {
@@ -231,8 +233,8 @@ gbt_ts_penalty(PG_FUNCTION_ARGS)
 
 	intr = DatumGetIntervalP(DirectFunctionCall2(
 												 timestamp_mi,
-									  TimestampGetDatum(newentry->upper),
-									  TimestampGetDatum(origentry->upper)
+									  P_TimestampGetDatum(newentry->upper),
+									  P_TimestampGetDatum(origentry->upper)
 												 ));
 
 	/* see interval_larger */
@@ -242,8 +244,8 @@ gbt_ts_penalty(PG_FUNCTION_ARGS)
 
 	intr = DatumGetIntervalP(DirectFunctionCall2(
 												 timestamp_mi,
-									 TimestampGetDatum(origentry->lower),
-									   TimestampGetDatum(newentry->lower)
+									 P_TimestampGetDatum(origentry->lower),
+									   P_TimestampGetDatum(newentry->lower)
 												 ));
 
 	/* see interval_larger */
@@ -256,8 +258,8 @@ gbt_ts_penalty(PG_FUNCTION_ARGS)
 	{
 		intr = DatumGetIntervalP(DirectFunctionCall2(
 													 timestamp_mi,
-									 TimestampGetDatum(origentry->upper),
-									  TimestampGetDatum(origentry->lower)
+									 P_TimestampGetDatum(origentry->upper),
+									  P_TimestampGetDatum(origentry->lower)
 													 ));
 		*result += FLT_MIN;
 		*result += (float) (res / ((double) (res + intr->time + intr->month * (30 * 86400))));
diff --git a/contrib/btree_gist/btree_utils_num.c b/contrib/btree_gist/btree_utils_num.c
index f524427..f37c001 100644
--- a/contrib/btree_gist/btree_utils_num.c
+++ b/contrib/btree_gist/btree_utils_num.c
@@ -13,7 +13,6 @@ gbt_num_compress(GISTENTRY *retval, GISTENTRY *entry, const gbtree_ninfo * tinfo
 		{
 			int16		i2;
 			int32		i4;
-			TimeADT		ts;
 			DateADT		dt;
 		}			v;
 
@@ -34,10 +33,6 @@ gbt_num_compress(GISTENTRY *retval, GISTENTRY *entry, const gbtree_ninfo * tinfo
 				v.i4 = DatumGetObjectId(entry->key);
 				leaf = &v.i4;
 				break;
-			case gbt_t_time:
-				v.ts = DatumGetTimeADT(entry->key);
-				leaf = &v.ts;
-				break;
 			case gbt_t_date:
 				v.dt = DatumGetDateADT(entry->key);
 				leaf = &v.dt;
diff --git a/contrib/chkpass/chkpass.c b/contrib/chkpass/chkpass.c
index 7541685..92cc24d 100644
--- a/contrib/chkpass/chkpass.c
+++ b/contrib/chkpass/chkpass.c
@@ -82,14 +82,10 @@ chkpass_in(PG_FUNCTION_ARGS)
 	}
 
 	if (verify_pass(str) != 0)
-	{
 		ereport(ERROR,
 				(errcode(ERRCODE_DATA_EXCEPTION),
 				 errmsg("password \"%s\" is weak", str)));
 
-		PG_RETURN_POINTER(NULL);
-	}
-
 	result = (chkpass *) palloc(sizeof(chkpass));
 
 	mysalt[0] = salt_chars[random() & 0x3f];
@@ -112,9 +108,6 @@ chkpass_out(PG_FUNCTION_ARGS)
 	chkpass    *password = (chkpass *) PG_GETARG_POINTER(0);
 	char	   *result;
 
-	if (password == NULL)
-		PG_RETURN_POINTER(NULL);
-
 	if ((result = (char *) palloc(16)) != NULL)
 	{
 		result[0] = ':';
@@ -134,10 +127,7 @@ Datum
 chkpass_rout(PG_FUNCTION_ARGS)
 {
 	chkpass    *password = (chkpass *) PG_GETARG_POINTER(0);
-	text	   *result = NULL;
-
-	if (password == NULL)
-		PG_RETURN_POINTER(NULL);
+	text	   *result;
 
 	if ((result = (text *) palloc(VARHDRSZ + 16)) != NULL)
 	{
@@ -162,9 +152,6 @@ chkpass_eq(PG_FUNCTION_ARGS)
 	char		str[10];
 	int			sz = 8;
 
-	if (!a1 || !a2)
-		PG_RETURN_BOOL(0);
-
 	if (a2->vl_len < 12)
 		sz = a2->vl_len - 4;
 	strncpy(str, a2->vl_dat, sz);
@@ -181,8 +168,6 @@ chkpass_ne(PG_FUNCTION_ARGS)
 	char		str[10];
 	int			sz = 8;
 
-	if (!a1 || !a2)
-		PG_RETURN_BOOL(0);
 	if (a2->vl_len < 12)
 		sz = a2->vl_len - 4;
 	strncpy(str, a2->vl_dat, sz);
diff --git a/contrib/chkpass/chkpass.sql.in b/contrib/chkpass/chkpass.sql.in
index 0a29481..d4bf912 100644
--- a/contrib/chkpass/chkpass.sql.in
+++ b/contrib/chkpass/chkpass.sql.in
@@ -19,12 +19,12 @@ SET search_path = public;
 CREATE FUNCTION chkpass_in(cstring)
 	RETURNS chkpass
 	AS 'MODULE_PATHNAME'
-	LANGUAGE 'c';
+	LANGUAGE C STRICT;
 
 CREATE FUNCTION chkpass_out(chkpass)
 	RETURNS cstring
 	AS 'MODULE_PATHNAME'
-	LANGUAGE 'c';
+	LANGUAGE C STRICT;
 
 CREATE TYPE chkpass (
 	internallength = 16,
@@ -36,7 +36,7 @@ CREATE TYPE chkpass (
 CREATE FUNCTION raw(chkpass)
 	RETURNS text
 	AS 'MODULE_PATHNAME', 'chkpass_rout'
-	LANGUAGE 'c';
+	LANGUAGE C STRICT;
 
 --
 --	The various boolean tests:
@@ -45,12 +45,12 @@ CREATE FUNCTION raw(chkpass)
 CREATE FUNCTION eq(chkpass, text)
 	RETURNS bool
 	AS 'MODULE_PATHNAME', 'chkpass_eq'
-	LANGUAGE 'c';
+	LANGUAGE C STRICT;
 
 CREATE FUNCTION ne(chkpass, text)
 	RETURNS bool
 	AS 'MODULE_PATHNAME', 'chkpass_ne'
-	LANGUAGE 'c';
+	LANGUAGE C STRICT;
 
 --
 --	Now the operators.  Note how some of the parameters to some
diff --git a/contrib/dbase/Makefile b/contrib/dbase/Makefile
index 17096d3..3b1c9ac 100644
--- a/contrib/dbase/Makefile
+++ b/contrib/dbase/Makefile
@@ -3,7 +3,7 @@
 PROGRAM = dbf2pg
 OBJS	= dbf.o dbf2pg.o endian.o
 PG_CPPFLAGS = -I$(libpq_srcdir)
-PG_LIBS = $(libpq)
+PG_LIBS = $(libpq_pgport)
 
 # Uncomment this to provide charset translation
 #PG_CPPFLAGS += -DHAVE_ICONV_H
diff --git a/contrib/findoidjoins/Makefile b/contrib/findoidjoins/Makefile
index cb0f4b5..f0fac2d 100644
--- a/contrib/findoidjoins/Makefile
+++ b/contrib/findoidjoins/Makefile
@@ -4,7 +4,7 @@ PROGRAM = findoidjoins
 OBJS	= findoidjoins.o
 
 PG_CPPFLAGS = -I$(libpq_srcdir)
-PG_LIBS = $(libpq)
+PG_LIBS = $(libpq_pgport)
 
 SCRIPTS = make_oidjoins_check
 DOCS = README.findoidjoins
diff --git a/contrib/fuzzystrmatch/dmetaphone.c b/contrib/fuzzystrmatch/dmetaphone.c
index 6db4223..86b4853 100644
--- a/contrib/fuzzystrmatch/dmetaphone.c
+++ b/contrib/fuzzystrmatch/dmetaphone.c
@@ -48,7 +48,7 @@
 
 
 /*
- * $Revision: 1.4 $
+ * $Revision$
  * $Id$
  */
 
diff --git a/contrib/fuzzystrmatch/fuzzystrmatch.sql.in b/contrib/fuzzystrmatch/fuzzystrmatch.sql.in
index 07e6dce..6adb804 100644
--- a/contrib/fuzzystrmatch/fuzzystrmatch.sql.in
+++ b/contrib/fuzzystrmatch/fuzzystrmatch.sql.in
@@ -17,7 +17,7 @@ LANGUAGE 'C' WITH (iscachable, isstrict);
 
 CREATE FUNCTION text_soundex(text) RETURNS text
 AS 'MODULE_PATHNAME', 'soundex'
-LANGUAGE 'C';
+LANGUAGE 'C' WITH (iscachable, isstrict);
 
 CREATE FUNCTION dmetaphone (text) RETURNS text 
 LANGUAGE C IMMUTABLE STRICT
diff --git a/contrib/intagg/int_aggregate.sql.in b/contrib/intagg/int_aggregate.sql.in
index 8a7d9b3..af31f22 100644
--- a/contrib/intagg/int_aggregate.sql.in
+++ b/contrib/intagg/int_aggregate.sql.in
@@ -1,32 +1,43 @@
 -- Adjust this setting to control where the objects get created.
 SET search_path = public;
 
+--
+-- The aggregate transition state (denoted INT4 in caps below) is really
+-- an array, ie, int4[].  We have to lie and pretend it is a pass-by-value
+-- datatype so that nodeAgg.c will not try to do memory management for it.
+--
+
 -- Internal function for the aggregate
 -- Is called for each item in an aggregation
-CREATE OR REPLACE FUNCTION int_agg_state (int4, int4)
-RETURNS int4
+CREATE OR REPLACE FUNCTION int_agg_state (INT4, int4)
+RETURNS INT4
 AS 'MODULE_PATHNAME','int_agg_state'
-LANGUAGE 'C' IMMUTABLE STRICT;
+LANGUAGE 'C' STRICT;
 
 -- Internal function for the aggregate
 -- Is called at the end of the aggregation, and returns an array.
-CREATE OR REPLACE FUNCTION int_agg_final_array (int4)
+CREATE OR REPLACE FUNCTION int_agg_final_array (INT4)
 RETURNS int4[]
 AS 'MODULE_PATHNAME','int_agg_final_array'
-LANGUAGE 'C' IMMUTABLE STRICT;
+LANGUAGE 'C' STRICT;
 
 -- The aggregate function itself
 -- uses the above functions to create an array of integers from an aggregation.
 CREATE AGGREGATE int_array_aggregate (
 	BASETYPE = int4,
 	SFUNC = int_agg_state,
-	STYPE = int4,
+	STYPE = INT4,
 	FINALFUNC = int_agg_final_array,
 	INITCOND = 0
 );
 
+-- The aggregate component functions are not designed to be called
+-- independently, so disable public access to them
+REVOKE ALL ON FUNCTION int_agg_state (INT4, int4) FROM PUBLIC;
+REVOKE ALL ON FUNCTION int_agg_final_array (INT4) FROM PUBLIC;
+
 -- The enumeration function
--- returns each element in a one dimentional integer array
+-- returns each element in a one dimensional integer array
 -- as a row.
 CREATE OR REPLACE FUNCTION int_array_enum(int4[])
 RETURNS setof integer
diff --git a/contrib/intarray/README.intarray b/contrib/intarray/README.intarray
index a1ffef1..f850dee 100644
--- a/contrib/intarray/README.intarray
+++ b/contrib/intarray/README.intarray
@@ -60,6 +60,13 @@ test=# select subarray('{1,2,3,2,1}'::int[],2,3);
  {2,3,2}
 (1 row)
 
+  int[] intset(int4) - casting int4 to int[]
+
+test=# select intset(1);
+ intset 
+--------
+ {1}
+(1 row)
 
 OPERATIONS:
 
diff --git a/contrib/isbn_issn/isbn_issn.sql.in b/contrib/isbn_issn/isbn_issn.sql.in
index f4a9303..6731346 100644
--- a/contrib/isbn_issn/isbn_issn.sql.in
+++ b/contrib/isbn_issn/isbn_issn.sql.in
@@ -14,12 +14,12 @@ SET search_path = public;
 CREATE FUNCTION issn_in(cstring)
 RETURNS issn
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 CREATE FUNCTION issn_out(issn)
 RETURNS cstring
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 CREATE TYPE issn (
 	INTERNALLENGTH = 16,
@@ -39,32 +39,32 @@ COMMENT ON TYPE issn
 CREATE FUNCTION issn_lt(issn, issn)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 CREATE FUNCTION issn_le(issn, issn)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 CREATE FUNCTION issn_eq(issn, issn)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 CREATE FUNCTION issn_ge(issn, issn)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 CREATE FUNCTION issn_gt(issn, issn)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 CREATE FUNCTION issn_ne(issn, issn)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 --
 --	Now the operators.  Note how some of the parameters to some
@@ -120,7 +120,7 @@ CREATE OPERATOR <> (
 CREATE FUNCTION issn_cmp(issn, issn)
 RETURNS integer
 AS '$libdir/isbn_issn'
-LANGUAGE c;
+LANGUAGE c STRICT;
 
 -- Create default operator class for 'issn'    --
 -- Needed to create index or primary key       --
@@ -147,12 +147,12 @@ AS
 CREATE FUNCTION isbn_in(cstring)
 RETURNS isbn
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 CREATE FUNCTION isbn_out(isbn)
 RETURNS cstring
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 CREATE TYPE isbn (
 	INTERNALLENGTH = 16,
@@ -171,32 +171,32 @@ COMMENT ON TYPE isbn IS 'International Standard Book Number';
 CREATE FUNCTION isbn_lt(isbn, isbn)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 CREATE FUNCTION isbn_le(isbn, isbn)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 CREATE FUNCTION isbn_eq(isbn, isbn)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 CREATE FUNCTION isbn_ge(isbn, isbn)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 CREATE FUNCTION isbn_gt(isbn, isbn)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 CREATE FUNCTION isbn_ne(isbn, isbn)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 --
 --	Now the operators.  Note how some of the parameters to some
@@ -253,7 +253,7 @@ CREATE OPERATOR <> (
 CREATE FUNCTION isbn_cmp(isbn, isbn)
 RETURNS integer
 AS '$libdir/isbn_issn'
-LANGUAGE c;
+LANGUAGE c STRICT;
 
 -- Create default operator class for 'isbn'    --
 -- Needed to create index or primary key       --
diff --git a/contrib/lo/lo.sql.in b/contrib/lo/lo.sql.in
index acb1d81..d3370c4 100644
--- a/contrib/lo/lo.sql.in
+++ b/contrib/lo/lo.sql.in
@@ -15,13 +15,13 @@ SET search_path = public;
 CREATE FUNCTION lo_in(cstring)
 RETURNS lo
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C' IMMUTABLE;
+LANGUAGE C IMMUTABLE STRICT;
 
 -- used by the lo type, it returns the oid of the object
 CREATE FUNCTION lo_out(lo)
 RETURNS cstring
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C' IMMUTABLE;
+LANGUAGE C IMMUTABLE STRICT;
 
 -- finally the type itself
 CREATE TYPE lo (
@@ -35,7 +35,7 @@ CREATE TYPE lo (
 CREATE FUNCTION lo_oid(lo)
 RETURNS oid
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C' IMMUTABLE;
+LANGUAGE C IMMUTABLE STRICT;
 
 -- same function, named to allow it to be used as a type coercion, eg:
 --    CREATE TABLE a (image lo);
@@ -44,7 +44,7 @@ LANGUAGE 'C' IMMUTABLE;
 CREATE FUNCTION oid(lo)
 RETURNS oid
 AS 'MODULE_PATHNAME', 'lo_oid'
-LANGUAGE 'C' IMMUTABLE;
+LANGUAGE C IMMUTABLE STRICT;
 CREATE CAST (lo as oid) WITH FUNCTION oid(lo) AS IMPLICIT;
 
 -- this allows us to convert an oid to a managed lo object
@@ -52,11 +52,11 @@ CREATE CAST (lo as oid) WITH FUNCTION oid(lo) AS IMPLICIT;
 CREATE FUNCTION lo(oid)
 RETURNS lo
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C' IMMUTABLE;
+LANGUAGE C IMMUTABLE STRICT;
 CREATE CAST (oid as lo) WITH FUNCTION lo(oid) AS IMPLICIT;
 
 -- This is used in triggers
 CREATE FUNCTION lo_manage()
 RETURNS trigger
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C;
diff --git a/contrib/miscutil/misc_utils.c b/contrib/miscutil/misc_utils.c
index cb0f4b8..855addb 100644
--- a/contrib/miscutil/misc_utils.c
+++ b/contrib/miscutil/misc_utils.c
@@ -96,7 +96,7 @@ active_listeners(text *relname)
 	{
 		d = heap_getattr(lTuple, Anum_pg_listener_pid, tdesc, &isnull);
 		pid = DatumGetInt32(d);
-		if ((pid == ourpid) || (kill(pid, SIGTSTP) == 0))
+		if ((pid == ourpid) || (kill(pid, 0) == 0))
 			count++;
 	}
 	heap_endscan(sRel);
diff --git a/contrib/miscutil/misc_utils.sql.in b/contrib/miscutil/misc_utils.sql.in
index 5f777a1..7c1b5bf 100644
--- a/contrib/miscutil/misc_utils.sql.in
+++ b/contrib/miscutil/misc_utils.sql.in
@@ -37,14 +37,14 @@ LANGUAGE 'SQL';
 CREATE OR REPLACE FUNCTION min(int4,int4)
 RETURNS int4
 AS 'MODULE_PATHNAME', 'int4min'
-LANGUAGE 'C';
+LANGUAGE 'C' STRICT;
 
 -- max(x,y)
 --
 CREATE OR REPLACE FUNCTION max(int4,int4)
 RETURNS int4
 AS 'MODULE_PATHNAME', 'int4max'
-LANGUAGE 'C';
+LANGUAGE 'C' STRICT;
 
 -- Return the number of active listeners on a relation
 --
diff --git a/contrib/mysql/my2pg.diff b/contrib/mysql/my2pg.diff
index a4f859d..d8fdafe 100644
--- a/contrib/mysql/my2pg.diff
+++ b/contrib/mysql/my2pg.diff
@@ -14,7 +14,15 @@
 + # of the changes now before the tree starts shifting under me ...
 + 
   #
-  # $Log: my2pg.pl,v $
+  # $Log$
+  # Revision 1.1  2004-04-19 23:18:12  momjian
+  # Update to my2pg version 1.28, add docs, update URL for newest version.
+  #
+  # Create diff of custom changes Tom made to the utility for CREATE
+  # FUNCTION.
+  #
+  # This will make moving this utility out of CVS easier.
+  #
   # Revision 1.28  2002/11/30 12:03:48  fonin
 ***************
 *** 332,342 ****
diff --git a/contrib/mysql/my2pg.pl b/contrib/mysql/my2pg.pl
index 10a1885..9726895 100755
--- a/contrib/mysql/my2pg.pl
+++ b/contrib/mysql/my2pg.pl
@@ -46,7 +46,15 @@
 # of the changes now before the tree starts shifting under me ...
 
 #
-# $Log: my2pg.pl,v $
+# $Log$
+# Revision 1.13  2004-04-19 23:18:12  momjian
+# Update to my2pg version 1.28, add docs, update URL for newest version.
+#
+# Create diff of custom changes Tom made to the utility for CREATE
+# FUNCTION.
+#
+# This will make moving this utility out of CVS easier.
+#
 # Revision 1.12  2004/04/19 23:11:49  momjian
 # Update to my2pg 1.28, from:
 #
@@ -769,7 +777,7 @@ close(LIBTYPES);
 
 open(MAKE,">Makefile");
 print MAKE "#
-# My2Pg \$Revision: 1.13 $ \translated dump
+# My2Pg \$Revision$ \translated dump
 # Makefile
 #
 
diff --git a/contrib/oid2name/Makefile b/contrib/oid2name/Makefile
index 02d51de..152cf1c 100644
--- a/contrib/oid2name/Makefile
+++ b/contrib/oid2name/Makefile
@@ -4,7 +4,7 @@ PROGRAM = oid2name
 OBJS	= oid2name.o
 
 PG_CPPFLAGS = -I$(libpq_srcdir)
-PG_LIBS = $(libpq)
+PG_LIBS = $(libpq_pgport)
 
 DOCS = README.oid2name
 
diff --git a/contrib/pg_autovacuum/Makefile b/contrib/pg_autovacuum/Makefile
index 00b1b3f..c512d18 100644
--- a/contrib/pg_autovacuum/Makefile
+++ b/contrib/pg_autovacuum/Makefile
@@ -2,7 +2,7 @@ PROGRAM = pg_autovacuum
 OBJS	= pg_autovacuum.o dllist.o
 
 PG_CPPFLAGS = -I$(libpq_srcdir) -DFRONTEND
-PG_LIBS = $(libpq)
+PG_LIBS = $(libpq_pgport)
 
 DOCS = README.pg_autovacuum
 
diff --git a/contrib/pg_autovacuum/README.pg_autovacuum b/contrib/pg_autovacuum/README.pg_autovacuum
index 00da36d..64c5eb5 100644
--- a/contrib/pg_autovacuum/README.pg_autovacuum
+++ b/contrib/pg_autovacuum/README.pg_autovacuum
@@ -36,9 +36,9 @@ list.
 
 pg_autovacuum requires that the statistics system be enabled and
 reporting row level stats.  The overhead of the stats system has been
-shown to have a significant cost under certain workloads.  For
-instance, a tight loop of queries performing "select 1" was found to
-run nearly 30% slower when stats were enabled.  However, in practice,
+shown to be significant under certain workloads.  For instance, a
+tight loop of queries performing "select 1" was found to run nearly
+30% slower when row-level stats were enabled.  However, in practice,
 with more realistic workloads, the stats system overhead is usually
 nominal.
 
@@ -127,8 +127,11 @@ pg_autovacuum has the following optional arguments:
 -U username: Username pg_autovacuum will use to connect with, if not
    specified the current username is used.
 -P password: Password pg_autovacuum will use to connect with. *WARNING*
-   When installed as a Windows Service, this option will be stored in plain
-   text in the registry.
+   This option is insecure. When installed as a Windows Service, this
+   option will be stored in plain text in the registry. When used with
+   most Unix variants, other users will be able to see the argument to
+   the "-P" option via ps(1). The ~/.pgpass file can be used to
+   specify a password more securely.
 -H host: host name or IP to connect to.
 -p port: port used for connection.
 -h help: list of command line options.
@@ -165,7 +168,7 @@ The following arguments are used on Windows only:
 -N service user: Name of the Windows user account under which the service
    will run. Only used when installing as a Windows service.
    
--W service password: The password for the service account.Only used when 
+-W service password: The password for the service account. Only used when 
    installing as a Windows service.
 
 -R Uninstall pg_autovacuum as a service.
diff --git a/contrib/pg_dumplo/Makefile b/contrib/pg_dumplo/Makefile
index 8373a0b..682d9dc 100644
--- a/contrib/pg_dumplo/Makefile
+++ b/contrib/pg_dumplo/Makefile
@@ -4,7 +4,7 @@ PROGRAM = pg_dumplo
 OBJS	= main.o lo_export.o lo_import.o utils.o
 
 PG_CPPFLAGS = -I$(libpq_srcdir)
-PG_LIBS = $(libpq)
+PG_LIBS = $(libpq_pgport)
 
 DOCS = README.pg_dumplo
 
diff --git a/contrib/pgbench/Makefile b/contrib/pgbench/Makefile
index 827fd1b..1e0f639 100644
--- a/contrib/pgbench/Makefile
+++ b/contrib/pgbench/Makefile
@@ -4,7 +4,7 @@ PROGRAM = pgbench
 OBJS	= pgbench.o
 
 PG_CPPFLAGS = -I$(libpq_srcdir)
-PG_LIBS = $(libpq)
+PG_LIBS = $(libpq_pgport)
 
 DOCS = README.pgbench README.pgbench_jis
 
diff --git a/contrib/pgcrypto/blf.c b/contrib/pgcrypto/blf.c
index e6dde08..a1af747 100644
--- a/contrib/pgcrypto/blf.c
+++ b/contrib/pgcrypto/blf.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD$	*/
+/*	$OpenBSD: blf.c,v 1.3 2000/06/17 23:36:22 provos Exp $	*/
 
 /*
  * Blowfish block cipher for OpenBSD
diff --git a/contrib/pgcrypto/blf.h b/contrib/pgcrypto/blf.h
index 7ee728e..81159b1 100644
--- a/contrib/pgcrypto/blf.h
+++ b/contrib/pgcrypto/blf.h
@@ -1,4 +1,4 @@
-/*	$OpenBSD$ */
+/*	$OpenBSD: blf.h,v 1.3 2001/05/15 02:40:35 deraadt Exp $ */
 
 /*
  * Blowfish - a fast block cipher designed by Bruce Schneier
diff --git a/contrib/pgcrypto/crypt-des.c b/contrib/pgcrypto/crypt-des.c
index 4cf4803..0edff29 100644
--- a/contrib/pgcrypto/crypt-des.c
+++ b/contrib/pgcrypto/crypt-des.c
@@ -36,7 +36,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD$
+ * $FreeBSD: src/secure/lib/libcrypt/crypt-des.c,v 1.12 1999/09/20 12:39:20 markm Exp $
  *
  * This is an original implementation of the DES and the crypt(3) interfaces
  * by David Burren <davidb@werj.com.au>.
diff --git a/contrib/pgcrypto/crypt-md5.c b/contrib/pgcrypto/crypt-md5.c
index 1f81579..a7e21bf 100644
--- a/contrib/pgcrypto/crypt-md5.c
+++ b/contrib/pgcrypto/crypt-md5.c
@@ -1,7 +1,7 @@
 /*
  * File imported from FreeBSD, original by Poul-Henning Kamp.
  *
- * $FreeBSD$
+ * $FreeBSD: src/lib/libcrypt/crypt-md5.c,v 1.5 1999/12/17 20:21:45 peter Exp $
  *
  */
 /* $PostgreSQL$ */
diff --git a/contrib/pgcrypto/md5.c b/contrib/pgcrypto/md5.c
index acb094e..43c99a2 100644
--- a/contrib/pgcrypto/md5.c
+++ b/contrib/pgcrypto/md5.c
@@ -1,5 +1,5 @@
 /*	$PostgreSQL$	*/
-/*	   $KAME$	   */
+/*	   $KAME: md5.c,v 1.3 2000/02/22 14:01:17 itojun Exp $	   */
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
diff --git a/contrib/pgcrypto/md5.h b/contrib/pgcrypto/md5.h
index 4817951..0d0cb34 100644
--- a/contrib/pgcrypto/md5.h
+++ b/contrib/pgcrypto/md5.h
@@ -1,5 +1,5 @@
 /*	$PostgreSQL$	*/
-/*	   $KAME$	   */
+/*	   $KAME: md5.h,v 1.3 2000/02/22 14:01:18 itojun Exp $	   */
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
diff --git a/contrib/pgcrypto/misc.c b/contrib/pgcrypto/misc.c
index 734ad9f..5c803c0 100644
--- a/contrib/pgcrypto/misc.c
+++ b/contrib/pgcrypto/misc.c
@@ -26,7 +26,7 @@
  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD$
+ * $FreeBSD: src/lib/libcrypt/misc.c,v 1.1 1999/09/20 12:45:49 markm Exp $
  *
  */
 
diff --git a/contrib/pgcrypto/rijndael.c b/contrib/pgcrypto/rijndael.c
index 72611a7..8b2b99f 100644
--- a/contrib/pgcrypto/rijndael.c
+++ b/contrib/pgcrypto/rijndael.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD$ */
+/*	$OpenBSD: rijndael.c,v 1.6 2000/12/09 18:51:34 markus Exp $ */
 
 /* This is an independent implementation of the encryption algorithm:	*/
 /*																		*/
diff --git a/contrib/pgcrypto/rijndael.h b/contrib/pgcrypto/rijndael.h
index aab1f51..41c1a2a 100644
--- a/contrib/pgcrypto/rijndael.h
+++ b/contrib/pgcrypto/rijndael.h
@@ -1,4 +1,4 @@
-/*	$OpenBSD$ */
+/*	$OpenBSD: rijndael.h,v 1.3 2001/05/09 23:01:32 markus Exp $ */
 
 /* This is an independent implementation of the encryption algorithm:	*/
 /*																		*/
diff --git a/contrib/pgcrypto/sha1.c b/contrib/pgcrypto/sha1.c
index a3195be..8a30cce 100644
--- a/contrib/pgcrypto/sha1.c
+++ b/contrib/pgcrypto/sha1.c
@@ -1,5 +1,5 @@
 /*	$PostgreSQL$ */
-/*	   $KAME$    */
+/*	   $KAME: sha1.c,v 1.3 2000/02/22 14:01:18 itojun Exp $    */
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
diff --git a/contrib/pgcrypto/sha1.h b/contrib/pgcrypto/sha1.h
index 1a1d664..a08b294 100644
--- a/contrib/pgcrypto/sha1.h
+++ b/contrib/pgcrypto/sha1.h
@@ -1,5 +1,5 @@
 /*	$PostgreSQL$ */
-/*	   $KAME$    */
+/*	   $KAME: sha1.h,v 1.4 2000/02/22 14:01:18 itojun Exp $    */
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
diff --git a/contrib/reindexdb/reindexdb b/contrib/reindexdb/reindexdb
index 7db6a26..2b2aeb9 100644
--- a/contrib/reindexdb/reindexdb
+++ b/contrib/reindexdb/reindexdb
@@ -1,6 +1,6 @@
 #!/bin/sh
 # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- #
-# Package : reindexdb                 Version : $Revision: 1.5 $
+# Package : reindexdb                 Version : $Revision$
 # Date    : 05/08/2002                Author  : Shaun Thomas
 # Req     : psql, sh, perl, sed         Type  : Utility
 #
diff --git a/contrib/tsearch2/docs/tsearch-V2-intro.html b/contrib/tsearch2/docs/tsearch-V2-intro.html
index 9718589..726f68d 100644
--- a/contrib/tsearch2/docs/tsearch-V2-intro.html
+++ b/contrib/tsearch2/docs/tsearch-V2-intro.html
@@ -188,6 +188,7 @@ pg_ts_dict, pg_ts_parser, pg_ts_cfg, pg_ts_cfgmap are added.</p>
          public | pg_ts_parser | table | kopciuch
         (4 rows)
 </pre>
+<p>You may need to grant permissions to use on pg_ts_dict, pg_ts_parser, pg_ts_cfg, pg_ts_cfgmap tables to let non-superuser works with tsearch2. GRANT SELECT should be enough for search-only access. <p>
 <h3>TYPES AND FUNCTIONS PROVIDED BY TSEARCH2</h3>
 <p>The first thing we can do is try out some of the types that are
 provided for us. Lets look at the tsvector type provided for
diff --git a/contrib/tsearch2/gendict/sql.IN b/contrib/tsearch2/gendict/sql.IN
index ff0d842..044230b 100644
--- a/contrib/tsearch2/gendict/sql.IN
+++ b/contrib/tsearch2/gendict/sql.IN
@@ -1,7 +1,7 @@
 SET search_path = public;
 BEGIN;
 
-HASINIT create function dinit_CFG_MODNAME(text)
+HASINIT create function dinit_CFG_MODNAME(internal)
 HASINIT         returns internal
 HASINIT         as 'MODULE_PATHNAME'
 HASINIT         language 'C';
diff --git a/contrib/tsearch2/tsearch.sql.in b/contrib/tsearch2/tsearch.sql.in
index 35f96cd..b51b049 100644
--- a/contrib/tsearch2/tsearch.sql.in
+++ b/contrib/tsearch2/tsearch.sql.in
@@ -44,7 +44,7 @@ CREATE FUNCTION set_curdict(text)
 	with (isstrict);
 
 --built-in dictionaries
-CREATE FUNCTION dex_init(text)
+CREATE FUNCTION dex_init(internal)
 	returns internal
 	as 'MODULE_PATHNAME' 
 	language 'C';
@@ -57,13 +57,13 @@ CREATE FUNCTION dex_lexize(internal,internal,int4)
 
 insert into pg_ts_dict select 
 	'simple', 
-	'dex_init(text)',
+	'dex_init(internal)',
 	null,
 	'dex_lexize(internal,internal,int4)',
 	'Simple example of dictionary.'
 ;
 	 
-CREATE FUNCTION snb_en_init(text)
+CREATE FUNCTION snb_en_init(internal)
 	returns internal
 	as 'MODULE_PATHNAME' 
 	language 'C';
@@ -76,26 +76,26 @@ CREATE FUNCTION snb_lexize(internal,internal,int4)
 
 insert into pg_ts_dict select 
 	'en_stem', 
-	'snb_en_init(text)',
+	'snb_en_init(internal)',
 	'contrib/english.stop',
 	'snb_lexize(internal,internal,int4)',
 	'English Stemmer. Snowball.'
 ;
 
-CREATE FUNCTION snb_ru_init(text)
+CREATE FUNCTION snb_ru_init(internal)
 	returns internal
 	as 'MODULE_PATHNAME' 
 	language 'C';
 
 insert into pg_ts_dict select 
 	'ru_stem', 
-	'snb_ru_init(text)',
+	'snb_ru_init(internal)',
 	'contrib/russian.stop',
 	'snb_lexize(internal,internal,int4)',
 	'Russian Stemmer. Snowball.'
 ;
 	 
-CREATE FUNCTION spell_init(text)
+CREATE FUNCTION spell_init(internal)
 	returns internal
 	as 'MODULE_PATHNAME' 
 	language 'C';
@@ -108,13 +108,13 @@ CREATE FUNCTION spell_lexize(internal,internal,int4)
 
 insert into pg_ts_dict select 
 	'ispell_template', 
-	'spell_init(text)',
+	'spell_init(internal)',
 	null,
 	'spell_lexize(internal,internal,int4)',
 	'ISpell interface. Must have .dict and .aff files'
 ;
 
-CREATE FUNCTION syn_init(text)
+CREATE FUNCTION syn_init(internal)
 	returns internal
 	as 'MODULE_PATHNAME' 
 	language 'C';
@@ -127,7 +127,7 @@ CREATE FUNCTION syn_lexize(internal,internal,int4)
 
 insert into pg_ts_dict select 
 	'synonym', 
-	'syn_init(text)',
+	'syn_init(internal)',
 	null,
 	'syn_lexize(internal,internal,int4)',
 	'Example of synonym dictionary'
diff --git a/contrib/tsearch2/untsearch.sql.in b/contrib/tsearch2/untsearch.sql.in
index b1883d5..2a658df 100644
--- a/contrib/tsearch2/untsearch.sql.in
+++ b/contrib/tsearch2/untsearch.sql.in
@@ -34,14 +34,14 @@ DROP FUNCTION lexize(text, text);
 DROP FUNCTION lexize(text);
 DROP FUNCTION set_curdict(int);
 DROP FUNCTION set_curdict(text);
-DROP FUNCTION dex_init(text);
+DROP FUNCTION dex_init(internal);
 DROP FUNCTION dex_lexize(internal,internal,int4);
-DROP FUNCTION snb_en_init(text);
+DROP FUNCTION snb_en_init(internal);
 DROP FUNCTION snb_lexize(internal,internal,int4);
-DROP FUNCTION snb_ru_init(text);
-DROP FUNCTION spell_init(text);
+DROP FUNCTION snb_ru_init(internal);
+DROP FUNCTION spell_init(internal);
 DROP FUNCTION spell_lexize(internal,internal,int4);
-DROP FUNCTION syn_init(text);
+DROP FUNCTION syn_init(internal);
 DROP FUNCTION syn_lexize(internal,internal,int4);
 DROP FUNCTION set_curprs(int);
 DROP FUNCTION set_curprs(text);
diff --git a/contrib/userlock/user_locks.sql.in b/contrib/userlock/user_locks.sql.in
index 62689c5..d5aa355 100644
--- a/contrib/userlock/user_locks.sql.in
+++ b/contrib/userlock/user_locks.sql.in
@@ -15,74 +15,74 @@ SET search_path = public;
 CREATE OR REPLACE FUNCTION user_lock(int4,int4,int4)
 RETURNS int4
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 -- SELECT user_unlock(group,id,mode);
 --
 CREATE OR REPLACE FUNCTION user_unlock(int4,int4,int4)
 RETURNS int4
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 -- SELECT user_write_lock(group,id);
 --
 CREATE OR REPLACE FUNCTION user_write_lock(int4,int4)
 RETURNS int4
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 -- SELECT user_write_unlock(group,id);
 --
 CREATE OR REPLACE FUNCTION user_write_unlock(int4,int4)
 RETURNS int4
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 -- SELECT user_write_lock(group,oid);
 --
 CREATE OR REPLACE FUNCTION user_write_lock(int4,oid)
 RETURNS int4
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 -- SELECT user_write_unlock(group,oid);
 --
 CREATE OR REPLACE FUNCTION user_write_unlock(int4,oid)
 RETURNS int4
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 -- SELECT user_write_lock_oid(oid);
 --
 CREATE OR REPLACE FUNCTION user_write_lock_oid(oid)
 RETURNS int4
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 -- SELECT user_write_unlock_oid(oid);
 --
 CREATE OR REPLACE FUNCTION user_write_unlock_oid(oid)
 RETURNS int4
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 -- SELECT user_write_lock_oid(int4);
 --
 CREATE OR REPLACE FUNCTION user_write_lock_oid(int4)
 RETURNS int4
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 -- SELECT user_write_unlock_oid(int4);
 --
 CREATE OR REPLACE FUNCTION user_write_unlock_oid(int4)
 RETURNS int4
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
 
 -- SELECT user_unlock_all();
 --
 CREATE OR REPLACE FUNCTION user_unlock_all()
 RETURNS int4
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
+LANGUAGE C STRICT;
diff --git a/contrib/vacuumlo/Makefile b/contrib/vacuumlo/Makefile
index fc44bc8..1b5229d 100644
--- a/contrib/vacuumlo/Makefile
+++ b/contrib/vacuumlo/Makefile
@@ -4,7 +4,7 @@ PROGRAM = vacuumlo
 OBJS	= vacuumlo.o
 
 PG_CPPFLAGS = -I$(libpq_srcdir)
-PG_LIBS = $(libpq)
+PG_LIBS = $(libpq_pgport)
 
 DOCS = README.vacuumlo
 
diff --git a/contrib/xml2/README.xml2 b/contrib/xml2/README.xml2
index be129e9..79acbd8 100644
--- a/contrib/xml2/README.xml2
+++ b/contrib/xml2/README.xml2
@@ -14,7 +14,7 @@ Installation
 ------------
 
 The current build process will only work if the files are in
-contrib/xml in a PostgreSQL 7.3 or 7.4 source tree which has been
+contrib/xml2 in a PostgreSQL 7.3 or later source tree which has been
 configured and built (If you alter the subdir value in the Makefile
 you can place it in a different directory in a PostgreSQL tree).
 
diff --git a/doc/FAQ_AIX b/doc/FAQ_AIX
index 9cae9d6..bd94918 100644
--- a/doc/FAQ_AIX
+++ b/doc/FAQ_AIX
@@ -1,5 +1,5 @@
 From: Zeugswetter Andreas <ZeugswetterA@spardat.at>
-$Date: 2005/11/05 01:36:41 $
+$Date$
 
 On AIX 4.3.2 PostgreSQL compiled with the native IBM compiler xlc
 (vac.C 5.0.1) passes all regression tests.  Other versions of OS and
diff --git a/doc/FAQ_CYGWIN b/doc/FAQ_CYGWIN
index 281974c..e28e5db 100644
--- a/doc/FAQ_CYGWIN
+++ b/doc/FAQ_CYGWIN
@@ -1,7 +1,7 @@
 Installing PostgreSQL on Windows Using Cygwin FAQ
 =================================================
 
-$Date: 2004/10/15 16:18:35 $
+$Date$
 
 PostgreSQL requires the appropriate subset of Cygwin DLLs to be
 installed in order that it functions under Windows.
diff --git a/doc/FAQ_HPUX b/doc/FAQ_HPUX
index d04aa92..4304e84 100644
--- a/doc/FAQ_HPUX
+++ b/doc/FAQ_HPUX
@@ -3,7 +3,7 @@ Frequently Asked Questions (FAQ) for PostgreSQL 7.3
 HP-UX Specific
 TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ
 =======================================================
-last updated:           $Date: 2004/09/02 17:46:24 $
+last updated:           $Date$
 
 current maintainer:     Tom Lane (tgl@sss.pgh.pa.us)
 original author:        Tom Lane (tgl@sss.pgh.pa.us)
diff --git a/doc/FAQ_IRIX b/doc/FAQ_IRIX
index ad2fef5..b27b7b0 100644
--- a/doc/FAQ_IRIX
+++ b/doc/FAQ_IRIX
@@ -3,7 +3,7 @@ Frequently Asked Questions (FAQ) for PostgreSQL
 IRIX Specific
 TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ
 =======================================================
-last updated:           $Date: 2002/11/11 20:04:05 $
+last updated:           $Date$
 
 current maintainer:     Luis Amigo (lamigo@atc.unican.es)
 original author:        Luis Amigo (lamigo@atc.unican.es)
diff --git a/doc/FAQ_QNX4 b/doc/FAQ_QNX4
index a7eb083..8d211c6 100644
--- a/doc/FAQ_QNX4
+++ b/doc/FAQ_QNX4
@@ -1,6 +1,6 @@
 PostgreSQL on QNX 4
 --------------------
-last updated:           $Date: 2004/03/23 01:23:47 $
+last updated:           $Date$
 
 current maintainer:     Bernd Tegge (tegge@repas-aeg.de)
 original author:        Andreas Kardos (kardos@repas-aeg.de)
diff --git a/doc/FAQ_SCO b/doc/FAQ_SCO
index 02da450..fa92d6b 100644
--- a/doc/FAQ_SCO
+++ b/doc/FAQ_SCO
@@ -3,7 +3,7 @@ Frequently Asked Questions (FAQ) for PostgreSQL 7.3
 SCO UnixWare and OpenServer specific
 to be read in conjunction with the installation instructions
 ============================================================
-last updated:           $Date: 2004/08/04 21:33:39 $
+last updated:           $Date$
 
 current maintainer:     Billy G. Allie (Bill.Allie@mug.org)
 original author:        Andrew Merrill (andrew@compclass.com)
diff --git a/doc/FAQ_Solaris b/doc/FAQ_Solaris
index 9d6b8f9..129473e 100644
--- a/doc/FAQ_Solaris
+++ b/doc/FAQ_Solaris
@@ -3,7 +3,7 @@ Frequently Asked Questions (FAQ) for PostgreSQL
 Sun Solaris specific
 to be read in conjunction with the installation instructions
 ============================================================
-last updated:        $Date: 2003/10/09 17:11:13 $
+last updated:        $Date$
 
 current maintainer:  Peter Eisentraut <peter_e@gmx.net>
 
diff --git a/doc/FAQ_brazilian b/doc/FAQ_brazilian
index a44ed10..45297e3 100644
--- a/doc/FAQ_brazilian
+++ b/doc/FAQ_brazilian
@@ -603,22 +603,17 @@
    
    Se o postmaster est� sendo executado, inicie o psql em uma janela, e
    ent�o encontre o PID do processo postgres utilizado pelo psql
-   utilizando
-SELECT pg_backend_pid()
-
-   . Utilize um depurador para anexar ao PID do postgres. Voc� pode
-   definir pontos de parada (breakpoints) no depurador e digitar
-   consultas no psql. Se voc� est� depurando a inicializa��o do postgres,
-   voc� pode definir PGOPTIONS="-W n" e ent�o iniciar o psql. Isto
-   retardar� a inicializa��o por n segundos ent�o voc� pode anexar o
-   depurador ao processo, definir quaisquer pontos de parada e continuar
-   pela sequ�ncia de inicializa��o.
-   
-   H� v�rias vari�veis de configura��o do servidor
-log_*
-
-   que habilitam a exibi��o de estat�sticas que podem ser muito �teis
-   para depura��o e medidas de performance.
+   utilizando SELECT pg_backend_pid(). Utilize um depurador para anexar
+   ao PID do postgres. Voc� pode definir pontos de parada (breakpoints)
+   no depurador e digitar consultas no psql. Se voc� est� depurando a
+   inicializa��o do postgres, voc� pode definir PGOPTIONS="-W n" e ent�o
+   iniciar o psql. Isto retardar� a inicializa��o por n segundos ent�o
+   voc� pode anexar o depurador ao processo, definir quaisquer pontos de
+   parada e continuar pela sequ�ncia de inicializa��o.
+   
+   H� v�rias vari�veis de configura��o do servidor log_* que habilitam a
+   exibi��o de estat�sticas que podem ser muito �teis para depura��o e
+   medidas de performance.
    
    Voc� tamb�m pode compilar com perfil para ver que fun��es est�o
    demandando tempo de execu��o. Os arquivo de perfil do n�cleo (backend)
@@ -680,13 +675,13 @@ log_*
     3.11) Que tipo de hardware eu devo usar?
     
    Por causa do hardware de PC ser em sua maioria compat�vel, pessoas
-   tendem a acreditar que todos os hardwares de PC s�o de mesma
-   qualidade. N�o � verdade. ECC RAM, SCSI e placas m�e de qualidade s�o
-   mais confi�veis e t�m uma melhor performance do que hardwares mais
-   baratos. O PostgreSQL executar� em quase todo hardware, mas se a
-   confiabilidade e a performance forem importantes � prudente pesquisar
-   sobre as op��es de hardware. Nossas listas de discuss�o podem ser
-   usadas para discutir op��es de hardware e dilemas.
+   tendem a acreditar que todos os hardwares de PC satilde;o de mesma
+   qualidade. Natilde;o � verdade. ECC RAM, SCSI e placas m�e de
+   qualidade s�o mais confi�veis e t�m uma melhor performance do que
+   hardwares mais baratos. O PostgreSQL executar� em quase todo hardware,
+   mas se a confiabilidade e a performance forem importantes � prudente
+   pesquisar sobre as op��es de hardware. Nossas listas de discuss�o
+   podem ser usadas para discutir op��es de hardware e dilemas.
      _________________________________________________________________
    
                            Perguntas Operacionais
@@ -753,14 +748,12 @@ log_*
     dados?
     
    Estes s�o os limites:
-Tamanho m�ximo de um banco de dados?           ilimitado (existem bancos de dad
-os de 32 TB)
+Tamanho m�ximo de um banco de dados?           ilimitado (existem bancos de dados de 32 TB)
 Tamanho m�ximo de uma tabela?                  32 TB
 Tamanho m�ximo de um registro?                 1.6TB
 Tamanho m�ximo de um campo?                    1 GB
 N�mero m�ximo de registros em uma tabela?      ilimitado
-N�mero m�ximo de colunas em uma tabela?        250-1600 dependendo dos tipos da
-s colunas
+N�mero m�ximo de colunas em uma tabela?        250-1600 dependendo dos tipos das colunas
 N�mero m�ximo de �ndices em uma tabela?        ilimitado
 
    � claro, que eles n�o s�o ilimitados, mas limitados ao espa�o em disco
@@ -795,17 +788,14 @@ N
    O tamanho de uma p�gina de dados no PostgreSQL � 8192 bytes (8 KB), ent�o:
 
    8192 bytes por p�gina
-   ------------------------   =  136 registros por p�gina do banco de dados (ar
-redondado para baixo)
+   ------------------------   =  136 registros por p�gina do banco de dados (arredondado para baixo)
      60 bytes por registro
 
    100000 registros de dados
-   ----------------------------  =  735 p�ginas do banco de dados (arredondado
-para cima)
+   ----------------------------  =  735 p�ginas do banco de dados (arredondadopara cima)
       128 registros por p�gina
 
-735 p�ginas do banco de dados * 8192 bytes por p�gina  =  6,021,120 bytes (6 MB
-)
+735 p�ginas do banco de dados * 8192 bytes por p�gina  =  6,021,120 bytes (6 MB)
 
    �ndices n�o requerem muito espa�o, mas cont�m dados que foram
    indexados, ent�o eles podem ocupar algum espa�o.
@@ -874,10 +864,8 @@ para cima)
      * A localidade padr�o C deve ser utilizada durante o initdb porque
        n�o � poss�vel saber o pr�ximo/maior caracter em uma localidade
        que n�o seja a C. Voc� pode criar um �ndice especial
-text_pattern_ops
-       para tais casos que funcionam somente para indexa��o utilizando
-LIKE
-       .
+       text_pattern_ops para tais casos que funcionam somente para
+       indexa��o utilizando LIKE.
        
    Em vers�es anteriores a 8.0, �ndices frequentemente n�o podiam ser
    usados a menos que os tipos de dados correspodessem aos tipos da
@@ -948,14 +936,10 @@ LIKE
     
 Tipo            Nome Interno    Notas
 --------------------------------------------------
-VARCHAR(n)      varchar         tamanho especifica o comprimento m�ximo, sem pr
-eenchimento
-CHAR(n)         bpchar          preenchimento em branco para comprimento fixo e
-spec�fico
-TEXT            text            nenhum limite superior espec�fico no compriment
-o
-BYTEA           bytea           vetor de bytes de comprimento vari�vel (null-by
-te safe)
+VARCHAR(n)      varchar         tamanho especifica o comprimento m�ximo, sem preenchimento
+CHAR(n)         bpchar          preenchimento em branco para comprimento fixo espec�fico
+TEXT            text            nenhum limite superior espec�fico no comprimento
+BYTEA           bytea           vetor de bytes de comprimento vari�vel (null-byte safe)
 "char"          char            um caracter
 
    Voc� ver� o nome interno quando examinar o cat�logo do sistema e em
@@ -1063,8 +1047,7 @@ te safe)
    de alguma coisa, ou se voc� quer fazer uma c�pia da tabela, com os
    OIDs, n�o h� raz�o para que voc� n�o possa faz�-la:
         CREATE TABLE nova_tabela(minha_coluna int);
-        SELECT oid as oid_antigo, minha_coluna INTO tabela_tmp FROM tabela_anti
-ga;
+        SELECT oid as oid_antigo, minha_coluna INTO tabela_tmp FROM tabela_antiga;
         COPY tabela_tmp TO '/tmp/pgtable';
         DROP TABLE tabela_tmp;
         COPY nova_tabela WITH OIDS FROM '/tmp/pgtable';
diff --git a/doc/FAQ_czech b/doc/FAQ_czech
index 1fd6627..1a2b33c 100644
--- a/doc/FAQ_czech
+++ b/doc/FAQ_czech
@@ -1,855 +1,823 @@
-�asto kladen� dotazy (FAQ) PostgreSQL
-=====================================
-
-Obecn� ot�zky
-=============
-1.1 Co je PostgreSQL? Jak se vyslovuje?
-1.2 Jak� je licence na PostgreSQL?
-1.3 Na kter�ch Unixex lze spustit PostgreSQL?
-1.4 Kter� ne-unixov� platformy jsou podporovan�?
-1.5 Kde mohu z�skat PostgreSQL?
-1.6 Kde mohu z�skat podporu?
-1.7 Kde je posledn� verze?
-1.8 Jak� je dostupn� dokumentace?
-1.9 Kde najdu seznam zn�m�ch chyb nebo nepodporovan�ch vlastnost�?
-1.10 Jak se mohu nau�it SQL?
-
-1.11 Nem� PostgreSQL probl�my s rokem 2000?
-1.12 Jak se p�ipojit k v�voj��sk�mu t�mu?
-1.13 Kam podat report o chyb�?
-1.14 Jak je na tom PostgreSQL v porovn�n� s jin�mi datab�zemi?
-1.15 Jak lze finan�n� pomoci PostgreSQL?
-
-User client dotazy
-==================
-2.1 Kde naleznu ODBC ovlada�e pro PostgreSQL?
-2.2 Jak� n�stroje lze pou��t pro PostgreSQL a web?
-2.3 Existuje grafick� rozhran� pro PostgreSQL?
-2.4 Kter� programovac� jazyky maj� podporu pro PostgreSQL?
-
-Administrativn� dotazy
-======================
-3.1 Jak nainstalovat PostgreSQL jinam ne� do /usr/local/pgsql?
-3.2 P�i startu postmaster, dostanu chybov� hl�en� Bad System Call nebo
-core dump. Pro�? 3.3 P�i startu postmastera dostanu hl�en� o chyb�
-IpcMemoryCreate. Pro�? 3.4 P�i startu postmastera dostanu hl�en� o
-chyb� IpcSemaphoreCreate. Pro�? 3.5 Jak povolit nebo zak�zat p��stup z
-jin�ch stanic? 3.6 Jak ladit datab�zov� stroj na lep�� v�kon?
-
-3.7 Jak� jsou mo�nosti lad�n�?
-3.8 Pro� dostanu "Sorry, too many clients", kdy� se zkou��m p�ipojit?
-3.9 K �emu slou�� adres�� pgsql_tmp?
-
-3.10 Pro� je po�adov�no dump a obnoven� (load) datab�ze b�hem upgrade
-mezi velk�mi verzemi PostgreSQL?
-
-Provozn� dotazy
-===============
-4.1 ��m se li�� bin�rn� a norm�ln� kurzor?
-4.2 Jak z�skat pouze prvn� ��dek dotazu? N�hodn� ��dek?
-4.3 Jak z�sk�m seznam tabulek nebo jinak jak jej z�sk� psql?
-4.4 Jak odstran�m sloupec tabulky, jak zm�n�m jeho typ?
-4.5 Jak� je maxim�ln� velikost ��dku, tabulky a datab�ze?
-4.6 Kolik diskov�ho prostoru je pot�eba k ulo�en� dat z norm�ln�ho
-textov�ho souboru? 4.7 Jak z�sk�m seznam vytvo�en�ch tabulek, index�,
-datab�z�? 4.8 M�j dotaz je pomal� a nepou��v� vytvo�en� indexy. Pro�?
-4.9 Jak zjist�m, jak optimizer dotazu vyhodnocuje m�j dotaz?
-
-4.10 Co to je R-tree index?
-4.11 Co je Genetic Query Optimizer?
-4.12 Jak prov�st vyhled�v�n� regul�rn�ho v�razu case sensitiv,
-insensitiv? Jak pou��t index pro case insensitive vyhled�v�n�? 4.13 Jak
-v dotazu detekovat, �e polo�ka je NULL? 4.14 Jak� jsou rozd�ly mezi
-r�zn�mi znakov�mi typy? 4.15.1 Jak vytvo�it serial/auto-increment pole?
-4.15.2 Jak z�skat hodnotu SERIAL po vlo�en� ��dku?
-
-4.15.3 Nepovede currval() a nextval() k rozhozen� podm�nek p�i soub�hu s
-jin�mi u�ivateli? 4.15.4 Pro� nen� vygenerovan� ��slo pou�ito p�i
-p�eru�en� transakce? Pro� vznikaj� d�ry v ��slov�n� vlastn�
-sekvenc�/SERIAL sloupce? 4.16 Co to je OID? Co je to TID?
-
-4.17 Jak� je v�znam n�kter�ch v�raz� pou�it�ch v PostgreSQL?
-4.18 Pro� jsem z�skal chybov� hl�en� "ERROR: Memory exhausted in
-AllocSetAlloc()"? 4.19 Jak se dozv�m, kterou verzi PostgreSQL pou��v�m?
-4.20 Pro� operace s velk�mi objekty kon�� "invalid large obj
-descriptor"? 4.21 Jak vytvo�it sloupec obsahuj�c� implicitn� aktu�ln�
-datum? 4.22 Pro� jsou moje vno�en� dotazy pou��vaj�c� IN tak pomal�?
-4.23 Jak prov�st vn�j�� spojen� (outer join)?
-
-4.24 Jak prov�st dotaz nap��� n�kolika datab�zemi?
-4.25 M��e funkce vr�tit v�ce ��dk� nebo sloupc�?
-4.26 Pro� nelze spolehliv� vytv��et a ru�it do�asn� tabulky v PL/pgSQL
-funkc�ch? 4.27 Jak� jsou mo�nosti replikace datab�z�?
-
-4.28 Jak� jsou mo�nosti �ifrov�n� datab�z�?
-
-Roz�i�ov�n� PostgreSQL
-======================
-5.1 Napsal jsem UDF funkci, PostgreSQL v�ak kon�� dump core?
-5.2 Jak mohu p�isp�t n�jak�mi �ikovn�mi datov�mi typy a funkcemi do
-PostgreSQL? 5.3 Jak napsat funkci v C vracej�c� ntici?
-
-5.4 Modifikoval jsem zdrojov� soubory. Tato zm�na nebyla p�i rekompilaci
-vzata v potaz. Pro�?
-------------------------------------------------------------------------
-
-Obecn� ot�zky
-=============
-
-1.1 Co je PostgreSQL? Jak se vyslovuje?
----------------------------------------
-
-PostgreSQL se vyslovuje Post-Gres-Q-L.
-
-PostgreSQL vych�z� z datab�ze POSTGRES - v�zkumn�ho prototypu DBMS nov�
-generace. Z postgresu byl p�evzat siln� datov� model a bohat� soubor
-datov�ch typ� a jeho dotazovac� jazyk PostQuel byl nahrazen roz���enou
-podmno�inou jazyka SQL. PostgreSQL lze pou��vat bez omezen� a jeho
-zdrojov� k�dy jsou voln� k dispozici.
-
-PostgreSQL vyv�j� t�m v�voj��� p�ihl�en�ch do v�voj��sk� konference
-PostgreSQL. Sou�asn�m koordin�torem je Marc G. Fournier. (Odpov�� 1.6. -
-jak se zapojit). Tento t�m je zodpov�dn� za ve�ker� v�voj PostgreSQL.
-
-Autory prvn� verze PostgreSQL 1.01 byli Andrew Yu and Jolly Chen. Do
-portace, testov�n�, lad�n� a roz�i�ov�n� k�du se zapojilo mnoho dal��ch
-v�voj��� . P�vodni k�d Postgresu, ze kter�ho PostgreSQL vych�z�, je
-v�sledkem �sil� mnoha student� a program�tor� pracuj�c�ch pod veden�m
-prof. Michaela Stonebrakera na University of California v Berkley.
-
-P�vodn� n�zev software z Berkley byl Postgres. Po p�id�n� jazyka SQL se
-n�zev zm�nil na Postgres95. Koncem roku 1996 byl RDBMS p�ejmenov�n na
-PostgreSQL.
-
-1.2 Jak� je licence na PostgreSQL?
-----------------------------------
-
-PostgreSQL je p�edm�tem n�sleduj�c�ch autorsk�ch pr�v:
-
-D�l�� copyright (c) 1996-2002, PostgreSQL Global Development Group
-
-D�l�� copyright (c) 1994-6, Regents of the University of California
-
-Ud�luje se opr�vn�n� k u�it�, rozmno�ov�n�, prov�d�n� �prav a
-roz�i�ov�n� tohoto softwaru a dokumentace k n�mu, pro jak�koli ��ely,
-bez licen�n�ho poplatku a bez p�semn� licen�n� smlouvy, za podm�nky, �e
-na v�ech jeho kopi�ch je uvedeno ozn�men� o v��e uveden�ch pr�vech,
-jako� i obsah tohoto a dvou n�sleduj�c�ch odstavc�.
-
-THE UNIVERSITY OF CALIFORNIA ("KALIFORNSK� UNIVERZITA") NEN� V ��DN�M
-P��PAD� ODPOV�DNA ��DN� T�ET� OSOB� ZA P��MOU, NEP��MOU, ZVL��TN�,
-NAHODILOU NEBO V�SLEDNOU �KODU, V�ETN� U�L�HO ZISKU, ZP�SOBENOU U�IT�M
-TOHOTO SOFTWARU A DOKUMENTACE K N�MU, A TO I V P��PAD�, �E THE
-UNIVERSITY OF CALIFORNIA BYLA INFORMOV�NA O MO�NOSTI VZNIKU TAKOV�
-�KODY.
-
-THE UNIVERSITY OF CALIFORNIA ZEJM�NA NEPOSKYTUJE JAK�KOLI Z�RUKY, A TO
-NEJEN Z�RUKY OBCHODOVATELNOSTI A VHODNOSTI TOHOTO V�ROBKU KE SPECIFICK�M
-��EL�M. NͮE UVEDEN� SOFTWARE JE POSKYTNUT "JAK STOJ� A LE��" A THE
-UNIVERSITY OF CALIFORNIA NEN� POVINNA ZAJISTIT JEHO �DR�BU, PODPORU,
-AKTUALIZACI, VYLEP�EN� NEBO MODIFIKACI.
-
-V��e uveden� je BSD licence, b�n� licence otev�en�ho zdroje. Nen� zde
-��dn� omezen� ohledn� u�it� k�du zdroje. Jsme s t�m spokojeni a nem�me v
-�myslu na t�to skute�nosti cokoli m�nit.
-
-1.3 Na kter�ch Unixex lze spustit PostgreSQL?
----------------------------------------------
-
-PostgreSQL b�� na v�ech modern�ch unixov�ch platform�ch. V instala�n�ch
-instrukc�ch naleznete aktu�ln� seznam v�ech platforem na kter�ch byla
-testov�n�m ov��ena funkcionalita PostgreSQL.
-
-1.4 Kter� ne-unixov� platformy jsou podporovan�?
-------------------------------------------------
-
-Klient
-------
-
-Knihovna libpq, psql a n�kter� dal�� moduly byly p�elo�eny pro MS
-Windows. Klienta lze provozovat na MS Windows, ten prost�ednictv�m
-TCP/IP protokolu komunikuje se serverem b��c�m na n�kter� z
-podporovan�ch Unixov�ch platforem. K p�ekladu lze pou��t win32.mak a
-Win32 knihovny libpq a psql. K datab�zi PostgerSQL lze p�istupovat skrze
-rozhran� ODBC.
-
-Server
-------
-
-Server m��e b�t na WindowsNT a Win2k provozov�n pouze s knihovnou
-Cygwin, Cygnus Unix/NT porting library. Na nativn�m portu pro MS Win
-NT/2000/XP se pracuje. Existuj�c� port pro Novell Netware 6 naleznete na
-http://forge.novell.com.
-
-1.5 Kde mohu z�skat PostgreSQL?
--------------------------------
-
-Prim�rn�m anonymn�m ftp serverem pro PostgreSQL je
-ftp://ftp.PostgreSQL.org/pub . Seznam zrcadel naleznete na na�ich
-webov�ch str�nk�ch.
-
-1.6 Kde mohu z�skat podporu?
-----------------------------
-
-Hlavn�m mailov� konference je pgsql-general@PostgreSQL.org. Slou�� k
-diskuz�m ohledn� PostgreSQL. P�ihl�s�te se zasl�n�m mailu obsahuj�c�
-n�sleduj�c� ��dky v t�le dopisu (nikoliv v z�hlav� - subjectu)
-
-subscribe
-end
-
-na adresu mailto:pgsql-general-request@PostgreSQL.org.
-
-M��ete si vy��dat denn� p�ehled (diggest), kter� m� zhruba 30K denn�
-zpr�v.
-
-Konference psql-bugs je ur�ena k zas�l�n� zpr�v o chyb�ch. Pro
-p�ihl�en� po�lete mail se stejn�m obsahem jako v p�edchoz�m p��pad� na
-adresu mailto:pgsql-bugs-request@PostgreSQL.org.
-
-Do v�voj��sk� konference se p�ihl�s�te odesl�n�m dopisu s ji� zmi�ovan�m
-obsahem na mailto:pgsql-hackers-request@PostgreSQL.org.
-
-Seznam dal��ch konferenc� naleznete na str�nk�ch PostgreSQL
-http://www.postgresql.org
-
-1.7 Kde je posledn� verze?
---------------------------
-
-Posledn� verz� je PostgreSQL 7.4.. Pl�nujeme uvolnit velkou verzi
-ka�d�ch �est a� osm m�s�c�.
-
-1.8 Jak� je dostupn� dokumentace?
----------------------------------
-
-R�zn� manu�ly, manu�lov� str�nky a n�kolik mal�ch testovac�ch p��klad�
-jsou sou��sti distribuce. Pod�vejte se do adres��e /doc. Manu�ly jsou
-p��stupn� online na http://www.PostgreSQL.org/docs.
-
-Na adres�ch http://www.PostgreSQL.org/docs/awbook.html a
-http://www.commandprompt.com/ppbook/ naleznezte dv� online knihy o
-PostgreSQL. Seznam dostupn� literatury je na
-http://techdocs.PostgreSQL.org/techdocs/bookreviews.php. Soubor
-technick�ch �l�nk� s tematikou PostgresQL najdete na
-http://techdocs.PostgreSQL.org/.
-
-psql m� u�ite�n� metap��kaz \d slou��c� k zobrazen� informac� o typech,
-oper�torech, funkc�, agrega�n�ch funkc� atd.
-
-V�ce dokumentace naleznete na na�ich webov�ch str�nk�ch.
-
-1.9 Kde najdu seznam zn�m�ch chyb nebo nepodporovan�ch vlastnost�?
-------------------------------------------------------------------
-
-PostgreSQL podporuje roz���enou podmno�inu SQL-92. V na�em TODO [1]
-najdete seznam zn�m�ch chyb, chyb�j�c�ch vlastnost� a seznam vlastnost�,
-kter� budou do syst�mu implementov�ny v budoucnu (v�etn� priorit).
-
-1.10 Jak se mohu nau�it SQL?
-----------------------------
-
-V knize The PostgreSQL book na
-http://www.PostgreSQL.org/docs/awbook.html je vysv�tlen jazyk SQL (vy�la
-�esky). Dal�� dostupnou knihou je http://www.commandprompt.com/ppbook.
-Kvalitn� n�vody naleznete na
-http://www.intermedia.net/support/sql/sqltut.shtm, na
-http://www.intermedia.net/support/sql/sqltut.shtm [2] , a na
-http://sqlcourse.com.
-
-Dal�� je Teach Yourself SQL in 21 days, Second Edition na
-http://members.tripod.com/er4ebus/sql/index.htm.
-
-Mnoho u�ivatel� doporu�uje The Practical SQL Handbook, Bowman, Judith
-S., et al., Addison-Wesley. Jin� preferuj� The Complete Reference SQL,
-Groff et al., McGraw-Hill.
-
-1.11 Nem� PostgreSQL probl�my s rokem 2000?
--------------------------------------------
-
-Nem�, m��eme pracovat s datumy po roce 2000 na�eho letopo�tu i p�ed
-rokem 2000 p�.n.l.
-
-1.12 Jak se p�ipojit k v�voj��sk�mu t�mu?
------------------------------------------
-
-Nejd��ve si st�hn�te nejnov�j�� zdroje a p�e�t�te si v�voj��skou
-dokumentaci na na�em webu nebo v distribuci. Pak se p�ihla�te do
-konferenc� pgsql-hackers a pgsql-patches. Kvalitn� z�platy pos�lejte do
-pgsql-patches.
-
-Pr�vo commit m� v cvs archivu asi t�in�cti lid�. Ka�d� z nich poslal
-mnoho kvalitn�ch z�plat, tak�e tehdej�� commiters m�li jistotu, �e budou
-p�edkl�dat jenom kvalitn� z�platy a mohli jim p�ed�lit v�t�� pr�va.
-
-1.13 Kam podat report o chyb�?
-------------------------------
-
-Nav�tivte na�i PostgreSQL BugTool str�nku na
-http://www.PostgreSQL.org/bugs/bugs.php, kter� obsahuje n�vod a sm�rnice
-jak podat chybov� report.
-
-Ov��te si na na�em ftp serveru ftp://ftp.PostgreSQL.org/pub, zda-li m�te
-nejnov�j�� verzi PostgreSQL a zda-li k n� neexistuj� n�jak� z�platy.
-
-1.14 Jak je na tom PostgreSQL v porovn�n� s jin�mi datab�zemi?
---------------------------------------------------------------
-
-Existuje n�kolik hledisek jak porovn�vat software: vlastnosti, v�kon,
-spolehlivost, podpora a cena.
-
-Vlastnosti
-----------
-
-PostgreSQL m� hodn� spole�n�ch vlastnost� s velk�mi komer�n�mi DBMS,
-nap�. transakce, vno�en� dotazy, spou�t�, pohledy, kontrolu referen�n�
-integrity a sofistikovan� zamyk�n�. Podporuje n�kter� vlastnosti, kter�
-tyto syst�my nemaj�, u�ivatelem definovan� typy, d�di�nost, pravidla,
-MVCC redukuj�c� zamyk�n�.
-
-V�kon
------
-
-V�konnostn� je na tom PostgreSQL podobn� jako dal�� komer�n� ale i open
-source datab�ze, v n��em je rychlej��, jindy pomalej��. V porovn�n� s
-MySQL a podobn�mi datab�zov�mi syst�my je PostgreSQL rychlej�� p�i
-v�ceu�ivatelsk�m p��stupu, slo�it�j��ch dotazech a zat��en� read/write
-dotazy. MySQL je rychlej�� v jednodu���ch dotazech s mal�m po�tem
-u�ivatel�. Nav�c, MySQL nepodporuje mnoh� vlatnosti zm�n�n� v sekci
-vlastnosti. Zapracovali jsme na spolehlivosti a podporovan�ch
-vlastnostech, a v�kon zvy�ujeme v ka�d� verzi. Zaj�mavou str�nku
-porovn�vaj�c� PostgreSQL a MySQL naleznete na
-http://openacs.org/philosophy/why-not-mysql.html. Za v�vojem MySQL nen�
-Open Source komunita, ale komer�n� spole�nost, p�esto�e svoje produkty
-distribuuje jako Open Source.
-
-Spolehlivost
-------------
-
-Jsme si v�domi, �e datab�ze mus� b�t spolehliv�, jinak je nepou�iteln�.
-Sna��me se zve�ej�ovat dob�e otestovan�, stabiln� k�d s minimem chyb.
-Ka�d� verze je v�ce ne� m�s�c v beta testov�n�, a na�e historie verz�
-ukazuje, �e m��eme nab�dnout stabiln�, solidn� verze, kter� jsou
-p�ipraveny pro re�ln� nasazen�. V t�to oblasti jsme srovnateln� s
-dal��mi datab�zemi.
-
-Podpora
--------
-
-Na na�� mailov� konferenci m��ete kontaktovat velkou skupinu v�voj��� a
-u�ivatel�.probl�m�. Nem��eme garantovat opravu, nicm�n� komer�n�
-datab�ze tak� ne v�dy nab�dnou opravu. Podle ohlas� je na�e podpora
-hodnocena l�pe ne� u jin�ch DBMS a to d�ky p��m�mu kontaktu s v�voj��i,
-velkou komunitou u�ivatel�, kvalitn�mi manu�ly a p��stupn�m zdrojov�m
-k�dem. Pro u�ivatele, kte�� vy�aduj� podporu ke konkr�tn�m p��pad�m,
-existuje placen� podpora (FAQ sekce 1.6).
-
-Cena
-----
-
-PosgreSQL lze voln� pou��vat pro nekomer�n� i komer�n� pou�it�. M��ete
-do sv�ch produkt� p�idat n� k�d bez omezen�, respektive v souladu s
-podm�nkami na�� licen�n� smlouvy (v duchu BSD licence).
-
-1.15 Jak lze finan�n� pomoci PostgreSQL?
-----------------------------------------
-
-PosgreSQL m� prvot��dn� infrastrukturu od na�eho za��tku v roce 1996.
-Vd���me za to Marku Fournierovi, kter� zalo�il a spravoval tuto
-infrastrukturu n�kolik let.
-
-Kvalitn� infrastruktura je velice d�le�it� pro ka�d� open source
-projekt. P�edch�z� nedorozum�n�m, kter� velice zdr�uj� pokrok v
-projektu.
-
-Tato infrastruktura nen� lacin�. K jej�mu zaji�t�n� je t�eba st�le
-hradit ur�it� m�s��n� a jednor�zov� ��stky. Pokud m�te Vy nebo Va�e
-spole�nost pen�ze, kter� n�m m��ete darovat, obra�e se na
-http://store.pgsql.com/shopping/ a darujte je.
-
-A�koliv webov� str�nka zmi�uje PostgreSQL, Inc. vklady jsou ur�eny pouze
-k podpo�e projektu PostgreSQL a nepodporuj� ��dnou existuj�c�
-spole�nost. Pokud to vy�adujete, m��ete poslat kontrolu na na�i
-kontaktn� adresu.
-
-Pokud m�te p��klad �sp�n�ho nasazen� PostgreSQL, p�ihla�t� se na n�
-advocacy site na http://advocacy.postgresql.org.
-
-------------------------------------------------------------------------
-
-User client dotazy
-==================
-
-2.1 Kde naleznu ODBC ovlada�e pro PostgreSQL?
----------------------------------------------
-
-Pro PostgreSQL existuj� dva ODBC ovlada�e - PsqlODBC a OpenLink ODBC.
-
-PsqlODBC je ke sta�en� na
-http://gborg.postgresql.org/project/psqlodbc/projdisplay.php.
-
-OpenLink m��ete z�skat na http://www.openlinksw.com. Spolupracuje s
-jejich klientsk�m programov�m vybaven�m a je dostupn� pro v�echny jimi
-podporovan� platformy (Win, Mac, Unix, VMS).
-
-Tento ovlada� je ur�en pro ty, kte�� vy�aduj� podporu komer�n� kvality,
-nicm�n� freeware verze je dostupn� a funk�n�. Dotazy zas�lejte na
-postgres95@openlink.co.uk.
-
-2.2 Jak� n�stroje lze pou��t pro PostgreSQL a web?
---------------------------------------------------
-
-P�kn� �vod do datab�zov�ch technologi� zabezpe�uj�c�ch chod webov�ch
-str�nek najdete na http://www.webreview.com.
-
-Pro tvorbu webu existuje excelentn� rozhran� PHP, kter� naleznete na
-http://www.php.net.
-
-Pro slo�it�j�� p��pady se �asto pou��v� Perl a CGI.pm nebo mod_perl.
-
-2.3 Existuje grafick� rozhran� pro PostgreSQL?
-----------------------------------------------
-
-Pro PostgreSQL existuje n�kolik grafick�ch rozhran�: PgAccess
-(http://www.php.net), PgAdmin (http://www.php.net), RHDB Admin
-(http://sources.redhat.com/rhdb/) a Rekall (
-http://www.thekompany.com/products/rekall/). D�le existuje PHPPgAdmin
-(http://phppgadmin.sourceforge.net/) rozhran� PostgreSQL zalo�en� na web
-technologii.
-
-�pln�j�� seznam najdete na
-http://techdocs.postgresql.org/guides/GUITools.
-
-2.4 Kter� programovac� jazyky maj� podporu pro PostgreSQL?
-----------------------------------------------------------
-
-V�t�ina programovac�ch jazyk� obsahuje rozhran� pro PostgreSQL.
-Pod�vejte se do roz�i�uj�c�ch modul� Va�eho programovac�ho jazyka.
-
-Distribuce PostgreSQL obsahuje tato rozhran�:
-
-    - C (libpq)
-    - Embbedded C (ecpg)
-    - Java (jdbc)
-    - Python (PyGreSQL)
-    - TCL (libpgtcl)
-
-Dal�� rozhran� jsou dostupn� na http://gborg.postgresql.org v sekci
-Drivers/Interfaces.
-
-------------------------------------------------------------------------
-
-Administrativn� dotazy
-======================
-
-3.1 Jak nainstalovat PostgreSQL jinam ne� do /usr/local/pgsql?
---------------------------------------------------------------
-
-Pou�ijte volbu --prefix p�i spu�t�n� configure
-
-3.2 P�i startu postmaster, dostanu chybov� hl�en� Bad System Call nebo core dump. Pro�?
-----------------------------------------------------------------------------------------
-
-D�vody mohou b�t r�zn�, ale nejprve zkontrolujte, zda V� syst�m
-podporuje System V extensions. PostgreSQL vy�aduje v j�d�e podporu
-sd�len� pam�ti a semafor�.
-
-3.3 P�i startu postmastera dostanu hl�en� o chyb� IpcMemoryCreate. Pro�?
--------------------------------------------------------------------------
-
-Bu�to nem�te spr�vn� nakonfigurovanou sd�lenou pam� v j�d�e nebo musite
-zv�t�it jej� velikost. Pot�ebn� velikost je z�visl� na architektu�e a na
-tom, kolik pam�ov�ch buffer� a backend� m�te povoleno pro postmastera.
-Pro v�t�inu syst�m� s p�eddefinovan�m po�tem backend� a pam�ov�ch
-buffer� je minimum zhruba 1MB. V
-http://www.postgresql.org/docs/view.php?version=current&idoc=1&file=kern
-el-resources.html [3] naleznete podrobn�j�� informace o sd�len� pam�ti a
-semaforech.
-
-3.4 P�i startu postmastera dostanu hl�en� o chyb� IpcSemaphoreCreate. Pro�?
-----------------------------------------------------------------------------
-
-Pokud dostane chybovou zpr�vu IpcSemaphoreCreate: semget failed (No
-space left on device), pak va�e j�dro nem� dost voln�ch semafor�.
-PostgreSQL vy�aduje jeden semafor pro ka�d� backend v pozad�. Do�asn�m
-�e�en�m je start postmastera s limitem backend�. Pou�ijte p�ep�na� -N s
-hodnotou men�� ne� 32. �pln�m �e�en�m je zv��en� hodnot SEMMNS a SEMMNI
-jadra.
-
-Nefunk�n� semafory mohou zp�sobit p�d b�hem intenzivn�ch datab�zov�ch
-operac�.
-
-Pokud se tato chyba vyskytuje je�t� n�kde jinde, mo�n� nem�te v�bec
-nakonfigurov�ny semafory ve va�em j�d�e. V PostgreSQL Administrator's
-Guide najdete podrobn�j�� popis po�adavk� na sd�lenou pam�t a semafory.
-
-3.5 Jak povolit nebo zak�zat p��stup z jin�ch stanic?
------------------------------------------------------
-
-P�i v�choz�m nastaven� PostgreSQL odep�e p��stup z jin�ch stanic ne�
-lok�ln� s pou�it�m UDP. Datab�ze se zp��stupn� jin�m stanic�m nastaven�m
-p�ep�na�e -i postmastera a povolen�m stanice a ur�en�m re�imu
-autentifikace v $PGDATA/pg_hba.conf. T�m se povol� TCP/IP spojen�.
-ZASTARAL�
-
-3.6 Jak ladit datab�zov� stroj na lep�� v�kon?
-----------------------------------------------
-
-Ur�it� pomohou indexy. P��kaz EXPLAIN zobraz� zp�sob interpretace Va�eho
-dotazu a pou�it� index�.
-
-P�i v�t�� d�vce INSERT� uva�ujte o n�hrad� p��kazem COPY. Ten je mnohem
-rychlej�� ne�li samotn� INSERT. Ka�d� p��kaz mimo blok BEGIN WORK/COMMIT
-se prov�d� ve vlastn� transakci. Zva�te, zda-li by se nedalo n�kolik
-p��kaz� spojit do jedn� transakce. T�m se sn��� re�ie na transakce. P�ed
-proveden�m rozs�hl�ch zm�n zru�te indexy, kter� po dokon�en� zm�n op�t
-vytvo�te.
-
-M�te n�kolik dal��ch mo�nost�, jak zlep�it v�kon. M��ete zak�zat fsyn()
-p�i startu postmastera p�ep�na�i -o -F. Tyto p�ep�na�e zabr�n� fsync(),
-tj. z�pisu na disk po ka�d� transakci.
-
-M��ete zv��it velikost pam�ov�ch buffer� pou�it�ch backendy tj.
-parametr -B postmasteru. Pokud ale tato hodnota bude p��li� velk�, tak
-mo�n� nespust�te postmastera jeliko� dos�hnete limitu sd�len� pam�ti.
-Ka�d� buffer m� 8K a implicitn� je 64 buffer�.
-
-D�le m��ete pou��t p�ep�na� -S k zv��en� limitu pam�ti pro backendy na
-do�asn� t��d�n�. Hodnota je m�n�na v kilobytech a v�choz� nastaven� je
-512, tj. 512K.
-
-M��ete pou��t p��kaz CLUSTER, kter� uspo��d� fyzicky data v tabulk�ch
-podle indexu. V�ce na manu�lov�ch str�nk�ch p��kazu CLUSTER.
-
-3.7 Jak� jsou mo�nosti lad�n�?
-------------------------------
-
-M�te n�kolik mo�nost� jak se dostat k u�ite�n�m stavov�m informac�m.
-
-Zaprv�, p�i p�ekladu pou�ijte p�ep�na� --enable-cassert, t�m se zapne
-monitorov�n� a n�sledn� zastaven� aplikace, kdy� se proces v backendu
-dostane do neo�ek�van�ho stavu.
-
-Jak postmaster tak postgres m� n�kolik p�ep�na�� umo��uj�c�ch lad�n�.
-Postmaster nastartujte tak, abyste si byli jisti, �e je standartn�
-v�stup a standartn� chybov� v�stup p�esm�rov�n do souboru logu,
-nap��klad:
-
-cd /usr/local/pgsql
-./bin/postmaster > server.log 2>&1 &
-
-T�m se vytvo�� log v adres��i PostgreSQL, Tento soubor obsahuje u�ite�n�
-informace o probl�mech a chyb�ch vyskytl�ch se na serveru. Postmaster m�
-p�ep�na� -d ur�uj�c�, jak podrobn� maj� b�t reportovan� informace, tj.
-debug level. Pozor, p�i velk� hodnot� debug levelu rychle roste velikost
-souboru logu.
-
-Pokud neb�� postmaster, m��ete spustit backend PostgreSQL z p��kazov�
-��dky a napsat sv�j SQL dotaz p��mo v backendu (doporu�eno pouze pro
-lad�n�). Dotaz je v tomto p��pad� ukon�en novou ��dkou, nikoliv
-st�edn�kem. Pokud m�te aplikaci p�elo�enou s lad�c�mi symboly, m��ete
-pou��t debbuger k monitorov�n� procesu. Pokud nen� backend spu�t�n
-postmasterem, pak neb�� ve sv�m obvykl�m prost�ed� a tud�� n�kter�
-probl�my dan� interakc� mezi backendy nemohou b�t nasimulov�ny.
-
-Pokud b�� postmaster, spus�e psql v jednom okn� a pak si zjist�te PID
-procesu postgres pou�it�ho psql. V debuggeru sep�ipojte k postgresql
-PID. Pak nastavte breakpointy v debuggeru a zadejte dotaz v psql. Pokud
-lad�te startup postgresu, pak nastavte PGOPTIONS="-W n" a spus�e psql.
-Tento p�ep�na� zp�sob� pauzu n sekund, tak�e budete m�t �as se p�ipojit
-k procesu, a nastavit breakpointy a pokra�ovat v startup posloupnosti.
-
-Pro lad�n� a m��en� v�konu mohou b�t u�ite�n� p�ep�na�e -s, -A a -t
-programu postgres (backend).
-
-M��ete prov�st p�eklad s profilac�, tak abyste vid�li kolik �asu
-zab�raj� jednotliv� funkce. Soubory s profily backend� jsou ulo�eny v
-adres��i pgsql/data/base/dbname. Profil klienta pak v jeho aktu�ln�m
-adres��i. Korektn� profilace v prost�ed� Linux po�aduje konfiguraci
-syst�mu s parametrem -DLINUX_PROFILE.
-
-3.8 Pro� dostanu "Sorry, too many clients", kdy� se zkou��m p�ipojit?
----------------------------------------------------------------------
-
-Zvy�te limit postmastera na maxim�ln� po�et sou�asn� spu�t�n�ch
-backend�.
-
-V�choz� hodnota je 32 backend�. Tuto hodnotu zv���te zastaven�m a
-op�tovn�m spu�t�n�m postmastera s parametrem -N nebo �pravou
-postgresql.conf.
-
-P�i zv��en� hodnoty -N nad 32 mus�te zv��it hodnotu -B nad v�choz� 64,
--B mus� b�t minim�ln� dvakr�t v�t��, nebo je�t� l�pe v�ce. Pravd�podobn�
-zjist�te, �e pro velk� po�et proces� backendu je nutn� zv��it n�kter�
-parametry j�dra. Jsou to p�edev��m maxim�ln� velikost sd�len� pam�ti
-SHMMAX, maxim�ln� po�et semaf�r� SEMMNS a SEMMNI, maxim�ln� po�et
-proces� NPROC, maxim�ln� po�et proces� u�ivatele MAXUPRC a maxim�ln�
-po�et otev�en�ch soubor� NFILE a NINODE. D�vod pro omezen� maxim�ln�ho
-po�tu backend� je fakt, �e by mohlo doj�t k vy�erp�n� zdroj� Va�eho
-syst�mu.
-
-3.9 K �emu slou�� adres�� pgsql_tmp?
-------------------------------------
-
-Tento adres�� obsahuje do�asn� soubory vytvo�en� exekutorem dotaz�.
-Nap��klad, kdy� je nutn� t��d�n� k zaji�t�n� ORDER BY a t��d�n� m� v�t��
-n�roky na prostor ne� povoluje parametr -S backendu, pak je vytvo�en
-do�asn� soubor k ulo�en� extra �daj�.
-
-Do�asn� soubory jsou obvykle maz�ny automaticky, ale m��e se st�t, �e
-b�hem t��d�n� server spadne. Zastaven� a dal�� start postmastera zajist�
-odstran�n� soubor� s t�chto adres���.
-
-3.10 Pro� je po�adov�no dump a obnoven� (load) datab�ze b�hem upgrade mezi velk�mi verzemi PostgreSQL?
-------------------------------------------------------------------------------------------------------
-
-PostgreSQL se minim�ln� m�n� b�hem mal�ch verz�, tak�e nap�. p�i upgrade
-z 7.2 na 7.2.1 nen� nutn� dump a load datab�ze. Ale velk� verze �asto
-m�n� intern� form�t syst�mov�ch tabulek a datov�ch soubor�. Tyto zm�ny
-jsou natolik rozs�hl�, �e nelze zajistit zp�tnou kompatibilitu pro
-datov� soubory. Dump ulo�� data v obecn�m form�tu, tak�e mohou b�t
-na�tena a pou��v�na v nov�m intern�m form�tu.
-
-------------------------------------------------------------------------
-
-Provozn� dotazy
-===============
-
-4.1 ��m se li�� bin�rn� a norm�ln� kurzor?
-------------------------------------------
-
-Popis najdete v manu�lov� str�nce DECLARE
-
-4.2 Jak z�skat pouze prvn� ��dek dotazu? N�hodn� ��dek?
--------------------------------------------------------
-
-Pod�vejte se do man. str�nky p��kazu FETCH, nebo pou�ijte SELECT ...
-LIMIT ...
-
-Nen� nutn� zpracov�vat cel� dotaz, kdy� pot�ebujete pouze n�kolik
-prvn�ch ��dk�. Pokud existuje index ORDER BY, PostgreSQL je schopen
-p�eru�it zpracov�n� dotazu po z�sk�n� po�adovan�ho po�tu ��dk�.
-
-K z�sk�n� n�hodn�ho ��dku pou�ijte:
-
-SELECT col FROM tab
-  ORDER BY random() LIMIT 1;
-
-4.3 Jak z�sk�m seznam tabulek nebo jinak jak jej z�sk� psql?
-------------------------------------------------------------
-
-Pod�vejte se do zdrojov�ch k�d� psql do souboru
-pgsql/src/bin/psql/describe.c. Ten obsahuje SQL p��kazy, kter� se
-pou��vaj� v psql metap��kazech. D�le m��ete spustit psql s p�ep�na�em
--E, kter� zp�sob� zobrazen� ka�d�ho dotazu, kter� zpracov�n� metap��kazu
-vyvol�.
-
-4.4 Jak odstran�m sloupec tabulky, jak zm�n�m jeho typ?
--------------------------------------------------------
-
-Po��naje verz� 7.3 m��ete pou��t p��kaz ALTER TABLE DROP COLUMN. Ve
-star��ch verz�ch m��ete pou��t n�sleduj�c� postup:
-
-BEGIN;
-LOCK TABLE old_table;
-SELECT ... -- mimo sloupec, kter� chceme odstranit
-  INTO TABLE new_table;
-DROP TABLE old_table;
-ALTER TABLE new_table RENAME TO old_table;
-COMMIT;
-
-Pro zm�nu typu sloupce je t�eba prov�st:
-
-BEGIN;
-ALTER TABLE tab ADD COLUMN new_col new_data_type;
-UPDATE tab SET new_col = CAST(old_col AS new_data_type;
-ALTER TABLE tab DROP COLUMN old_col;
-COMMIT;
-
-Pot� prove�te VACUUM FULL tab - uvoln�te t�m diskov� prostor zabran�
-nyn� ji� neplatn�mi ��dky.
-
-4.5 Jak� je maxim�ln� velikost ��dku, tabulky a datab�ze?
----------------------------------------------------------
-
-PostgreSQL m� tato omezen�:
-
- Maxim�ln� velikost datab�ze:           neomezena (existuj� 32TB db)
-
- Maxim�ln� velikost tabulky:            32 TB
-
- Maxim�ln� velikost ��dky:              1.6 TB
-
- Maxim�ln� velikost polo�ky             1 GB
-
- Maxim�ln� po�et ��dk� v tabulce:       neomezeno
-
- Maxim�ln� po�et sloupc� v tabulce:     250-1600 podle typ�
-
- Maxim�ln� po�et index� na tabulce:     neomezeno
-
-Ve skute�nosti nic nen� neomezeno, limitem b�v� v�dy dostupn� diskov�
-pam� nebo velikost opera�n� pam�ti. Pokud m�te n�kterou z t�chto hodnot
-neobvykle velkou, m��e doj�t ke sn��en� v�konu.
-
-Maxim�ln� velikost tabulky je 32 TB a nevy�aduje podporu velk�ch soubor�
-opera�n�m syst�mem. Velk� tabulky se ukl�daj� do n�kolika 1 GB soubor�
-tak�e limity souborov�ho syst�mu nejsou podstatn�.
-
-Maxim�ln� velikost tabulky a maxim�ln� po�et sloupc� m��eme
-ze�ty�n�sobit nastaven�m velikosti bloku na 32K.
-
-4.6 Kolik diskov�ho prostoru je pot�eba k ulo�en� dat z norm�ln�ho textov�ho souboru?
--------------------------------------------------------------------------------------
-
-PostgreSQL vy�aduje a� p�tin�sobek diskov�ho prostoru k ulo�en� dat z
-textov�ho souboru.
-
-Nap��klad, uva�ujme soubor se 100 tis�ci ��dky obsahuj�c� na ka�d� ��dce
-cel� ��slo a textov� popis. Text je v pr�m�ru dvacet byt� dlouh�.
-Textov� soubor bude 2.8 MB dlouh�. Velikost datab�ze obsahuj�c�
-odpov�daj�c� data bude zhruba 6.4 MB.
-
- 36 byt�: hlavi�ka ��dku (p�ibli�n�)
- 24 byt�: jedna celo��seln� polo�ka a jedna textov�
-  4 byty: ukazatel na str�nku k ntici
-------------------------------------------------------
- 64 byt� na ��dek
-
-Velikost datov� str�nky PostgreSQL je 8KB
-
- 8192 byt� na str�nce
----------------------- = 128 ��dek na str�nku
-  64 byt� za ��dek
-
-100000 ��dek
--------------------- = 782 str�nek (zaokrouhleno nahoru)
-128 ��dek na str�nce
-
-782 * 8192 = 6, 406, 144 byt� (6.4 MB)
-
-Indexy nemaj� tak velkou re�ii, ale mohou b�t tak� velk�, proto�e
-obsahuj� indexovan� data.
-
-Hodnoty NULL jsou ulo�eny v bitmap�ch, tak�e spot�ebuj� jen velmi m�lo
-diskov�ho prostoru.
-
-4.7 Jak z�sk�m seznam vytvo�en�ch tabulek, index�, datab�z�?
-------------------------------------------------------------
-
-psql m� sadu metap��kaz� k zobrazen� t�chto informac�. Jejich seznam
-z�sk�te p��kazem \?. D�le se m��ete pod�vat na obsah syst�mov�ch tabulek
-za��naj�c�ch pg_. Spu�t�n� psql s parametrem -l provede v�pis n�zv�
-v�ech datab�z�.
-
-Soubor pgsql/src/tutorial/syscat.source obsahuje SELECTy p�istupuj�c� k
-syst�mov�m tabulk�mm.
-
-4.8 M�j dotaz je pomal� a nepou��v� vytvo�en� indexy. Pro�?
------------------------------------------------------------
-
-Ka�d� dotaz nemus� nutn� pou��t existuj�c� indexy. Index se pou�ije
-tehdy, kdy� je tabulka v�t�� ne� ur�it� minim�ln� velikost, a dotaz
-vyb�r� pouze procentu�ln� malou ��st ��dk� tabulky. To proto, �e n�hodn�
-p��stup k disku dan� �ten�m indexu m��e b�t pomalej�� ne� line�rn� �ten�
-tabulky nebo sekven�n� �ten�,
-
-PostgreSQL rozhoduje o pou�it� index� na z�klad� statistiky p��stup� k
-tabulce. Tyto statistiky se shroma��uj� p��kazy VACUUM ANALYZE nebo
-ANALYZE. D�ky statistik�m m� optimizer informaci o po�tu ��dek v tabulce
-a m��e l�pe rozhodnout o pou�it� index�. Statistiky se uplatn� p�i
-ur�en� optim�ln�ho po�ad� a metody spojen� tabulek. Statistiky by se
-m�li aktualizovat opakovan�, tak jak se m�n� obsah tabulek.
-
-Indexy nejsou oby�ejn� pou�ity pro set��d�n� nebo spojen� tabulek.
-Sekven�n� zpracov�n� n�sledovan� explicitn�m t��d�n�m je oby�ejn�
-rychlej�� ne� indexn� �ten� na velk� tabulce.
-
-Jinak je tomu v p��pad� pou�it� LIMIT a ORDER BY, p�i kter�m se v�t�inou
-index pou�ije, v�sledkem je pouze mal� ��st tabulky. Funkce MAX() a
-MIN() nepou��vaj� indexy, ale je mo�n� tut� hodnotu z�skat
-
-SELECT col FROM tab
-  ORDER BY col [ DESC ] LIMIT 1;
-
-Pokud si mysl�te, �e optimizer myln� zvolil sekven�n� prohled�v�n�
-tabulky, pou�ijte p��kaz SET enable_seqscan TO 'off' a zkuste zda je
-indexn� prohled�v�n� rychlej��.
-
-P�i vyhled�v�n� na z�klad� vzoru jako je nap�. oper�tor LIKE nebo ~ se
-indexy pou��j� pouze za ur�it�ch skute�nost�:
-
-    - za��tek hledan�ho vzoru mus� b�t ukotven k za��tku, tj.
-
-        * vzor LIKE nesm� za��nat %
-        * regul�rn� v�raz mus� za��nat ^
-
-    - vzor nesm� za��nat intervalem, nap�. [a-e]
-
-    - vyhled�van�, kter� nen� Case sensitiv nepou��v� indexy.
-    M��ete ale pou��t funkcion�ln� indexy, kter� jsou pos�ny v sekci
-    4.12
-    - p�i inicializaci datab�ze (initdb) mus� b�t pou�ito C locale
-    (pozn. p�ekladatele - tud�� v na�ich podm�nk�ch nepou�iteln�,
-    nepracovalo by �esk� t��d�n�).
-
-4.9 Jak zjist�m, jak optimizer dotazu vyhodnocuje m�j dotaz?
-------------------------------------------------------------
-
-Pod�vejte se do manu�lov� str�nky p��kazu EXPLAIN.
-
-4.10 Co to je R-tree index?
----------------------------
-
-R-tree index se pou��v� pro indexov�n� prostorov�ch dat. Hash index
-nem��e obslou�it prohled�v�n� oblast�. B-tree index m��e ��dit vyhled�n�
-oblast� v jedn� dimenzi. R-tree index m��e podporovat hled�n� v
-multidimenzion�ln�ch datech. Pou�ijeme-li nap��klad R-tree index na
-atributy typu point, pak syst�m m��e efektivn� odpov�d�t na dotaz -
-vyber v�echny body uvnit� obd�ln�k�.
-
-P�vodn� n�vrh R-tree je Guttman, A. "R-trees: A Dynamic Index Structure
-for Spatial Searching." Proceedings of the 1984 ACM SIGMOD Int'l Conf on
-Mgmt of Data, 45-57
-
-Tyto materi�ly naleznete v Stonebraker's "Readings in Database Systems".
-
-Vestav�n� R-tree m��e slou�it k indexaci polygon� a oblast�. Teoreticky
-m��eme R-tree pou��t i pro v�ce dimenz� (jin� ne� 3D). Ve skute�nosti
-ale takov� roz���en� R-tree vy�aduje trochu pr�ce a ve sou�astnosti
-chyb� dokumentace jak na to.
-
-4.11 Co je Genetic Query Optimizer?
------------------------------------
-
-GEQO modul urychluje optimalizaci dotaz� p�i spojov�n� mno�stv� tabulek
-metodou Genetick�ch algoritm� (GA). To umo��uje z�skat velk�ho mno�stv�
-variant spojen� p�i ne�pln�m prohled�v�n�m.
-
-4.12 Jak prov�st vyhled�v�n� regul�rn�ho v�razu case sensitiv,
-insensitiv? Jak pou��t index pro case insensitive vyhled�v�n�?
-
-Oper�tor ~ slou�� k porov�n� s regul�rn�m v�razem, jeho modifikace *~
-p�edstavuje case insensitive vyhled�v�n�. Jedn� se o obdobu LIKE a
-ILIKE.
-
-Pro vyhled�v�n� bez ohledu na velk� mal� p�smena pou�ijeme
-
-SELECT * FROM tab
-  WHERE lower(col) = 'abc';
-
-V tomto p��pad� se nepou�ije standardn� index. Nicm�n�, pou�ije se
-funkcion�ln� index, pokud jej vytvo��te
-
-CREATE INDEX tabindex ON tab (lower(col));
-
-4.13 Jak v dotazu detekovat, �e polo�ka je NULL?
-------------------------------------------------
-
-Ur��te pomoc� IS NULL nebo IS NOT NULL
-
-4.14 Jak� jsou rozd�ly mezi r�zn�mi znakov�mi typy?
----------------------------------------------------
 
+                     �asto kladen� dotazy (FAQ) PostgreSQL
+                                       
+   Posledn� aktualizace: St�eda 23. �ervna 21:10:00 EST 2004
+   
+   Sou�asn� spr�vce: Bruce Momjian (pgman@candle.pha.pa.us)
+   
+   P�elo�il: Pavel St�hule (stehule@kix.fsv.cvut.cz)
+   
+   Aktu�ln� verzi tohoto dokumentu naleznete na adrese:
+   http://www.PostgreSQL.org/docs/faqs/FAQ.html. �esk� p�eklad na adrese:
+   http://www.PostgreSQL.org/docs/faqs/FAQ_czech.html.
+   
+   Odpov�di na dotazy relevantn� ke konkr�tn�m platform�m lze nal�zt na
+   adrese: http://www.PostgreSQL.org/docs/index.html.
+     _________________________________________________________________
+   
+                               Obecn� ot�zky
+                                      
+   1.1) Co je PostgreSQL? Jak se vyslovuje?
+   1.2) Jak� je licence na PostgreSQL?
+   1.3) Na kter�ch Unixex lze spustit PostgreSQL?
+   1.4) Kter� ne-unixov� platformy jsou podporovan�?
+   1.5) Kde mohu z�skat PostgreSQL?
+   1.6) Kde mohu z�skat podporu?
+   1.7) Kde je posledn� verze?
+   1.8) Jak� je dostupn� dokumentace?
+   1.9) Kde najdu seznam zn�m�ch chyb nebo nepodporovan�ch vlastnost�?
+   1.10) Jak se mohu nau�it SQL?
+   1.11) Nem� PostgreSQL probl�my s rokem 2000?
+   1.12) Jak se p�ipojit k v�voj��sk�mu t�mu?
+   1.13) Kam podat report o chyb�?
+   1.14) Jak je na tom PostgreSQL v porovn�n� s jin�mi datab�zemi?
+   1.15) Jak lze finan�n� pomoci PostgreSQL?
+   
+                             User client dotazy
+                                      
+   2.1) Kde naleznu ODBC ovlada�e pro PostgreSQL?
+   2.2) Jak� n�stroje lze pou��t pro PostgreSQL a web?
+   2.3) Existuje grafick� rozhran� pro PostgreSQL?
+   2.4) Kter� programovac� jazyky maj� podporu pro PostgreSQL?
+   
+                           Administrativn� dotazy
+                                      
+   3.1) Jak nainstalovat PostgreSQL jinam ne� do /usr/local/pgsql?
+   3.2) P�i startu postmaster, dostanu chybov� hl�en� Bad System Call
+   nebo core dump. Pro�?
+   3.3) P�i startu postmastera dostanu hl�en� o chyb� IpcMemoryCreate.
+   Pro�?
+   3.4) P�i startu postmastera dostanu hl�en� o chyb�
+   IpcSemaphoreCreate. Pro�?
+   3.5) Jak povolit nebo zak�zat p��stup z jin�ch stanic?
+   3.6) Jak ladit datab�zov� stroj na lep�� v�kon?
+   3.7) Jak� jsou mo�nosti lad�n�?
+   3.8) Pro� dostanu "Sorry, too many clients", kdy� se zkou��m p�ipojit?
+   3.9) K �emu slou�� adres�� pgsql_tmp?
+   3.10) Pro� je po�adov�no dump a obnoven� (load) datab�ze b�hem upgrade
+   mezi velk�mi verzemi PostgreSQL?
+   
+                              Provozn� dotazy
+                                      
+   4.1) ��m se li�� bin�rn� a norm�ln� kurzor?
+   4.2) Jak z�skat pouze prvn� ��dek dotazu? N�hodn� ��dek?
+   4.3) Jak z�sk�m seznam tabulek nebo jinak jak jej z�sk� psql?
+   4.4) Jak odstran�m sloupec tabulky, jak zm�n�m jeho typ?
+   4.5) Jak� je maxim�ln� velikost ��dku, tabulky a datab�ze?
+   4.6) Kolik diskov�ho prostoru je pot�eba k ulo�en� dat z norm�ln�ho
+   textov�ho souboru?
+   4.7) Jak z�sk�m seznam vytvo�en�ch tabulek, index�, datab�z�?
+   4.8) M�j dotaz je pomal� a nepou��v� vytvo�en� indexy. Pro�?
+   4.9) Jak zjist�m, jak optimizer dotazu vyhodnocuje m�j dotaz?
+   4.10) Co to je R-tree index?
+   4.11) Co je Genetic Query Optimizer?
+   4.12) Jak prov�st vyhled�v�n� regul�rn�ho v�razu case sensitiv,
+   insensitiv? Jak pou��t index pro case insensitive vyhled�v�n�?
+   4.13) Jak v dotazu detekovat, �e polo�ka je NULL?
+   4.14) Jak� jsou rozd�ly mezi r�zn�mi znakov�mi typy?
+   4.15.1) Jak vytvo�it serial/auto-increment pole?
+   4.15.2) Jak z�skat hodnotu SERIAL po vlo�en� ��dku?
+   4.15.3) Nepovede currval() a nextval() k rozhozen� podm�nek p�i
+   soub�hu s jin�mi u�ivateli?
+   4.15.4) Pro� nen� vygenerovan� ��slo pou�ito p�i p�eru�en� transakce?
+   Pro� vznikaj� d�ry v ��slov�n� vlastn� sekvenc�/SERIAL sloupce?
+   4.16) Co to je OID? Co je to TID?
+   4.17) Jak� je v�znam n�kter�ch v�raz� pou�it�ch v PostgreSQL?
+   4.18) Pro� jsem z�skal chybov� hl�en� "ERROR: Memory exhausted in
+   AllocSetAlloc()"?
+   4.19) Jak se dozv�m, kterou verzi PostgreSQL pou��v�m?
+   4.20) Pro� operace s velk�mi objekty kon�� "invalid large obj
+   descriptor"?
+   4.21) Jak vytvo�it sloupec obsahuj�c� implicitn� aktu�ln� datum?
+   4.22) Pro� jsou moje vno�en� dotazy pou��vaj�c� IN tak pomal�?
+   4.23) Jak prov�st vn�j�� spojen� (outer join)?
+   4.24) Jak prov�st dotaz nap��� n�kolika datab�zemi?
+   4.25) M��e funkce vr�tit v�ce ��dk� nebo sloupc�?
+   4.26) Pro� nelze spolehliv� vytv��et a ru�it do�asn� tabulky v
+   PL/pgSQL funkc�ch?
+   4.27) Jak� jsou mo�nosti replikace datab�z�?
+   4.28) Jak� jsou mo�nosti �ifrov�n� datab�z�?
+   
+                           Roz�i�ov�n� PostgreSQL
+                                      
+   5.1) Napsal jsem UDF funkci, PostgreSQL v�ak kon�� dump core?
+   5.2) Jak mohu p�isp�t n�jak�mi �ikovn�mi datov�mi typy a funkcemi do
+   PostgreSQL?
+   5.3) Jak napsat funkci v C vracej�c� ntici?
+   5.4) Modifikoval jsem zdrojov� soubory. Tato zm�na nebyla p�i
+   rekompilaci vzata v potaz. Pro�?
+     _________________________________________________________________
+   
+                               Obecn� ot�zky
+                                      
+    1.1) Co je PostgreSQL? Jak se vyslovuje?
+    
+   PostgreSQL se vyslovuje Post-Gres-Q-L. Zvukov� z�znam je dostupn� na
+   adrese .
+   
+   PostgreSQL vych�z� z datab�ze POSTGRES (a st�le je n�kdy ozna�ov�n
+   zjednodu�en� jako Postgres) - v�zkumn�ho prototypu DBMS nov� generace.
+   Z postgresu byl p�evzat siln� datov� model a bohat� soubor datov�ch
+   typ� a jeho dotazovac� jazyk PostQuel byl nahrazen roz���enou
+   podmno�inou jazyka SQL. PostgreSQL lze pou��vat bez omezen� a jeho
+   zdrojov� k�dy jsou voln� k dispozici.
+   
+   PostgreSQL vyv�j� t�m v�voj��� p�ihl�en�ch do v�voj��sk� konference
+   PostgreSQL. Sou�asn�m koordin�torem je Marc G. Fournier
+   (scrappy@PostgreSQL.org). (viz 1.6 - jak se zapojit). Tento t�m je
+   zodpov�dn� za ve�ker� v�voj PostgreSQL. Jedn� se o ve�ejn� projekt,
+   kter� nen� ��zen ��dnou firmou. Pokud se chcete zapojit, p�e�t�te si
+   developer's FAQ na adrese
+   http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html
+   
+   Autory prvn� verze PostgreSQL 1.01 byli Andrew Yu and Jolly Chen. Do
+   portace, testov�n�, lad�n� a roz�i�ov�n� k�du se zapojilo mnoho
+   dal��ch v�voj��� . P�vodni k�d Postgresu, ze kter�ho PostgreSQL
+   vych�z�, je v�sledkem �sil� mnoha student� a program�tor� pracuj�c�ch
+   pod veden�m prof. Michaela Stonebrakera na University of California v
+   Berkley.
+   
+   P�vodn� n�zev software z Berkley byl Postgres. Po p�id�n� jazyka SQL
+   se n�zev zm�nil na Postgres95. Koncem roku 1996 byl RDBMS p�ejmenov�n
+   na PostgreSQL.
+   
+    1.2) Jak� je licence na PostgreSQL?
+    
+   PostgreSQL je p�edm�tem n�sleduj�c�ch autorsk�ch pr�v:
+   
+   D�l�� Copyright (c) 1996-2005, PostgreSQL Global Development Group
+   D�l�� Copyright (c) 1994-6, Regents of the University of California
+   
+   Ud�luje se opr�vn�n� k u�it�, rozmno�ov�n�, prov�d�n� �prav a
+   roz�i�ov�n� tohoto softwaru a dokumentace k n�mu, pro jak�koli ��ely,
+   bez licen�n�ho poplatku a bez p�semn� licen�n� smlouvy, za podm�nky,
+   �e na v�ech jeho kopi�ch je uvedeno ozn�men� o v��e uveden�ch pr�vech,
+   jako� i obsah tohoto a dvou n�sleduj�c�ch odstavc�.
+   
+   THE UNIVERSITY OF CALIFORNIA ("KALIFORNSK� UNIVERZITA") NEN� V ��DN�M
+   P��PAD� ODPOV�DNA ��DN� T�ET� OSOB� ZA P��MOU, NEP��MOU, ZVL��TN�,
+   NAHODILOU NEBO V�SLEDNOU �KODU, V�ETN� U�L�HO ZISKU, ZP�SOBENOU U�IT�M
+   TOHOTO SOFTWARU A DOKUMENTACE K N�MU, A TO I V P��PAD�, �E THE
+   UNIVERSITY OF CALIFORNIA BYLA INFORMOV�NA O MO�NOSTI VZNIKU TAKOV�
+   �KODY.
+   
+   HE UNIVERSITY OF CALIFORNIA ZEJM�NA NEPOSKYTUJE JAK�KOLI Z�RUKY, A TO
+   NEJEN Z�RUKY OBCHODOVATELNOSTI A VHODNOSTI TOHOTO V�ROBKU KE
+   SPECIFICK�M ��EL�M. NͮE UVEDEN� SOFTWARE JE POSKYTNUT "JAK STOJ� A
+   LE��" A THE UNIVERSITY OF CALIFORNIA NEN� POVINNA ZAJISTIT JEHO
+   �DR�BU, PODPORU, AKTUALIZACI, VYLEP�EN� NEBO MODIFIKACI.
+   
+   V��e uveden� je BSD licence, b�n� licence otev�en�ho zdroje. Nen� zde
+   ��dn� omezen� ohledn� u�it� k�du zdroje. Jsme s t�m spokojeni a nem�me
+   v �myslu na t�to skute�nosti cokoli m�nit.
+   
+    1.3) Na kter�ch Unixex lze spustit PostgreSQL?
+    
+   PostgreSQL b�� na v�ech modern�ch unixov�ch platform�ch. V
+   instala�n�ch instrukc�ch naleznete aktu�ln� seznam v�ech platforem na
+   kter�ch byla testov�n�m ov��ena funkcionalita PostgreSQL.
+   
+    1.4) Kter� ne-unixov� platformy jsou podporovan�?
+    
+   Klient
+   
+   Knihovna libpq, psql a n�kter� dal�� moduly byly p�elo�eny pro MS
+   Windows. Klienta lze provozovat na MS Windows, ten prost�ednictv�m
+   TCP/IP protokolu komunikuje se serverem b��c�m na n�kter� z
+   podporovan�ch Unixov�ch platforem. K p�ekladu lze pou��t win32.mak a
+   Win32 knihovny libpq a psql. K datab�zi PostgerSQL lze p�istupovat
+   skrze rozhran� ODBC.
+   
+   Server
+   
+   Server m��e b�t na WindowsNT a Win2k provozov�n pouze s knihovnou
+   Cygwin, Cygnus Unix/NT porting library. V�ce pgsql/doc/FAQ_MSWIN v
+   distribuci nebo MS Windows FAQ na adrese
+   http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN.
+   
+   Na nativn�m portu pro MS Win NT/2000/XP se pracuje. Dal�� informace o
+   aktu�ln�m stavu PostgreSQL pro Windows naleznet na adrese
+   http://techdocs.postgresql.org/guides/Windows a
+   http://momjian.postgresql.org/main/writings/pgsql/win32.html.
+   
+   Existuj�c� port pro Novell Netware 6 naleznete na
+   http://forge.novell.com.
+   
+    1.5) Kde mohu z�skat PostgreSQL?
+    
+   Prim�rn�m anonymn�m ftp serverem pro PostgreSQL je
+   ftp://ftp.PostgreSQL.org/pub. Seznam zrcadel naleznete na na�ich
+   webov�ch str�nk�ch.
+   
+    1.6) Kde mohu z�skat podporu?
+    
+   Hlavn� mailov� konference je: pgsql-general@PostgreSQL.org. Slou�� k
+   diskuz�m ohledn� PostgreSQL. P�ihl�s�te se zasl�n�m mailu obsahuj�c�
+   n�sleduj�c� ��dky v t�le dopisu (nikoliv v z�hlav� - subjectu):
+    subscribe
+    end
+
+   na adresu pgsql-general-request@PostgreSQL.org.
+   
+   M��ete si vy��dat denn� p�ehled (diggest), kter� m� zhruba 30K denn�
+   zpr�v.
+   
+   Konference psql-bugs je ur�ena k zas�l�n� zpr�v o chyb�ch. Pro
+   p�ihl�en� po�lete mail se stejn�m obsahem jako v p�edchoz�m p��pad�
+   na adresu pgsql-bugs-request@PostgreSQL.org.
+   
+   Do v�voj��sk� konference se p�ihl�s�te odesl�n�m dopisu s ji�
+   zmi�ovan�m obsahem na mailto:pgsql-hackers-request@PostgreSQL.org.
+   
+   Seznam dal��ch konferenc� naleznete na str�nk�ch PostgreSQL:
+   
+     http://www.postgresql.org
+     
+    1.7) Jak� je posledn� verze?
+    
+   Posledn� verze PostgreSQL je 7.4.3. Pl�nujeme uvolnit v�znamnou verzi
+   ka�d�ch �est a� osm m�s�c�.
+   
+    1.8) Jak� je dostupn� dokumentace?
+    
+   R�zn� manu�ly, manu�lov� str�nky a n�kolik mal�ch testovac�ch p��klad�
+   jsou sou��sti distribuce. Pod�vejte se do adres��e /doc. Manu�ly jsou
+   p��stupn� online na http://www.PostgreSQL.org/docs.
+   
+   Na adres�ch http://www.PostgreSQL.org/docs/awbook.html a
+   http://www.commandprompt.com/ppbook/ naleznezte dv� online knihy o
+   PostgreSQL. Seznam dostupn� literatury je na
+   http://techdocs.PostgreSQL.org/techdocs/bookreviews.php. Soubor
+   technick�ch �l�nk� s tematikou PostgresQL najdete na
+   http://techdocs.PostgreSQL.org/.
+   
+   psql m� u�ite�n� metap��kaz \d slou��c� k zobrazen� informac� o
+   typech, oper�torech, funkc�, agrega�n�ch funkc� atd.
+   
+   V�ce dokumentace naleznete na na�ich webov�ch str�nk�ch.
+   
+    1.9) Kde najdu seznam zn�m�ch chyb nebo nepodporovan�ch vlastnost�?
+    
+   PostgreSQL podporuje roz���enou podmno�inu SQL-92. V na�em TODO
+   najdete seznam zn�m�ch chyb, chyb�j�c�ch vlastnost� a seznam
+   vlastnost�, kter� budou do syst�mu implementov�ny v budoucnu (v�etn�
+   priorit).
+   
+    1.10) Jak se mohu nau�it SQL?
+    
+   V knize The PostgreSQL book na
+   http://www.PostgreSQL.org/docs/awbook.html je vysv�tlen jazyk SQL
+   (vy�la �esky). Dal�� dostupnou knihou je
+   http://www.commandprompt.com/ppbook. Kvalitn� n�vody naleznete na
+   http://www.intermedia.net/support/sql/sqltut.shtm, a na
+   http://sqlcourse.com.
+   
+   Dal�� je Teach Yourself SQL in 21 days, Second Edition na
+   http://members.tripod.com/er4ebus/sql/index.htm.
+   
+   Mnoho u�ivatel� doporu�uje The Practical SQL Handbook, Bowman, Judith
+   S., et al., Addison-Wesley. Jin� preferuj� The Complete Reference SQL,
+   Groff et al., McGraw-Hill.
+   
+    1.11) Nem� PostgreSQL probl�my s rokem 2000?
+    
+   Nem�, m��eme pracovat s datumy po roce 2000 na�eho letopo�tu i p�ed
+   rokem 2000 p�.n.l.
+   
+    1.12) Jak se p�ipojit k v�voj��sk�mu t�mu?
+    
+   Nejd��ve si st�hn�te nejnov�j�� zdroje a p�e�t�te si v�voj��skou
+   dokumentaci na na�em webu nebo v distribuci. Pak se p�ihla�te do
+   konferenc� pgsql-hackers a pgsql-patches. Kvalitn� z�platy pos�lejte
+   do pgsql-patches.
+   
+   Pr�vo commit m� v CVS archivu asi t�in�cti lid�. Ka�d� z nich poslal
+   mnoho kvalitn�ch z�plat, tak�e tehdej�� commiters m�li jistotu, �e
+   budou p�edkl�dat jenom kvalitn� z�platy a mohli jim p�ed�lit v�t��
+   pr�va.
+   
+    1.13) Kam podat report o chyb�?
+    
+   Nav�tivte na�i PostgreSQL BugTool str�nku na
+   http://www.PostgreSQL.org/bugs/bugs.php, kter� obsahuje n�vod a
+   sm�rnice jak podat chybov� report.
+   
+   Ov��te si na na�em ftp serveru ftp://ftp.PostgreSQL.org/pub, zda-li
+   m�te nejnov�j�� verzi PostgreSQL a zda-li k n� neexistuj� n�jak�
+   z�platy.
+   
+    1.14) Jak je na tom PostgreSQL v porovn�n� s jin�mi datab�zemi?
+    
+   Existuje n�kolik hledisek jak porovn�vat software: vlastnosti, v�kon,
+   spolehlivost, podpora a cena.
+   
+   Vlastnosti
+          PostgreSQL m� hodn� spole�n�ch vlastnost� s velk�mi komer�n�mi
+          DBMS, nap�. transakce, vno�en� dotazy, spou�t�, pohledy,
+          kontrolu referen�n� integrity a sofistikovan� zamyk�n�.
+          Podporuje n�kter� vlastnosti, kter� tyto syst�my nemaj�,
+          u�ivatelem definovan� typy, d�di�nost, pravidla, MVCC
+          redukuj�c� zamyk�n�.
+          
+   V�kon
+          V�konnostn� je na tom PostgreSQL podobn� jako dal�� komer�n�
+          ale i open source datab�ze, v n��em je rychlej��, jindy
+          pomalej��. V porovn�n� s MySQL a podobn�mi datab�zov�mi syst�my
+          je PostgreSQL rychlej�� p�i v�ceu�ivatelsk�m p��stupu,
+          slo�it�j��ch dotazech a zat��en� read/write dotazy. MySQL je
+          rychlej�� v jednodu���ch dotazech s mal�m po�tem u�ivatel�.
+          Nav�c, MySQL nepodporuje mnoh� vlatnosti zm�n�n� v sekci
+          vlastnosti. Zapracovali jsme na spolehlivosti a podporovan�ch
+          vlastnostech, a v�kon zvy�ujeme v ka�d� verzi. Zaj�mavou
+          str�nku porovn�vaj�c� PostgreSQL a MySQL naleznete na
+          http://openacs.org/philosophy/why-not-mysql.html. Za v�vojem
+          MySQL nen� Open Source komunita, ale komer�n� spole�nost,
+          p�esto�e svoje produkty distribuuje jako Open Source.
+          
+   Spolehlivost
+          Jsme si v�domi, �e datab�ze mus� b�t spolehliv�, jinak je
+          nepou�iteln�. Sna��me se zve�ej�ovat dob�e otestovan�, stabiln�
+          k�d s minimem chyb. Ka�d� verze je v�ce ne� m�s�c v beta
+          testov�n�, a na�e historie verz� ukazuje, �e m��eme nab�dnout
+          stabiln�, solidn� verze, kter� jsou p�ipraveny pro re�ln�
+          nasazen�. V t�to oblasti jsme srovnateln� s dal��mi datab�zemi.
+          
+   Podpora
+          Na na�� mailov� konferenci m��ete kontaktovat velkou skupinu
+          v�voj��� a u�ivatel�.probl�m�. Nem��eme garantovat opravu,
+          nicm�n� komer�n� datab�ze tak� ne v�dy nab�dnou opravu. Podle
+          ohlas� je na�e podpora hodnocena l�pe ne� u jin�ch DBMS a to
+          d�ky p��m�mu kontaktu s v�voj��i, velkou komunitou u�ivatel�,
+          kvalitn�mi manu�ly a p��stupn�m zdrojov�m k�dem. Pro u�ivatele,
+          kte�� vy�aduj� podporu ke konkr�tn�m p��pad�m, existuje placen�
+          podpora (FAQ sekce 1.6).
+          
+   Cena
+          PosgreSQL lze voln� pou��vat pro nekomer�n� i komer�n� pou�it�.
+          M��ete do sv�ch produkt� p�idat n� k�d bez omezen�, respektive
+          v souladu s podm�nkami na�� licen�n� smlouvy (v duchu BSD
+          licence).
+          
+    1.15) Jak lze finan�n� pomoci PostgreSQL?
+    
+   PosgreSQL m� prvot��dn� infrastrukturu od na�eho za��tku v roce 1996.
+   Vd���me za to Marku Fournierovi, kter� zalo�il a spravoval tuto
+   infrastrukturu n�kolik let.
+   
+   Kvalitn� infrastruktura je velice d�le�it� pro ka�d� open source
+   projekt. P�edch�z� nedorozum�n�m, kter� velice zdr�uj� pokrok v
+   projektu.
+   
+   Tato infrastruktura nen� lacin�. K jej�mu zaji�t�n� je t�eba st�le
+   hradit ur�it� m�s��n� a jednor�zov� ��stky. Pokud m�te Vy nebo Va�e
+   spole�nost pen�ze, kter� n�m m��ete darovat, obra�e se na
+   http://store.pgsql.com/shopping/ a darujte je.
+   
+   A�koliv webov� str�nka zmi�uje PostgreSQL, Inc. vklady jsou ur�eny
+   pouze k podpo�e projektu PostgreSQL a nepodporuj� ��dnou existuj�c�
+   spole�nost. Pokud to vy�adujete, m��ete poslat kontrolu na na�i
+   kontaktn� adresu.
+     _________________________________________________________________
+   
+   Pokud m�te p��klad �sp�n�ho nasazen� PostgreSQL, p�ihla�t� se na n�
+   advocacy site na http://advocacy.postgresql.org.
+   
+                             User client dotazy
+                                      
+    2.1) Kde naleznu ODBC ovlada�e pro PostgreSQL?
+    
+   Pro PostgreSQL existuj� dva ODBC ovlada�e - PsqlODBC a OpenLink ODBC.
+   
+   PsqlODBC je ke sta�en� na
+   http://gborg.postgresql.org/project/psqlodbc/projdisplay.php.
+   
+   OpenLink m��ete z�skat na http://www.openlinksw.com. Spolupracuje s
+   jejich klientsk�m programov�m vybaven�m a je dostupn� pro v�echny jimi
+   podporovan� platformy (Win, Mac, Unix, VMS).
+   
+   Tento ovlada� je ur�en pro ty, kte�� vy�aduj� podporu komer�n�
+   kvality, nicm�n� freeware verze je dostupn� a funk�n�. Dotazy
+   zas�lejte na postgres95@openlink.co.uk.
+   
+    2.2) Jak� n�stroje lze pou��t pro PostgreSQL a web?
+    
+   P�kn� �vod do datab�zov�ch technologi� zabezpe�uj�c�ch chod webov�ch
+   str�nek najdete na http://www.webreview.com.
+   
+   Pro tvorbu webu existuje excelentn� rozhran� PHP, kter� naleznete na
+   http://www.php.net.
+   
+   Pro slo�it�j�� p��pady se �asto pou��v� Perl a CGI.pm nebo mod_perl.
+   
+    2.3) Existuje grafick� rozhran� pro PostgreSQL?
+    
+   Pro PostgreSQL existuje n�kolik grafick�ch rozhran�: PgAccess
+   (http://www.php.net), PgAdmin III (http://www.php.net), RHDB Admin
+   (http://sources.redhat.com/rhdb/) a Rekall (
+   http://www.thekompany.com/products/rekall/). D�le je�t� PhpPgAdmin
+   (http://phppgadmin.sourceforge.net/) co� je rozhran� PostgreSQL
+   zalo�en� na web technologii.
+   
+   �pln�j�� seznam najdete na
+   http://techdocs.postgresql.org/guides/GUITools.
+   
+    2.4) Kter� programovac� jazyky maj� podporu pro PostgreSQL?
+    
+   V�t�ina programovac�ch jazyk� obsahuje rozhran� pro PostgreSQL.
+   Pod�vejte se do roz�i�uj�c�ch modul� Va�eho programovac�ho jazyka.
+   
+   Distribuce PostgreSQL obsahuje tato rozhran�:
+     * C (libpq)
+     * Embbedded C (ecpg)
+     * Java (jdbc)
+     * Python (PyGreSQL)
+     * TCL (libpgtcl)
+       
+   Dal�� rozhran� jsou dostupn� na http://gborg.postgresql.org v sekci
+   Drivers/Interfaces.
+     _________________________________________________________________
+   
+                           Administrativn� dotazy
+                                      
+    3.1) Jak nainstalovat PostgreSQL jinam ne� do /usr/local/pgsql?
+    
+   Pou�ijte volbu --prefix p�i spu�t�n� configure.
+   
+    3.2) P�i startu postmaster, dostanu chybov� hl�en� Bad System Call nebo
+    core dump. Pro�?
+    
+   D�vody mohou b�t r�zn�, ale nejprve zkontrolujte, zda V� syst�m
+   podporuje System V extensions. PostgreSQL vy�aduje v j�d�e podporu
+   sd�len� pam�ti a semafor�.
+   
+    3.3) P�i startu postmastera dostanu hl�en� o chyb� IpcMemoryCreate. Pro�?
+    
+   Bu�to nem�te spr�vn� nakonfigurovanou sd�lenou pam� v j�d�e nebo
+   musite zv�t�it jej� velikost. Pot�ebn� velikost je z�visl� na
+   architektu�e a na tom, kolik pam�ov�ch buffer� a backend� m�te
+   povoleno pro postmastera. Pro v�t�inu syst�m� s p�eddefinovan�m po�tem
+   backend� a pam�ov�ch buffer� je minimum zhruba 1MB. V PostgreSQL
+   Administrator's Guide naleznete podrobn�j�� informace o sd�len� pam�ti
+   a semaforech.
+   
+    3.4) P�i startu postmastera dostanu hl�en� o chyb� IpcSemaphoreCreate.
+    Pro�?
+    
+   Pokud dostane chybovou zpr�vu IpcSemaphoreCreate: semget failed (No
+   space left on device), pak va�e j�dro nem� dost voln�ch semafor�.
+   PostgreSQL vy�aduje jeden semafor pro ka�d� backend v pozad�. Do�asn�m
+   �e�en�m je start postmaster s limitem backend�. Pou�ijte p�ep�na� -N s
+   hodnotou men�� ne� 32. �pln�m �e�en�m je zv��en� hodnot SEMMNS a
+   SEMMNI jadra.
+   
+   Nefunk�n� semafory mohou zp�sobit p�d b�hem intenzivn�ch datab�zov�ch
+   operac�.
+   
+   Pokud se tato chyba vyskytuje je�t� n�kde jinde, mo�n� nem�te v�bec
+   nakonfigurov�ny semafory ve va�em j�d�e. V PostgreSQL Administrator's
+   Guide najdete podrobn�j�� popis po�adavk� na sd�lenou pam�t a
+   semafory.
+   
+    3.5) Jak povolit nebo zak�zat p��stup z jin�ch stanic?
+    
+   P�i v�choz�m nastaven� PostgreSQL odep�e p��stup z jin�ch stanic ne�
+   lok�ln� s pou�it�m UDP. P��stup z jin�ch stroj� nen� mo�n� dokud jej
+   nepovol�te nastaven�m tcpip_socket v postgresql.conf a ur�en�m zp�sobu
+   autentifikace v $PGDATA/pg_hba.conf.
+   
+    3.6) Jak ladit datab�zov� stroj na lep�� v�kon?
+    
+   Ur�it� pomohou indexy. P��kaz EXPLAIN ANALYZE V�m umo�n� sledovat jak
+   PostgreSQL interpretuje V� dotaz a kter� indexy pou��v�.
+   
+   P�i v�t�� d�vce INSERT� uva�ujte o n�hrad� p��kazem COPY. Ten je
+   mnohem rychlej�� ne�li samotn� INSERT. Ka�d� p��kaz mimo blok BEGIN
+   WORK/COMMIT se prov�d� ve vlastn� transakci. Zva�te, zda-li by se
+   nedalo n�kolik p��kaz� spojit do jedn� transakce. T�m se sn��� re�ie
+   na transakce. P�ed proveden�m rozs�hl�ch zm�n zru�te indexy, kter� po
+   dokon�en� zm�n op�t vytvo�te.
+   
+   M�te n�kolik dal��ch mo�nost�, jak zlep�it v�kon. M��ete zak�zat
+   fsyn() p�i startu postmastera p�ep�na�i -o -F. Tyto p�ep�na�e zabr�n�
+   fsync(), tj. z�pisu na disk po ka�d� transakci.
+   
+   M��ete zv��it velikost pam�ov�ch buffer� pou�it�ch backendy tj.
+   parametr -B postmasteru. Pokud ale tato hodnota bude p��li� velk�, tak
+   mo�n� nespust�te postmastera jeliko� dos�hnete limitu sd�len� pam�ti.
+   Ka�d� buffer m� 8K a implicitn� je 64 buffer�.
+   
+   D�le m��ete pou��t p�ep�na� -S k zv��en� limitu pam�ti pro backendy na
+   do�asn� t��d�n�. Hodnota je m�n�na v kilobytech a v�choz� nastaven� je
+   512, tj. 512K.
+   
+   M��ete pou��t p��kaz CLUSTER, kter� uspo��d� fyzicky data v tabulk�ch
+   podle indexu. V�ce na manu�lov�ch str�nk�ch p��kazu CLUSTER.
+   
+    3.7) Jak� jsou mo�nosti lad�n�?
+    
+   M�te n�kolik mo�nost� jak se dostat k u�ite�n�m stavov�m informac�m.
+   
+   Zaprv�, p�i p�ekladu pou�ijte p�ep�na� --enable-cassert, t�m se zapne
+   monitorov�n� a n�sledn� zastaven� aplikace, kdy� se proces v backendu
+   dostane do neo�ek�van�ho stavu.
+   
+   Jak postmaster tak postgres m� n�kolik p�ep�na�� umo��uj�c�ch lad�n�.
+   Postmaster nastartujte tak, abyste si byli jisti, �e je standartn�
+   v�stup a standartn� chybov� v�stup p�esm�rov�n do souboru logu,
+   nap��klad:
+    cd /usr/local/pgsql
+    ./bin/postmaster > server.log 2>&1 &
+
+   T�m se vytvo�� log v adres��i PostgreSQL, Tento soubor obsahuje
+   u�ite�n� informace o probl�mech a chyb�ch vyskytl�ch se na serveru.
+   Postmaster m� p�ep�na� -d ur�uj�c�, jak podrobn� maj� b�t reportovan�
+   informace, tj. debug level. Pozor, p�i velk� hodnot� debug levelu
+   rychle roste velikost souboru logu.
+   
+   Pokud neb�� postmaster, m��ete spustit backend PostgreSQL z p��kazov�
+   ��dky a napsat sv�j SQL dotaz p��mo v backendu (doporu�eno pouze pro
+   lad�n�). Dotaz je v tomto p��pad� ukon�en novou ��dkou, nikoliv
+   st�edn�kem. Pokud m�te aplikaci p�elo�enou s lad�c�mi symboly, m��ete
+   pou��t debbuger k monitorov�n� procesu. Pokud nen� backend spu�t�n
+   postmasterem, pak neb�� ve sv�m obvykl�m prost�ed� a tud�� n�kter�
+   probl�my dan� interakc� mezi backendy nemohou b�t nasimulov�ny.
+   
+   Pokud b�� postmaster, spus�e psql v jednom okn� a pak si zjist�te PID
+   procesu postgres pou�it�ho psql. V debuggeru sep�ipojte k postgresql
+   PID. Pak nastavte breakpointy v debuggeru a zadejte dotaz v psql.
+   Pokud lad�te startup postgresu, pak nastavte PGOPTIONS="-W n" a spus�e
+   psql. Tento p�ep�na� zp�sob� pauzu n sekund, tak�e budete m�t �as se
+   p�ipojit k procesu, a nastavit breakpointy a pokra�ovat v startup
+   posloupnosti.
+   
+   Pro lad�n� a m��en� v�konu mohou b�t u�ite�n� p�ep�na�e -s, -A a -t
+   programu postgres (backend).
+   
+   M��ete prov�st p�eklad s profilac�, tak abyste vid�li kolik �asu
+   zab�raj� jednotliv� funkce. Soubory s profily backend� jsou ulo�eny v
+   adres��i pgsql/data/base/dbname. Profil klienta pak v jeho aktu�ln�m
+   adres��i. Korektn� profilace v prost�ed� Linux po�aduje konfiguraci
+   syst�mu s parametrem -DLINUX_PROFILE.
+   
+    3.8) Pro� dostanu "Sorry, too many clients", kdy� se zkou��m p�ipojit?
+    
+   Zvy�te limit postmastera na maxim�ln� po�et sou�asn� spu�t�n�ch
+   backend�.
+   
+   V�choz� hodnota je 32 backend�. Tuto hodnotu zv���te zastaven�m a
+   op�tovn�m spu�t�n�m postmastera s parametrem -N nebo �pravou
+   postgresql.conf.
+   
+   P�i zv��en� hodnoty -N nad 32 mus�te zv��it hodnotu -B nad v�choz� 64,
+   -B mus� b�t minim�ln� dvakr�t v�t��, nebo je�t� l�pe v�ce.
+   Pravd�podobn� zjist�te, �e pro velk� po�et proces� backendu je nutn�
+   zv��it n�kter� parametry j�dra. Jsou to p�edev��m maxim�ln� velikost
+   sd�len� pam�ti SHMMAX, maxim�ln� po�et semaf�r� SEMMNS a SEMMNI,
+   maxim�ln� po�et proces� NPROC, maxim�ln� po�et proces� u�ivatele
+   MAXUPRC a maxim�ln� po�et otev�en�ch soubor� NFILE a NINODE. D�vod pro
+   omezen� maxim�ln�ho po�tu backend� je fakt, �e by mohlo doj�t k
+   vy�erp�n� zdroj� Va�eho syst�mu.
+   
+    3.9) K �emu slou�� adres�� pgsql_tmp?
+    
+   Tento adres�� obsahuje do�asn� soubory vytvo�en� exekutorem dotaz�.
+   Nap��klad, kdy� je nutn� t��d�n� k zaji�t�n� ORDER BY a t��d�n� m�
+   v�t�� n�roky na prostor ne� povoluje parametr -S backendu, pak je
+   vytvo�en do�asn� soubor k ulo�en� extra �daj�.
+   
+   Do�asn� soubory jsou obvykle maz�ny automaticky, ale m��e se st�t, �e
+   b�hem t��d�n� server spadne. Zastaven� a dal�� start postmastera
+   zajist� odstran�n� soubor� s t�chto adres���.
+   
+    3.10) Pro� je po�adov�no dump a obnoven� (load) datab�ze b�hem upgrade mezi
+    velk�mi verzemi PostgreSQL?
+    
+   PostgreSQL se minim�ln� m�n� b�hem mal�ch verz�, tak�e nap�. p�i
+   upgrade z 7.2 na 7.2.1 nen� nutn� dump a load datab�ze. Ale v�ynamn�
+   verze �asto m�n� intern� form�t syst�mov�ch tabulek a datov�ch
+   soubor�. Tyto zm�ny jsou natolik rozs�hl�, �e nelze zajistit zp�tnou
+   kompatibilitu pro datov� soubory. Dump ulo�� data v obecn�m form�tu,
+   tak�e mohou b�t na�tena a pou��v�na v nov�m intern�m form�tu.
+     _________________________________________________________________
+   
+                              Provozn� dotazy
+                                      
+    4.1) ��m se li�� bin�rn� a norm�ln� kurzor?
+    
+   Popis najdete v manu�lov� str�nce DECLARE
+   
+    4.2) Jak z�skat pouze prvn� ��dek dotazu? N�hodn� ��dek?
+    
+   Pod�vejte se do man. str�nky p��kazu FETCH, nebo pou�ijte SELECT ...
+   LIMIT ...
+   
+   I kdy� pot�ebujete z�skat pouze prvn�ch n�kolik ��dk�, je t�eba
+   zpracovat v�echna data, nap�. pokud dotaz m� ORDER BY. Pokud v�ak
+   existuje index, kter� odpov�d� ORDER BY, PostgreSQL m��e z�skat pouze
+   prvn�ch n ��dk� a ukon�it zpracov�n� dotazu.
+   
+   K z�sk�n� n�hodn�ho ��dku pou�ijte:
+    SELECT col
+    FROM tab
+    ORDER BY random()
+    LIMIT 1;
+
+    4.3) Jak z�sk�m seznam tabulek nebo jinak jak jej z�sk� psql?
+    
+   P��kaz \dt v psql zobraz� seznam tabulek. �pln� seznam p��kaz� psql
+   dostanete p��kazem \?. Tak� se m��ete pod�vat do zdrojov�ch k�d� psql
+   do souboru pgsql/src/bin/psql/describe.c. Ten obsahuje SQL p��kazy,
+   kter� se pou��vaj� v psql metap��kazech. D�le m��ete spustit psql s
+   p�ep�na�em -E, kter� zp�sob� zobrazen� ka�d�ho dotazu, kter�
+   zpracov�n� metap��kazu vyvol�. PostgreSQL nab�z� SQLi INFORMATION
+   SCHEMA s tabulkami obsahuj�c� informace o datab�zi.
+   
+    4.4) Jak odstran�m sloupec tabulky, jak zm�n�m jeho typ?
+    
+   Po��naje verz� 7.3 m��ete pou��t p��kaz ALTER TABLE DROP COLUMN. Ve
+   star��ch verz�ch m��ete pou��t n�sleduj�c� postup:
+    BEGIN;
+    LOCK TABLE old_table;
+    SELECT ... -- mimo sloupec, kter� chceme odstranit
+    INTO TABLE new_table;
+    DROP TABLE old_table;
+    ALTER TABLE new_table RENAME TO old_table;
+    COMMIT;
+
+   Pro zm�nu typu sloupce je t�eba prov�st:
+    BEGIN;
+    ALTER TABLE tab ADD COLUMN new_col new_data_type;
+    UPDATE tab SET new_col = CAST(old_col AS new_data_type;
+    ALTER TABLE tab DROP COLUMN old_col;
+    COMMIT;
+
+   Pot� prove�te VACUUM FULL tab - uvoln�te t�m diskov� prostor zabran�
+   nyn� ji� neplatn�mi ��dky.
+   
+    4.5) Jak� je maxim�ln� velikost ��dku, tabulky a datab�ze?
+    
+   PostgreSQL m� tato omezen�:
+    Maxim�ln� velikost datab�ze:           neomezena (existuj� 32TB db)
+    Maxim�ln� velikost tabulky:            32 TB
+    Maxim�ln� velikost ��dky:              1.6 TB
+    Maxim�ln� velikost polo�ky             1 GB
+    Maxim�ln� po�et ��dk� v tabulce:       neomezeno
+    Maxim�ln� po�et sloupc� v tabulce:     250-1600 podle typ�
+    Maxim�ln� po�et index� na tabulce:     neomezeno
+
+   Ve skute�nosti nic nen� neomezeno, limitem b�v� v�dy dostupn� diskov�
+   pam� nebo velikost opera�n� pam�ti. Pokud m�te n�kterou z t�chto
+   hodnot neobvykle velkou, m��e doj�t ke sn��en� v�konu.
+   
+   Maxim�ln� velikost tabulky je 32 TB a nevy�aduje podporu velk�ch
+   soubor� opera�n�m syst�mem. Velk� tabulky se ukl�daj� do n�kolika 1 GB
+   soubor� tak�e limity souborov�ho syst�mu nejsou podstatn�.
+   
+   Maxim�ln� velikost tabulky a maxim�ln� po�et sloupc� m��eme
+   ze�ty�n�sobit nastaven�m velikosti bloku na 32K.
+   
+    4.6) Kolik diskov�ho prostoru je pot�eba k ulo�en� dat z
+    
+   norm�ln�ho textov�ho souboru?
+   
+   PostgreSQL vy�aduje a� p�tin�sobek diskov�ho prostoru k ulo�en� dat z
+   textov�ho souboru.
+   
+   Nap��klad, uva�ujme soubor se 100 tis�ci ��dky obsahuj�c� na ka�d�
+   ��dce cel� ��slo a textov� popis. Text je v pr�m�ru dvacet byt�
+   dlouh�. Textov� soubor bude 2.8 MB dlouh�. Velikost datab�ze
+   obsahuj�c� odpov�daj�c� data bude zhruba 6.4 MB.
+    36 byt�: hlavi�ka ��dku (p�ibli�n�)
+    24 byt�: jedna celo��seln� polo�ka a jedna textov�
+   + 4 byty: ukazatel na str�nku k ntici
+   ------------------------------------------------------
+    64 byt� na ��dek
+
+   Velikost datov� str�nky PostgreSQL je 8KB
+
+    8192 byt� na str�nce
+    ---------------------- = 128 ��dek na str�nku
+      64 byt� za ��dek
+
+    100000 ��dek
+    -------------------- = 782 str�nek (zaokrouhleno nahoru)
+       128 ��dek na str�nce
+
+    782 * 8192 = 6, 406, 144 byt� (6.4 MB)
+
+   Indexy nemaj� tak velkou re�ii, ale mohou b�t tak� velk�, proto�e
+   obsahuj� indexovan� data.
+   
+   Hodnoty NULL jsou ulo�eny v bitmap�ch, tak�e spot�ebuj� jen velmi m�lo
+   diskov�ho prostoru.
+   
+    4.7) Jak z�sk�m seznam vytvo�en�ch tabulek, index�, datab�z�?
+    
+   psql m� sadu metap��kaz� k zobrazen� t�chto informac�. Jejich seznam
+   z�sk�te p��kazem \?. D�le se m��ete pod�vat na obsah syst�mov�ch
+   tabulek za��naj�c�ch pg_. Spu�t�n� psql s parametrem -l provede v�pis
+   n�zv� v�ech datab�z�.
+   
+   Soubor pgsql/src/tutorial/syscat.source obsahuje SELECTy p�istupuj�c�
+   k syst�mov�m tabulk�mm.
+   
+    4.8) M�j dotaz je pomal� a nepou��v� vytvo�en� indexy. Pro�?
+    
+   Ka�d� dotaz nemus� nutn� pou��t existuj�c� indexy. Index se pou�ije
+   tehdy, kdy� je tabulka v�t�� ne� ur�it� minim�ln� velikost, a dotaz
+   vyb�r� pouze procentu�ln� malou ��st ��dk� tabulky. To proto, �e
+   n�hodn� p��stup k disku dan� �ten�m indexu m��e b�t pomalej�� ne�
+   line�rn� �ten� tabulky nebo sekven�n� �ten�.
+   
+   PostgreSQL rozhoduje o pou�it� index� na z�klad� statistiky p��stup� k
+   tabulce. Tyto statistiky se shroma��uj� p��kazy VACUUM ANALYZE nebo
+   ANALYZE. D�ky statistik�m m� optimizer informaci o po�tu ��dek v
+   tabulce a m��e l�pe rozhodnout o pou�it� index�. Statistiky se uplatn�
+   p�i ur�en� optim�ln�ho po�ad� a metody spojen� tabulek. Statistiky by
+   se m�li aktualizovat opakovan�, tak jak se m�n� obsah tabulek.
+   
+   Indexy nejsou oby�ejn� pou�ity pro set��d�n� nebo spojen� tabulek.
+   Sekven�n� zpracov�n� n�sledovan� explicitn�m t��d�n�m je oby�ejn�
+   rychlej�� ne� indexn� �ten� na velk� tabulce.
+   
+   Jinak je tomu v p��pad� pou�it� LIMIT a ORDER BY, p�i kter�m se
+   v�t�inou index pou�ije, v�sledkem je pouze mal� ��st tabulky. Funkce
+   MAX() a MIN() nepou��vaj� indexy, ale je mo�n� tut� hodnotu z�skat:
+    SELECT col
+    FROM tab
+    ORDER BY col [ DESC ]
+    LIMIT 1;
+
+   Pokud si mysl�te, �e optimizer myln� zvolil sekven�n� prohled�v�n�
+   tabulky, pou�ijte p��kaz SET enable_seqscan TO 'off' a zkuste zda je
+   indexn� prohled�v�n� rychlej��.
+   
+   P�i vyhled�v�n� na z�klad� vzoru jako je nap�. oper�tor LIKE nebo ~ se
+   indexy pou��j� pouze za ur�it�ch skute�nost�:
+     * za��tek hledan�ho vzoru mus� b�t ukotven k za��tku, tj.
+          + vzor LIKE nesm� za��nat %
+          + ~ regul�rn� v�raz mus� za��nat ^
+     * vzor nesm� za��nat intervalem, nap�. [a-e]
+     * vyhled�van�, kter� nen� Case sensitiv jako je ILIKE nebo ~*
+       nepou��v� indexy. M��ete ale pou��t funkcion�ln� indexy, kter�
+       jsou pos�ny v sekci 4.12
+     * p�i inicializaci datab�ze (initdb) mus� b�t pou�ito C locale
+       (pozn. p�ekladatele - tud�� v na�ich podm�nk�ch nepou�iteln�,
+       nepracovalo by �esk� t��d�n�).
+       
+    4.9) Jak zjist�m, jak optimizer dotazu vyhodnocuje m�j dotaz?
+    
+   Pod�vejte se do manu�lov� str�nky p��kazu EXPLAIN.
+   
+    4.10) Co to je R-tree index?
+    
+   R-tree index se pou��v� pro indexov�n� prostorov�ch dat. Hash index
+   nem��e obslou�it prohled�v�n� oblast�. B-tree index m��e ��dit
+   vyhled�n� oblast� v jedn� dimenzi. R-tree index m��e podporovat
+   hled�n� v multidimenzion�ln�ch datech. Pou�ijeme-li nap��klad R-tree
+   index na atributy typu point, pak syst�m m��e efektivn� odpov�d�t na
+   dotaz - vyber v�echny body uvnit� obd�ln�k�.
+   
+   P�vodn� n�vrh R-tree je Guttman, A. "R-trees: A Dynamic Index
+   Structure for Spatial Searching." Proceedings of the 1984 ACM SIGMOD
+   Int'l Conf on Mgmt of Data, 45-57
+   
+   Tyto materi�ly naleznete v Stonebraker's "Readings in Database
+   Systems".
+   
+   Vestav�n� R-tree m��e slou�it k indexaci polygon� a oblast�.
+   Teoreticky m��eme R-tree pou��t i pro v�ce dimenz� (jin� ne� 3D). Ve
+   skute�nosti ale takov� roz���en� R-tree vy�aduje trochu pr�ce a ve
+   sou�astnosti chyb� dokumentace jak na to.
+   
+    4.11) Co je Genetic Query Optimizer?
+    
+   GEQO modul urychluje optimalizaci dotaz� p�i spojov�n� mno�stv�
+   tabulek metodou Genetick�ch algoritm� (GA). To umo��uje z�skat velk�ho
+   mno�stv� variant spojen� p�i ne�pln�m prohled�v�n�m.
+   
+    4.12) Jak prov�st vyhled�v�n� regul�rn�ho v�razu case sensitiv, insensitiv?
+    Jak pou��t index pro case insensitive vyhled�v�n�?
+    
+   Oper�tor ~ slou�� k porov�n� s regul�rn�m v�razem, jeho modifikace *~
+   p�edstavuje case insensitive vyhled�v�n�. Jedn� se o obdobu LIKE a
+   ILIKE.
+   
+   Pro vyhled�v�n� bez ohledu na velk� mal� p�smena pou�ijeme:
+    SELECT *
+    FROM tab
+    WHERE lower(col) = 'abc';
+
+   V tomto p��pad� se nepou�ije standardn� index. Nicm�n�, pou�ije se
+   funkcion�ln� index, pokud jej vytvo��te:
+    CREATE INDEX tabindex ON tab (lower(col));
+
+    4.13) Jak v dotazu detekovat, �e polo�ka je NULL?
+    
+   Ur��te pomoc� IS NULL nebo IS NOT NULL
+   
+    4.14) Jak� jsou rozd�ly mezi r�zn�mi znakov�mi typy?
+    
 Typ         Intern� n�zev       Pozn�mka
 --------------------------------------------------------------------------
 VARCHAR(n)  varchar             omezeno maxim�ln� d�lkou, bez dopln�n� mezerami
@@ -858,332 +826,292 @@ TEXT        text                bez horn
 BYTEA       bytea               pole byt� (bezpe�n� lze ulo�it i znak NULL)
 "char"      char                jeden znak
 
-S intern�mi n�zvy se setk�te v syst�mov�m katalogu a v n�kter�ch
-chybov�ch hl�en�ch.
-
-Prvn� �ty�i uveden� typy jsou tzv. varlena typy (tj. prvn� �ty�i byty na
-disku nesou �daj o d�lce, n�sleduj� samotn� data). Proto skute�n�
-pou�it� prostor je v�dy o n�co m�lo v�t�� ne� deklarovan� d�lka. Naopak,
-tyto datov� typy jsou komprimov�nty TOASTem, tak�e prostor na disku m��e
-b�t ni��� ne� je o�ek�v�no.
-
-VARCHAR(n) je vhodn� pro ukl�d�n� text� promm�n� d�lky s pevn�
-stanovenou maxim�ln� d�lkou. TEXT je pro �et�zce bez omezen� d�lky s
-maximem jeden gigabajt.
-
-CHAR(n) slou�� k ukl�d�n� �et�zc� stejn� d�lky. CHAR(n) dopln� pr�zdn�
-znaky do specifikovan� d�lky, zat�mco VARCHAR(n) ulo�� pouze p�edan�
-znaky. BYTEA je ur�eno pro ukl�d�n� bin�rn�ch dat, v�etn� NULL byte.
-V�echny zde popsan� typy maj� podobn� v�konnostn� charakteristiky.
-
-4.15.1 Jak vytvo�it serial/auto-increment pole?
------------------------------------------------
-
-PostgreSQL podporuje typ SERIAL. P�i jeho pou�it� se automaticky vytvo��
-SEQUENCE a index na sloupci (Pro vy��� verze to neplat� OV��IT).
-Nap��klad:
-
-CREATE TABLE person (
-  id SERIAL,
-  name TEXT
-);
-
-je automaticky p�evedeno do
-
-CREATE SEQUENCE person_id_seq;
-CREATE TABLE person (
-  id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
-  name TEXT
-);
-CREATE UNIQUE INDEX person_id_key ON person(id);
-
-Viz dokumentace create_sequence v manu�lov�ch str�nk�ch. D�le m��ete
-pou��t unik�tn� hodnotu OID ka�d�ho ��dku. Potom ale mus�te spou�t�t
-pg_dump s p�ep�na�em -o, tak aby z�staly zachov�ny hodnoty OID (u
-p��kazu copy COPY WITH OIDS).
-
-4.15.2 Jak z�skat hodnotu SERIAL po vlo�en� ��dku?
---------------------------------------------------
-
-Jednou z mo�nost� je z�skat budouc� hodnotu SERIAL funkc� nextval p�ed
-samotn�m vlo�en�m a pak ji vlo�it explicitn�. Nap��klad v jak�msi
-pseudojazyku
-
-newid = execute("SELECT nextval('person_id_seq')");
-execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
-
-M��ete pak je�t� pou��t hodnotu newid v dal��ch dotazech, nap�. jako
-hodnotu ciz�ho kl��e. N�zev automaticky vytvo�en� sekvence je
-tabulka_sloupec_seq.
-
-Alternativn� m��ete z�skat hodnotu posledn� generovou sekvenc� funkc�
-currval() po vlo�en�
-
-execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
-new_id = execute("SELECT currval('person_id_seq')");
-
-Kone�n� m��ete pou��t OID hodnotu vr�cenou p��kazem INSERT, ale to je
-pravd�podobn� nejm�n� p�enositeln� �e�en�. V Perlu p�i pou�it� DBI
-modulu Edmunda Mergleho DBD:Pg oid hodnotu z�sk�me $sth->{pg_oid_status}
-po ka�d�m $sth->execute().
-
-4.15.3 Nepovede currval() a nextval() k rozhozen� podm�nek p�i soub�hu s jin�mi u�ivateli?
-------------------------------------------------------------------------------------------
-
-Nikoliv, currval() vrac� hodnotu naposledy generovanou ve va�em
-backendu, a ta tud�� nen� spole�n� v�em u�ivatel�m.
-
-4.15.4 Pro� nen� vygenerovan� ��slo pou�ito p�i p�eru�en� transakce?
-Pro� vznikaj� d�ry v ��slov�n� vlastn� sekvenc�/SERIAL sloupce?
-
-K zaji�t�n� efektivnosti soub�hu, jsou hodnoty posloupnosti, kdy� se o
-n� po��d�, a sekvence nen� zam�ena do ukon�en� transakce. To zp�sobuje
-d�ry v ��slov�n� ze zru�en�ch transakc�.
-
-4.16 Co to je OID? Co je to TID?
---------------------------------
-
-Ka�d� ��dek vytvo�en� v PostgreSQL z�sk� jedine�n� OID. V�echna OID
-generovan� b�hem inicializace datab�ze jsou men�� ne� 16384
-(include/access/transam.h). V�echna OID generovan� na po�adavek
-u�ivatele jsou rovna nebo vy��� t�to hodnot�. Norm�ln�, v�echna OID jsou
-jedine�n� nejen uvnit� tabulky nebo datab�ze, ale v r�mci cel� instalace
-PostgreSQL
-
-PostgreSQL pou��v� OID ve sv�m intern�m syst�mu tabulek k vytvo�en�
-relac�. Tato OID mohou b�t pou�ita k identifikaci konkr�tn�ho u�ivatele
-a pou�ita v spojen�. Pro OID hodnoty je doporu�en typ OID. Nad t�mto
-sloupcem m��ete vytvo�it index pro urychlen� p��stupu.
-
-OID jsou d�na v�em ��dk�m z centr�ln� oblasti a jsou pou�ita v ka�d�
-datab�zi. Pokud pot�ebujete zm�nit OID, nebo chcete zkop�rovat tabulku s
-p�vodn�mi OID, lze pou��t
-
-CREATE TABLE new_table(old_oid oid, mycol int);
-SELECT old_oid, mycol INTO new FROM old;
-COPY new TO '/tmp/pgtable';
-DELETE FROM new;
-COPY new WITH OIDS FROM '/tmp/pgtable';
-
-OID jsou ulo�ena jako 4bajtov� integer a p�ete�ou po �ty�ech miliard�ch.
-Nebylo hl�eno, �e by se tak n�kdy stalo, p�esto ale pl�nujeme odstranit
-tento limit d��v ne� se tak stane.
-
-TID se pou��vaj� i identifikaci fyzick�ch ��dk� s hodnotou bloku a
-offsetu. TIDs se m�n� modifikac� ��dk� (pou��v� se jako ukazatel indexu
-fyzick�ho ��dku).
-
-4.17 Jak� je v�znam n�kter�ch v�raz� pou�it�ch v PostgreSQL?
-------------------------------------------------------------
-
-V n�kter�ch zdrojov�ch k�dech nebo star�� dokumentaci se m��ete setkat s
-n�sleduj�c�mi v�razy, kter� maj� �ir�� v�znam. Zde je p��klad nekter�ch:
-
-    - tabulka, relace, t��da (table, relation, class)
-    - ��dek, z�znam, ntice (row, record, tuple)
-    - sloupec, polo�ka, atribut (column, field, attribute)
-    - vyhled�n�, v�b�r (retrieve, select)
-
-    - n�hrada, �prava (replace, update)
-    - p�id�n�, vkl�d�n� (append, insert)
-    - OID, serial value (OID, serial value)
-    - portal, kurzor (portal, cursor)
-    - range variable, jm�no tabulky, alias tabulky (range
-    variable, table name, table alias)
-
-seznam t�chto v�raz� m��ete nal�zt na
-http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/g
-lossary.html.
-
-4.18 Pro� jsem z�skal chybov� hl�en� "ERROR: Memory exhausted in AllocSetAlloc()"?
------------------------------------------------------------------------------------
-
-Pravd�podobn� do�lo k vy�erp�n� virtu�ln� pam�i na Va�em syst�mu, nebo
-j�dro m� n�zk� limit pro ur�it� zdroje. Vyzkou�ejte p�ed startem
-posmatera
-
-ulimit -d 262144
-limit datasize 256m
-
-Z�le�� na Va�em shellu, zda budou tyto p��kazy �sp�n�, m�ly by zv��it
-limit datov�ho segmentu pro Va�e procesy a umo�nit tak dokon�en� dotazu.
-Tyto p��kazy se aplikuj� na aktu�ln� proces a v�echny synovsk� procesy
-vytvo�en� po proveden� p��kazu. Pokud m�te probl�my s SQL klientem
-proto�e backend vrac� p��li� mnoho dat, zkuste zv��it limity p�ed
-startem klienta.
-
-4.19 Jak se dozv�m, kterou verzi PostgreSQL pou��v�m?
------------------------------------------------------
-
-V psql spus�te
-
-SELECT version();
-
-4.20 Pro� operace s velk�mi objekty kon�� "invalid large obj descriptor"?
--------------------------------------------------------------------------
-
-V�echny operace s velk�mi objekty - lo_open, lo_close, ... mus�te
-spou�t�t v transakci, tj. mezi p��kazy BEGIN WORK a COMMIT.
-
-PostgreSQL uvol�uje handle velk�ch objekt� p�i skon�en� transakce. Pokud
-budete pracovat s velk�mi objekty mimo transakci, pravd�podobn�
-dostanete toto chybov� hl�en�, proto�e handle ji� budou neplatn�.
-
-Pokud pou��v�te interface podobn� ODBC mus�te nastavit set auto_commit
-off
-
-4.21 Jak vytvo�it sloupec obsahuj�c� implicitn� aktu�ln� datum?
----------------------------------------------------------------
-
-Pou�ijte CURRENT_TIMESTAMP
+   S intern�mi n�zvy se setk�te v syst�mov�m katalogu a v n�kter�ch
+   chybov�ch hl�en�ch.
+   
+   Prvn� �ty�i uveden� typy jsou tzv. varlena typy (tj. prvn� �ty�i byty
+   na disku nesou �daj o d�lce, n�sleduj� samotn� data). Proto skute�n�
+   pou�it� prostor je v�dy o n�co m�lo v�t�� ne� deklarovan� d�lka.
+   Naopak, tyto datov� typy jsou komprimov�nty TOASTem, tak�e prostor na
+   disku m��e b�t ni��� ne� je o�ek�v�no.
+   
+   VARCHAR(n) je vhodn� pro ukl�d�n� text� promm�n� d�lky s pevn�
+   stanovenou maxim�ln� d�lkou. TEXT je pro �et�zce bez omezen� d�lky s
+   maximem jeden gigabajt.
+   
+   CHAR(n) slou�� k ukl�d�n� �et�zc� stejn� d�lky. CHAR(n) dopln� pr�zdn�
+   znaky do specifikovan� d�lky, zat�mco VARCHAR(n) ulo�� pouze p�edan�
+   znaky. BYTEA je ur�eno pro ukl�d�n� bin�rn�ch dat, v�etn� NULL byte.
+   V�echny zde popsan� typy maj� podobn� v�konnostn� charakteristiky.
+   
+    4.15.1) Jak vytvo�it serial/auto-increment pole?
+    
+   PostgreSQL podporuje typ SERIAL. P�i jeho pou�it� se automaticky
+   vytvo�� SEQUENCE. Nap��klad:
+    CREATE TABLE person (
+        id   SERIAL,
+        name TEXT
+    );
+
+   je automaticky p�evedeno do
+    CREATE SEQUENCE person_id_seq;
+    CREATE TABLE person (
+        id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),
+        name TEXT
+    );
+    CREATE UNIQUE INDEX person_id_key ON person(id);
+
+   Viz dokumentace create_sequence v manu�lov�ch str�nk�ch. D�le m��ete
+   pou��t unik�tn� hodnotu OID ka�d�ho ��dku. Potom ale mus�te spou�t�t
+   pg_dump s p�ep�na�em -o, tak aby z�staly zachov�ny hodnoty OID (u
+   p��kazu copy COPY WITH OIDS).
+   
+    4.15.2) Jak z�skat hodnotu SERIAL po vlo�en� ��dku?
+    
+   Jednou z mo�nost� je z�skat budouc� hodnotu SERIAL funkc� nextval()
+   p�ed samotn�m vlo�en�m a pak ji vlo�it explicitn�. Nap��klad v jak�msi
+   pseudojazyku:
+    newid = execute("SELECT nextval('person_id_seq')");
+    execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
+
+   M��ete pak je�t� pou��t hodnotu newid v dal��ch dotazech, nap�. jako
+   hodnotu ciz�ho kl��e. N�zev automaticky vytvo�en� sekvence je
+   tabulka_sloupec_seq.
+   
+   Alternativn� m��ete z�skat hodnotu posledn� generovou sekvenc� funkc�
+   currval() po vlo�en�:
+    execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
+    new_id = execute("SELECT currval('person_id_seq')");
+
+   Kone�n� m��ete pou��t OID hodnotu vr�cenou p��kazem INSERT, ale to je
+   pravd�podobn� nejm�n� p�enositeln� �e�en�. V Perlu p�i pou�it� DBI
+   modulu Edmunda Mergleho DBD:Pg oid hodnotu z�sk�me
+   $sth->{pg_oid_status} po ka�d�m $sth->execute().
+   
+    4.15.3) Nepovede currval() a nextval() k rozhozen� podm�nek p�i soub�hu s
+    jin�mi u�ivateli?
+    
+   Nikoliv, currval() vrac� hodnotu naposledy generovanou ve va�em
+   backendu, a ta tud�� nen� spole�n� v�em u�ivatel�m.
+   
+    4.15.4) Pro� nen� vygenerovan� ��slo pou�ito p�i p�eru�en� transakce? Pro�
+    vznikaj� d�ry v ��slov�n� vlastn� sekvenc�/SERIAL sloupce?
+    
+   K zaji�t�n� efektivnosti soub�hu, jsou hodnoty posloupnosti, kdy� se o
+   n� po��d�, a sekvence nen� zam�ena do ukon�en� transakce. To zp�sobuje
+   d�ry v ��slov�n� ze zru�en�ch transakc�.
+   
+    4.16) Co to je OID? Co je to TID?
+    
+   Ka�d� ��dek vytvo�en� v PostgreSQL z�sk� jedine�n� OID. V�echna OID
+   generovan� b�hem inicializace datab�ze jsou men�� ne� 16384
+   (include/access/transam.h). V�echna OID generovan� na po�adavek
+   u�ivatele jsou rovna nebo vy��� t�to hodnot�. Norm�ln�, v�echna OID
+   jsou jedine�n� nejen uvnit� tabulky nebo datab�ze, ale v r�mci cel�
+   instalace PostgreSQL
+   
+   PostgreSQL pou��v� OID ve sv�m intern�m syst�mu tabulek k vytvo�en�
+   relac�. Tato OID mohou b�t pou�ita k identifikaci konkr�tn�ho
+   u�ivatele a pou�ita v spojen�. Pro OID hodnoty je doporu�en typ OID.
+   Nad t�mto sloupcem m��ete vytvo�it index pro urychlen� p��stupu.
+   
+   OID jsou d�na v�em ��dk�m z centr�ln� oblasti a jsou pou�ita v ka�d�
+   datab�zi. Pokud pot�ebujete zm�nit OID, nebo chcete zkop�rovat tabulku
+   s p�vodn�mi OID, lze pou��t:
+        CREATE TABLE new_table(old_oid oid, mycol int);
+        SELECT old_oid, mycol INTO new FROM old;
+        COPY new TO '/tmp/pgtable';
+        DELETE FROM new;
+        COPY new WITH OIDS FROM '/tmp/pgtable';
+
+   OID jsou ulo�ena jako 4bajtov� integer a p�ete�ou po �ty�ech
+   miliard�ch. Nebylo hl�eno, �e by se tak n�kdy stalo, p�esto ale
+   pl�nujeme odstranit tento limit d��v ne� se tak stane.
+   
+   TID se pou��vaj� i identifikaci fyzick�ch ��dk� s hodnotou bloku a
+   offsetu. TIDs se m�n� modifikac� ��dk� (pou��v� se jako ukazatel
+   indexu fyzick�ho ��dku).
+   
+    4.17) Jak� je v�znam n�kter�ch v�raz� pou�it�ch v PostgreSQL?
+    
+   V n�kter�ch zdrojov�ch k�dech nebo star�� dokumentaci se m��ete setkat
+   s n�sleduj�c�mi v�razy, kter� maj� �ir�� v�znam. Zde je p��klad
+   nekter�ch:
+     * tabulka, relace, t��da (table, relation, class)
+     * ��dek, z�znam, ntice (row, record, tuple)
+     * sloupec, polo�ka, atribut (column, field, attribute)
+     * vyhled�n�, v�b�r (retrieve, select)
+     * n�hrada, �prava (replace, update)
+     * p�id�n�, vkl�d�n� (append, insert)
+     * OID, serial value (OID, serial value)
+     * portal, kurzor (portal, cursor)
+     * range variable, jm�no tabulky, alias tabulky (range variable,
+       table name, table alias)
+       
+   seznam t�chto v�raz� m��ete nal�zt na
+   http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary
+   /glossary.html.
+   
+    4.18) Pro� jsem z�skal chybov� hl�en� "ERROR: Memory exhausted in
+    AllocSetAlloc()"?
+    
+   Pravd�podobn� do�lo k vy�erp�n� virtu�ln� pam�i na Va�em syst�mu,
+   nebo j�dro m� n�zk� limit pro ur�it� zdroje. Vyzkou�ejte p�ed startem
+   posmatera
+    ulimit -d 262144
+    limit datasize 256m
+
+   Z�le�� na Va�em shellu, zda budou tyto p��kazy �sp�n�, m�ly by zv��it
+   limit datov�ho segmentu pro Va�e procesy a umo�nit tak dokon�en�
+   dotazu. Tyto p��kazy se aplikuj� na aktu�ln� proces a v�echny synovsk�
+   procesy vytvo�en� po proveden� p��kazu. Pokud m�te probl�my s SQL
+   klientem proto�e backend vrac� p��li� mnoho dat, zkuste zv��it limity
+   p�ed startem klienta.
+   
+    4.19) Jak se dozv�m, kterou verzi PostgreSQL pou��v�m?
+    
+   V psql spus�te SELECT version();
+   
+    4.20) Pro� operace s velk�mi objekty kon�� "invalid large obj descriptor"?
+    
+   V�echny operace s velk�mi objekty - lo_open, lo_close, ... mus�te
+   spou�t�t v transakci, tj. mezi p��kazy BEGIN WORK a COMMIT.
+   
+   PostgreSQL uvol�uje handle velk�ch objekt� p�i skon�en� transakce.
+   Pokud budete pracovat s velk�mi objekty mimo transakci, pravd�podobn�
+   dostanete toto chybov� hl�en�, proto�e handle ji� budou neplatn�.
+   Pokud pou��v�te interface podobn� ODBC mus�te nastavit set auto_commit
+   off.
+   
+    4.21) Jak vytvo�it sloupec obsahuj�c� implicitn� aktu�ln� datum?
+    
+   Pou�ijte CURRENT_TIMESTAMP:
 
 CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
 
-4.22 Pro� jsou moje vno�en� dotazy pou��vaj�c� IN tak pomal�?
--------------------------------------------------------------
-
-Aktu�ln� spojujeme tabulky se sekven�n�m skenov�n�m v�sledku pro ka�d�
-��dek vn�j��ho dotazu. Pokud vno�en� dotaz m� pouze n�kolik ��dk� a
-vn�j�� dotaz vrac� hodn� ��dek, IN je rychl�. V jin�ch p��padech
-nahra�te IN EXISTS:
-
-SELECT * FROM tab
-  WHERE col IN (SELECT subcol FROM subtab);
-
-takto
-
-SELECT * FROM tab
-  WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
-
-Pro urychlen� vytvo�ete index pro subcol. Tento v�konnostn� probl�m byl
-odstran�n ve verzi 7.4.
-
-4.23 Jak prov�st vn�j�� spojen� (outer join)?
----------------------------------------------
-
-PostgreSQL podporuje vn�j�� spojen� tabulek standardn�mi SQL p��kazy.
-Zde jsou dva p��klady:
-
-SELECT * FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
-nebo
-
-SELECT * FROM t1 LEFT OUTER JOIN USING (col);
-
-Tyto identick� dotazy napoj� t1.col na t2.col a je�t� p�id� nep�ipojen�
-��dky z t1 (kter� nemaj� obdoby v t2). Prav� spojen� (RIGHT JOIN) p�id�
-nep�ipojen� ��dky z t2. FULL JOIN vr�t� v�echny ��dky, v�etn�
-nep�ipojen�ch z tbulek t1 a t2. Kl��ov� slovo OUTER je nepovinn� a v�e
-se na LEFT, RIGHT a FULL join. B�n� spojen� se naz�v� INNER JOIN.
-
-V d��v�j��ch verz�ch se vn�j�� spojen� tabulek mohlo simulovat pomoc�
-UNION a NOT IN. Nap��klad pro spojen� tabulek tab1 a tab2, je
-n�sleduj�c� dotaz ekvivalentn� k vn�j��mu spojen� dvou tabulek:
-
-SELECT tab1.col2, tab2.col2 FROM tab1, tab2
-  WHERE tab1.col1 = tab2.col1
-UNION ALL
-SELECT tab1.col2, NULL FROM tab1
-  WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
-ORDER BY col1;
-
-4.24 Jak prov�st dotaz nap��� n�kolika datab�zemi?
---------------------------------------------------
-
-PostgreSQL nenab�z� ��dn� zp�sob, jak se dot�zat do jin� datab�ze ne� do
-aktu�ln�. Dopln�k contrib/dblink umo��uje dotaz do ciz� datab�ze
-prost�ednictv�m funkce. Na stran� klienta nen� probl�m si otev��t v�ce
-simult�ln�ch p��stup� do r�zn�ch datab�z� a spojovat v�sledek na stran�
-klienta.
-
-4.25 M��e funkce vr�tit v�ce ��dk� nebo sloupc�?
-------------------------------------------------
-
-V PostgreSQL 7.3 m��ete jednodu�e vracet v�ce ��dk� nebo sloupc� z
-funkce, viz:
-http://techdocs.postgresql.org/guides/SetReturningFunctions.
-
-4.26 Pro� nelze spolehliv� vytv��et a ru�it do�asn� tabulky v PL/pgSQL funkc�ch?
---------------------------------------------------------------------------------
-
-P�elo�en� k�d PL/pgSQL funkce je ulo�en ve vyrovn�vac� pam�ti, tj.
-funkce je p�ekl�d�na pouze p�i zm�n� k�du, nikoliv p�ed ka�d�m vol�n�m
-funkce. Necht�n�m vedlej��m efektem je, �e vol�n� funkce sel�e, kdy� se
-funkce odkazuje na do�asnou tabulku, pokud tato tabulka byla od p�ekladu
-funkce zru�ena (a�koliv ji� byla znovu vytvo�ena a existuje). Jedin�m
-�e�en�m probl�mu je p��stup k do�asn� tabulce pomoc� EXECUTE, tj.
-dynamick� prov�d�n� dotazu. Tento p��kaz zajist� opakovan� p�eklad
-dotazu p�i ka�d�m vol�n� funkce.
-
-4.27 Jak� jsou mo�nosti replikace datab�z�?
--------------------------------------------
-
-Existuje n�kolik dostupn�ch �e�en� master/slave replikac�. Ty povoluj�
-modifikace master datab�ze a slave datab�z�m umo��uj� pouze �ten�. Na
-konci http://gborg.PostgreSQL.org/genpage?replication_research najdete
-jejich seznam. Na �e�en� multi-master replikaci se pracuje na
-http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
-
-4.28 Jak� jsou mo�nosti �ifrov�n� datab�z�?
--------------------------------------------
-    -
-
-    contrib/pgcrypto obsahuje �ifrovac� funkce pou�iteln� v SQL
-    dotazech.
-
-    -
-
-    K �ifrov�n� p�enosu dat z klienta na server, mus� b�t server
-    p�elo�en s podporou ssl a p�ep�na� sslv postgresql.conf mus� b�t
-    nastaven na hodnotu true. Klient mus� m�t vytvo�en z�znam hostssl v
-    pg_hba.conf a tak� m�t povolen re�im ssl. Lze pou��t i jin�
-    prost�edky, nejen nativn� podporu ssl v PostgreSQL, nap�. stunel a
-    ssh.
-
-    -
-
-    Hesla u�ivatel� datab�ze jsou za�ifrov�na po��naje verz� 7.3. Ve
-    star��ch verz�ch toto chov�n� muselo b�t vynuceno volbou
-    PASSWORD_ENCRYPTION v postgresql.conf
-
-    -
-
-    Server m��e b�et na �ifrovan�m souborov�m syst�mu.
-
-------------------------------------------------------------------------
-
-Roz�i�ov�n� PostgreSQL
-======================
-
-5.1 Napsal jsem UDF funkci, PostgreSQL v�ak kon�� dump core?
-------------------------------------------------------------
-
-Probl�m m��e b�t zp�soben mnoha okolnostmi. Vyzkou�ejte si svoji funkci
-nejd��ve v n�jak� jednoduch� aplikaci.
-
-5.2 Jak mohu p�isp�t n�jak�mi �ikovn�mi datov�mi typy a funkcemi do PostgreSQL?
--------------------------------------------------------------------------------
-
-Po�lete sv� roz���en� do konference pgsql-hackers, a ono pak mo�n�
-skon�� v podadres��i contrib.
-
-5.3 Jak napsat funkci v C vracej�c� ntici?
-------------------------------------------
-
-Funkce vracej�c� tabulky jsou podporovan� PostgreSQL 7.3 a vy��� pro
-jazyky C, PL/PgSQL a SQL. V�ce naleznete v The Programmer's Guide.
-P��klady t�chto funkc� pro C naleznete v contrib/tablefunc.
-
-5.4 Modifikoval jsem zdrojov� soubory. Tato zm�na nebyla p�i rekompilaci vzata v potaz. Pro�?
----------------------------------------------------------------------------------------------
-
-Makefile nem� informace o z�vislostech mezi hlavi�kov�mi soubory. Mus�te
-prov�st make clean a pak make. Pokud pou��v�te gcc, m��ete pou��t
-p�ep�na� --enable-depend p��kazu configure k automatick�mu �e�en�
-z�vislost� p�eklada�em.
-
-
-[1] http://developer.postgresql.org/todo.php
-[2] http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM
-[3] http://postgresql.ok.cz/PostgreSQL%20Administrator%27sGuide
-
+    4.22) Pro� jsou moje vno�en� dotazy pou��vaj�c� IN tak pomal�?
+    
+   D��v�j�� verze (p�ed 7.4) spojovali vno�en� dotazy k vn�j��m
+   sekven�n�m �ten�m v�sledku poddotazu pro ka�d� ��dek vn�j��ho dotazu.
+   Pokud poddotaz vr�til n�kolik m�lo ��dk� IN bylo rychl�. Pro ostatn�
+   p��pady je vhodn� nahradit IN EXISTS:
+    SELECT *
+    FROM tab
+    WHERE col IN (SELECT subcol FROM subtab);
+
+   na:
+   SELECT *
+   FROM tab
+   WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
+
+   Pro urychlen� vytvo�ete index pro subcol.
+   
+   Ve verzi 7.4 a pozd�j��ch, IN pou��v� stejn� sofistikovanou techniku
+   spojov�n� tabulek jako ostatn� dotazy a je preferovan� p�ed EXISTS.
+   
+    4.23) Jak prov�st vn�j�� spojen� (outer join)?
+    
+   PostgreSQL podporuje vn�j�� spojen� tabulek standardn�mi SQL p��kazy.
+   Zde jsou dva p��klady:
+    SELECT *
+    FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
+
+   nebo
+    SELECT *
+    FROM t1 LEFT OUTER JOIN USING (col);
+
+   Tyto identick� dotazy napoj� t1.col na t2.col a je�t� p�id�
+   nep�ipojen� ��dky z t1 (kter� nemaj� obdoby v t2). Prav� spojen�
+   (RIGHT JOIN) p�id� nep�ipojen� ��dky z t2. FULL JOIN vr�t� v�echny
+   ��dky, v�etn� nep�ipojen�ch z tbulek t1 a t2. Kl��ov� slovo OUTER je
+   nepovinn� a v�e se na LEFT, RIGHT a FULL join. B�n� spojen� se
+   naz�v� INNER JOIN.
+   
+   V d��v�j��ch verz�ch se vn�j�� spojen� tabulek mohlo simulovat pomoc�
+   UNION a NOT IN. Nap��klad pro spojen� tabulek tab1 a tab2, je
+   n�sleduj�c� dotaz ekvivalentn� k vn�j��mu spojen� dvou tabulek:
+    SELECT tab1.col2, tab2.col2
+    FROM tab1, tab2
+    WHERE tab1.col1 = tab2.col1
+    UNION ALL
+    SELECT tab1.col2, NULL
+    FROM tab1
+    WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
+    ORDER BY col1;
+
+    4.24) Jak prov�st dotaz z v�ce datab�z�?
+    
+   PostgreSQL nepodporuje dotazy do jin� ne� aktu�ln� datab�ze.
+   
+   contrib/dblink nab�z� funkce umo��uj�c� proveden� dotazu v jin�
+   datab�zi. Klient si m��e otev��t simult�ln� p�ipojen� do r�zn�ch db
+   bez omezen�.
+   
+    4.25) M��e funkce vr�tit v�ce ��dk� nebo sloupc�?
+    
+   V PostgreSQL 7.3 m��ete jednodu�e vracet v�ce ��dk� nebo sloupc� z
+   funkce, viz:
+   http://techdocs.postgresql.org/guides/SetReturningFunctions.
+   
+    4.26) Pro� nelze spolehliv� vytv��et a ru�it do�asn� tabulky v PL/pgSQL
+    funkc�ch?
+    
+   P�elo�en� k�d PL/pgSQL funkce je ulo�en ve vyrovn�vac� pam�ti, tj.
+   funkce je p�ekl�d�na pouze p�i zm�n� k�du, nikoliv p�ed ka�d�m vol�n�m
+   funkce. Necht�n�m vedlej��m efektem je, �e vol�n� funkce sel�e, kdy�
+   se funkce odkazuje na do�asnou tabulku, pokud tato tabulka byla od
+   p�ekladu funkce zru�ena (a�koliv ji� byla znovu vytvo�ena a existuje).
+   Jedin�m �e�en�m probl�mu je p��stup k do�asn� tabulce pomoc� EXECUTE,
+   tj. dynamick� prov�d�n� dotazu. Tento p��kaz zajist� opakovan� p�eklad
+   dotazu p�i ka�d�m vol�n� funkce.
+   
+    4.27) Jak� jsou mo�nosti replikace datab�z�?
+    
+   Existuje n�kolik dostupn�ch �e�en� master/slave replikac�, tj umo��uj�
+   modifikace master datab�ze a slave datab�z�m umo��uj� pouze �ten�. Na
+   konci http://gborg.PostgreSQL.org/genpage?replication_research najdete
+   jejich seznam. Na �e�en� multi-master replikaci se pracuje na
+   http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
+   
+    4.28) Jak� jsou mo�nosti �ifrov�n� datab�z�?
+    
+     * contrib/pgcrypto obsahuje �ifrovac� funkce pou�iteln� v SQL
+       dotazech.
+     * K �ifrov�n� p�enosu dat z klienta na server, mus� b�t server
+       p�elo�en s podporou ssl a p�ep�na� ssl v postgresql.conf mus� b�t
+       nastaven na hodnotu true. Klient mus� m�t vytvo�en z�znam hostssl
+       v pg_hba.conf a tak� m�t povolen re�im ssl. Lze pou��t i jin�
+       prost�edky, nejen nativn� podporu ssl v PostgreSQL, nap�. stunel a
+       ssh.
+     * Hesla u�ivatel� datab�ze jsou za�ifrov�na po��naje verz� 7.3. Ve
+       star��ch verz�ch toto chov�n� muselo b�t vynuceno volbou
+       PASSWORD_ENCRYPTION v postgresql.conf
+     * Server m��e b�et na �ifrovan�m souborov�m syst�mu.
+     _________________________________________________________________
+   
+                           Roz�i�ov�n� PostgreSQL
+                                      
+    5.1) Napsal jsem UDF funkci, PostgreSQL v�ak kon�� dump core?
+    
+   Probl�m m��e b�t zp�soben mnoha okolnostmi. Vyzkou�ejte si svoji
+   funkci nejd��ve v n�jak� jednoduch� aplikaci.
+   
+    5.2) Jak mohu p�isp�t n�jak�mi �ikovn�mi datov�mi typy a funkcemi do
+    PostgreSQL?
+    
+   Po�lete sv� roz���en� do konference pgsql-hackers, a ono pak mo�n�
+   skon�� v podadres��i contrib.
+   
+    5.3) Jak napsat funkci v C vracej�c� ntici?
+    
+   Funkce vracej�c� tabulky jsou podporovan� PostgreSQL 7.3 a vy��� pro
+   jazyky C, PL/PgSQL a SQL. V�ce naleznete v The Programmer's Guide.
+   P��klady t�chto funkc� pro C naleznete v contrib/tablefunc.
+   
+    5.4) Modifikoval jsem zdrojov� soubory. Tato zm�na nebyla p�i rekompilaci
+    vzata v potaz. Pro�?
+    
+   Makefile nem� informace o z�vislostech mezi hlavi�kov�mi soubory.
+   Mus�te prov�st make clean a pak make. Pokud pou��v�te gcc, m��ete
+   pou��t p�ep�na� --enable-depend p��kazu configure k automatick�mu
+   �e�en� z�vislost� p�eklada�em.
diff --git a/doc/FAQ_farsi b/doc/FAQ_farsi
index c8ff959..95b28bb 100644
--- a/doc/FAQ_farsi
+++ b/doc/FAQ_farsi
@@ -1,139 +1,195 @@
-PostgreSQL FAQسوالاتي كه اغلب در مورد PostgreSQL‌ پرسيده مي شوند
-تاريخ آخرين اصلاح اين فايل: 28 شهریور 1383 هجری شمسی
-نگهدارنده اصلي فايل (زبان انگليسي)در حال حاضر : Bruce Momjian 
-pgman@candle.pha.pa.us
-نگهدارنده فايل به زبان فارسي: m.taghizadeh@imenafzar.net  محمود تقي‌زاده مهرجردی
-
-آخرين نسخه اين فايل را مي‌توانيد از اين آدرس بگيريد  
-http://www.PostgreSQL.org/docs/faqs/FAQ.html
-سوالاتي كه در مورد يك سکوی(پلتفرم) خاص است در اين آدرس جواب داده شده اند  
+PostgreSQL FAQØ³ÙˆØ§Ù„Ø§ØªÙŠ ÙƒÙ‡ Ø§ØºÙ„Ø¨ Ø¯Ø± Ù…ÙˆØ±Ø¯ PostgreSQLâ€Œ 
+Ù¾Ø±Ø³ÙŠØ¯Ù‡ Ù…ÙŠ Ø´ÙˆÙ†Ø¯
+ØªØ§Ø±ÙŠØ® Ø¢Ø®Ø±ÙŠÙ† Ø§ØµÙ„Ø§Ø­ Ø§ÙŠÙ† ÙØ§ÙŠÙ„: 28 Ø´Ù‡Ø±ÛŒÙˆØ± 1383 Ù‡Ø¬Ø±ÛŒ 
+Ø´Ù…Ø³ÛŒ
+Ù†Ú¯Ù‡Ø¯Ø§Ø±Ù†Ø¯Ù‡ Ø§ØµÙ„ÙŠ ÙØ§ÙŠÙ„ (Ø²Ø¨Ø§Ù† Ø§Ù†Ú¯Ù„ÙŠØ³ÙŠ)Ø¯Ø± Ø­Ø§Ù„ 
+Ø­Ø§Ø¶Ø± : Bruce Momjian pgman@candle.pha.pa.us
+Ù†Ú¯Ù‡Ø¯Ø§Ø±Ù†Ø¯Ù‡ ÙØ§ÙŠÙ„ Ø¨Ù‡ Ø²Ø¨Ø§Ù† ÙØ§Ø±Ø³ÙŠ: m.taghizadeh@imenafzar.net 
+ Ù…Ø­Ù…ÙˆØ¯ ØªÙ‚ÙŠâ€ŒØ²Ø§Ø¯Ù‡ Ù…Ù‡Ø±Ø¬Ø±Ø¯ÛŒ
+
+Ø¢Ø®Ø±ÙŠÙ† Ù†Ø³Ø®Ù‡ Ø§ÙŠÙ† ÙØ§ÙŠÙ„ Ø±Ø§ Ù…ÙŠâ€ŒØªÙˆØ§Ù†ÙŠØ¯ Ø§Ø² Ø§ÙŠÙ† 
+Ø¢Ø¯Ø±Ø³ Ø¨Ú¯ÙŠØ±ÙŠØ¯  http://www.PostgreSQL.org/docs/faqs/FAQ.html
+Ø³ÙˆØ§Ù„Ø§ØªÙŠ ÙƒÙ‡ Ø¯Ø± Ù…ÙˆØ±Ø¯ ÙŠÙƒ Ø³Ú©ÙˆÛŒ(Ù¾Ù„ØªÙØ±Ù…) Ø®Ø§Øµ Ø§Ø³Øª Ø¯Ø± 
+Ø§ÙŠÙ† Ø¢Ø¯Ø±Ø³ Ø¬ÙˆØ§Ø¨ Ø¯Ø§Ø¯Ù‡ Ø´Ø¯Ù‡ Ø§Ù†Ø¯  
 http://www.PostgreSQL.org/docs/index.html
 
 
 
-سوالات عمومي
-1.1) PostgreSQL چيست و چگونه بايد آن را تلفظ كرد؟
-1.2) قانون كپي رايت‌ (حقوق معنوي) در مورد PostgreSQL  به چه صورت است؟
-1.3) PostgreSQL‌ روي چه نوع يونيكسهايي اجرا مي‌شود؟
-1.4) روي چه محيطهاي غير يونيكسي مي‌توان آن را اجرا كرد؟
-1.5) PostgreSQL را از كجا مي‌توانم بگيرم؟
-1.6) از كجا خدمات پشتيباني بگيرم؟
-1.7) آخرين نسخه اعلام شده چيست؟
-1.8) چه مستندات و راهنمائيهايي وجود دارند؟
-1.9) چگونه مي‌توانم ازاشكالات شناخته شده و يا امكاناتي كه در اين پايگاه داده 
-وجود ندارد  مطلع شوم؟
-1.10) چگونه مي‌توانم زبان SQL را ياد بگيرم؟
-1.11) آيا PostgreSQL مشكل Y2K‌ دارد يا خير؟
-1.12) چگونه مي‌توانم به تيم برنامه نويس PostgreSQL ملحق شوم؟
-1.13) چگونه مي‌توانم يك اشكال را به گروه برنامه نويس اعلام كنم؟
-1.14)  وضعيت PostgreSQL‌ در مقايسه با ساير DBMSها به چه صورت است؟
-1.15) من چگونه مي‌توانم از نظر مالي به PostgreSQL كمك كنم؟
-
-سوالات مربوط به استفاده از پايگاه داده
-2.1) آيا هيچ درايور ODBC‌ براي PostgreSQL وجود دارد؟
-2.2) چه ابزارهايي براي استفاده از PostgreSQL‌ با صفحات وب وجود دارد؟
-2.3) آيا PostgreSQL‌ يك واسط كاربري گرافيكي دارد؟
-2.4) با چه زبانهاي برنامه‌نويسي مي‌توان با PostgreSQL‌ ارتباط برقرار كرد؟
-
-سوالات مربوط به راهبري
-3.1) چگونه مي‌توانم PostgreSQL‌ را در شاخه‌اي غير از /usr/local/pgsql/  نصب كنم؟
-3.2) چرا موقعي كه من برنامه postmaster‌ را اجرا مي كنم پيام Bad system call‌ و 
-يا core dump ‌مي‌گيرم؟
-3.3) چرا موقعي كه من سعي مي‌كنم برنامه postmaster‌ را اجرا كنم خطاي 
-IpcMemoryCreate  مي‌گيرم؟
-3.4) چرا موقعي كه من سعي مي‌كنم برنامه postmaster‌ را اجرا كنم خطاي  
-IpcSemaphoreCreate مي‌گيرم؟
-3.5) چگونه مي‌توانم اتصالات ساير ماشينها را كنترل كنم؟
-3.6) براي كارايي بالاتر و بهتر پايگاه داده من چه تنظيماتي را بايد انجام دهم؟
-3.7) چه امكاناتي براي پيدا كردن اشكال‌ وجود دارد؟
-3.8) چرا موقعي كه من مي‌خواهم به پايگاه داده وصل شوم پيام "Sorry, too many 
-clients" ‌مي‌گيرم؟
-3.9) در شاخه  pgsql_tmp  چه چيزي قرار دارد؟
-3.10) چرا براي به روز كردن نسخه پايگاه داده من بايد كل داده ها را dump‌ و مجدداً 
-restore كنم؟
-3.11) از چه سخت افزاري بايد استفاده كنم؟
-
-سوالات عملياتي
-4.1) تفاوت بين binary cursors و Normal cursors چيست؟
-4.2) من چگونه مي‌توانم فقط روي چند رديف اول يا يك رديف تصادفي درخواست SELECT‌ 
-بزنم؟
-4.3) من چگونه مي‌توانم ليستي از جداول يا ساير چيزهايي كه در psql‌ وجود دارد را 
-ببينم؟
-4.4) چگونه يك ستون جدول را حذف مي‌كنيد؟ چگونه نوع داده آن را عوض كنيم؟
-4.5) حداكثر اندازه يك رديف،‌ جدول و خود پايگاه داده چقدر است؟
-4.6) چقدر فضاي ديسك سخت براي ذخيره كردن داده‌‌هاي يك فايل متني مورد نياز است؟
-4.7) چگونه مي‌توانم بفهمم كه چه كاربران،‌ پايگاه داده،‌ نمايه و جداولي در سيستم 
-تعريف شده است؟
-4.8) چرا درخواستهاي من كند اجرا مي‌شوند يا چرا از نمايه ها استفاده نمي‌كنند؟
-4.9) چگونه مي‌توانم نحوه بررسي درخواست را توسط بهينه‌ساز درخواستها مشاهده كنم؟
-4.10) نمايه R-tree‌ چيست؟
-4.11) بهينه ساز تكويني درخواست چيست؟ (Genetic Query Optimizer)
-4.12) چگونه از عبارات منظم براي جستجو استفاده كنم؟ چگونه جستجويي انجام دهم كه 
-حساس به متن نباشد؟ چگونه براي يك جستجوي غير حساس به متن از نمايه استفاده كنم؟
-4.13) چگونه مي‌توانم در يك درخواست تشخيص دهم كه يك فيلد NULL‌ است؟
-4.14) تفاوت بين گونه‌هاي مختلف character چيست؟
-4.15.1) چگونه مي‌توانم يك فيلد سريال يا افزايشي ايجاد كنم؟
-4.15.2) چگونه مي‌توانم مقدار يك درج سريالي را بدانم؟
-4.15.3) آیا توابع ()nextval و ()currval منجر به ایجاد شرایط race برای سایر 
-کاربران می شوند؟
-4.15.4) چرا اعداد سریالی مربوط به تراکنشهای abort شده مجدداً استفاده نمی شود؟ 
-چرا بین اعداد سریالی یک فاصله خالی ایجاد می شود؟
-4.16) OID و TID چه هستند؟
-4.17) معني بعضي از ترمها و كلماتي كه در PostgreSQL‌ استفاده مي‌شود چيست؟
-4.18) چرا من خطاي "ERROR: Memory exhausted in AllocSetAlloc" مي‌گيرم؟
-4.19) از كجا تشخيص دهم كه ويرايش يا نسخه PostgreSQLيي كه من استفاده مي‌كنم چيست؟
-4.20) چرا در حین اجرای عملیات روی large-objectها خطای "invalid large obj 
-descriptor"به وجود می آید؟
-4.21) چگونه يك ستون ايجاد كنم كه مقدار زمان جاري را به عنوان مقدار پيش‌فرض داشته 
-باشد؟
-4.22) چرا زير درخواستهايي كه از IN استفاده مي‌كنند كند هستند؟
-4.23) چگونه مي‌توانم يك الحاق خارجي (outer join) انجام دهم؟
-4.24) چگونه مي‌توان درخواستهايي از چند پايگاه داده توليد كرد؟
-4.25) چگونه خروجي يك تابع مي‌تواند  چند رديف يا ستون باشد؟
-4.26)  در توابع PL/PgSQL چرا نمي‌توان با اطمينان جداول موقت را ايجاد يا حذف كرد؟
-4.27) چه گزينه‌هايي براي تكرار (replication) وجود دارد؟
-4.28) چه گزينه‌هايي براي رمزنگاري وجود دارد؟
-
-توسعه PostgreSQL
-5.1) من يك تابع نوشته‌ام. چگونه آن را در psql اجرا كنم؟ چرا با اجراي آن core 
-dump مي‌گيرم؟
-5.2) چگونه مي‌توانم در توليد نوع‌ها و توابع جديد و جالب براي PostgreSQL‌ همكاري 
-و مشاركت داشته باشم.
-5.3) چگونه مي‌توانم يك تابع به زبان C بنويسم كه خروجي آن يك ‌tuple  (چند تايي) 
-باشد؟
-5.4) من يك فايل منبع را عوض كرده ام چرا در عمليات كامپيل مجدد آن تغيير ديده 
-نمي‌شود؟
-
-
-
-
-سوالات عمومي
-1.1) PostgreSQL چيست و چگونه آن را بايد تلفظ كرد؟
-PostgreSQL به صورت Post-Gres-Q-L‌ تلفظ مي‌شود. يك فايل صوتي در آدرس 
-http://www.postfresql.org/postgresql.mp3‌ براي كساني كه مايلند تلفظ صحيح را 
-بشنوند وجود دارد.
-PostgreSQL از روي سيستم مديريت پايگاه داده POSTGRES توسعه داده شده است (هنوز هم 
-بعضي مواقع براي سادگي به آن Postgres گفته مي‌شود) كه يك نمونه تحقيقاتي از پايگاه 
-داده‌هاي نسل بعد است. PostgreSQL همان الگوي داده قوي و انواع داده  را حفظ كرده 
-است ولي زبان PostQuel را با يك زيرمجموعه پيشرفته از SQL جايگزين كرده است. 
-PostgreSQL متن باز بوده و متن كامل آن در دسترس است.
-PostgreSQL  توسط يك تيم برنامه‌نويس كه همگي در گروه پست الكترونيك برنامه‌نويسان 
-PostgreSQL  عضو هستند، انجام مي‌شود. هماهنگ كننده اصلي در حال حاضر Marc G. 
-Fournier‌ به آدرس scrappy@PostgreSQL.org  مي‌باشد. (براي ديدن نحوه ملحق شدن به 
-اين تيم قسمت 1.6 را ببينيد). اين تيم در حاضر مسئوليت تمام مسائل مربوط به 
-برنامه‌نويسي PostgreSQL را بر عهده دارد. اين يك پروژه گروهي است و تحت كنترل هيچ 
-شركتي نيست. براي اطلاعات بيشتر در مورد اين تيم به آدرس 
-http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html مراجعه كنيد.
-اولين نسخه PostgreSQL‌ توسط Andrew Yu and Jolly Chen به وجود آمد. افراد بسياري 
-در توسعه و رفع اشكال و انتقال آن شركت كرده‌اند. متن اصلي Postgres كه PostgreSQL 
-از روي آن نوشته شده است، توسط تعداد زيادي دانشجوي كارشناسي ارشدو دانشجوي 
-كارشناسي و تيم برنامه‌نويسي كه تحت نظر پروفسور Michael Stonebrake در دانشگاه 
-بركلي،‌كاليفرنيا كار مي‌كرده‌اند نوشته شده است.
-نام اصلي نرم افزار در دانشگاه بركلي Postgres‌ بود. در سال 1995 بعد از اضافه شدن 
-SQL نام آن به Postgres95 تغيير داده شد. در سال 1996 نام آن به PostgreSQL تغيير 
-داده شد.
-1.2) قوانين كپي رايت در مورد PostgreSQL به چه صورت است؟
-PostgreSQL تحت قانون كپي رايت زير قرار دارد:
+Ø³ÙˆØ§Ù„Ø§Øª Ø¹Ù…ÙˆÙ…ÙŠ
+1.1) PostgreSQL Ú†ÙŠØ³Øª Ùˆ Ú†Ú¯ÙˆÙ†Ù‡ Ø¨Ø§ÙŠØ¯ Ø¢Ù† Ø±Ø§ ØªÙ„ÙØ¸ ÙƒØ±Ø¯ØŸ
+1.2) Ù‚Ø§Ù†ÙˆÙ† ÙƒÙ¾ÙŠ Ø±Ø§ÙŠØªâ€Œ (Ø­Ù‚ÙˆÙ‚ Ù…Ø¹Ù†ÙˆÙŠ) Ø¯Ø± Ù…ÙˆØ±Ø¯ 
+PostgreSQL  Ø¨Ù‡ Ú†Ù‡ ØµÙˆØ±Øª Ø§Ø³ØªØŸ
+1.3) PostgreSQLâ€Œ Ø±ÙˆÙŠ Ú†Ù‡ Ù†ÙˆØ¹ ÙŠÙˆÙ†ÙŠÙƒØ³Ù‡Ø§ÙŠÙŠ Ø§Ø¬Ø±Ø§ 
+Ù…ÙŠâ€ŒØ´ÙˆØ¯ØŸ
+1.4) Ø±ÙˆÙŠ Ú†Ù‡ Ù…Ø­ÙŠØ·Ù‡Ø§ÙŠ ØºÙŠØ± ÙŠÙˆÙ†ÙŠÙƒØ³ÙŠ Ù…ÙŠâ€ŒØªÙˆØ§Ù† Ø¢Ù† Ø±Ø§ 
+Ø§Ø¬Ø±Ø§ ÙƒØ±Ø¯ØŸ
+1.5) PostgreSQL Ø±Ø§ Ø§Ø² ÙƒØ¬Ø§ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… Ø¨Ú¯ÙŠØ±Ù…ØŸ
+1.6) Ø§Ø² ÙƒØ¬Ø§ Ø®Ø¯Ù…Ø§Øª Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ Ø¨Ú¯ÙŠØ±Ù…ØŸ
+1.7) Ø¢Ø®Ø±ÙŠÙ† Ù†Ø³Ø®Ù‡ Ø§Ø¹Ù„Ø§Ù… Ø´Ø¯Ù‡ Ú†ÙŠØ³ØªØŸ
+1.8) Ú†Ù‡ Ù…Ø³ØªÙ†Ø¯Ø§Øª Ùˆ Ø±Ø§Ù‡Ù†Ù…Ø§Ø¦ÙŠÙ‡Ø§ÙŠÙŠ ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ù†Ø¯ØŸ
+1.9) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… Ø§Ø²Ø§Ø´ÙƒØ§Ù„Ø§Øª Ø´Ù†Ø§Ø®ØªÙ‡ Ø´Ø¯Ù‡ Ùˆ ÙŠØ§ 
+Ø§Ù…ÙƒØ§Ù†Ø§ØªÙŠ ÙƒÙ‡ Ø¯Ø± Ø§ÙŠÙ† Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯  
+Ù…Ø·Ù„Ø¹ Ø´ÙˆÙ…ØŸ
+1.10) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… Ø²Ø¨Ø§Ù† SQL Ø±Ø§ ÙŠØ§Ø¯ Ø¨Ú¯ÙŠØ±Ù…ØŸ
+1.11) Ø¢ÙŠØ§ PostgreSQL Ù…Ø´ÙƒÙ„ Y2Kâ€Œ Ø¯Ø§Ø±Ø¯ ÙŠØ§ Ø®ÙŠØ±ØŸ
+1.12) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… Ø¨Ù‡ ØªÙŠÙ… Ø¨Ø±Ù†Ø§Ù…Ù‡ Ù†ÙˆÙŠØ³ PostgreSQL 
+Ù…Ù„Ø­Ù‚ Ø´ÙˆÙ…ØŸ
+1.13) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… ÙŠÙƒ Ø§Ø´ÙƒØ§Ù„ Ø±Ø§ Ø¨Ù‡ Ú¯Ø±ÙˆÙ‡ 
+Ø¨Ø±Ù†Ø§Ù…Ù‡ Ù†ÙˆÙŠØ³ Ø§Ø¹Ù„Ø§Ù… ÙƒÙ†Ù…ØŸ
+1.14)  ÙˆØ¶Ø¹ÙŠØª PostgreSQLâ€Œ Ø¯Ø± Ù…Ù‚Ø§ÙŠØ³Ù‡ Ø¨Ø§ Ø³Ø§ÙŠØ± DBMSÙ‡Ø§ Ø¨Ù‡ 
+Ú†Ù‡ ØµÙˆØ±Øª Ø§Ø³ØªØŸ
+1.15) Ù…Ù† Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… Ø§Ø² Ù†Ø¸Ø± Ù…Ø§Ù„ÙŠ Ø¨Ù‡ PostgreSQL 
+ÙƒÙ…Ùƒ ÙƒÙ†Ù…ØŸ
+
+Ø³ÙˆØ§Ù„Ø§Øª Ù…Ø±Ø¨ÙˆØ· Ø¨Ù‡ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡
+2.1) Ø¢ÙŠØ§ Ù‡ÙŠÚ† Ø¯Ø±Ø§ÙŠÙˆØ± ODBCâ€Œ Ø¨Ø±Ø§ÙŠ PostgreSQL ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯ØŸ
+2.2) Ú†Ù‡ Ø§Ø¨Ø²Ø§Ø±Ù‡Ø§ÙŠÙŠ Ø¨Ø±Ø§ÙŠ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² PostgreSQLâ€Œ Ø¨Ø§ 
+ØµÙØ­Ø§Øª ÙˆØ¨ ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯ØŸ
+2.3) Ø¢ÙŠØ§ PostgreSQLâ€Œ ÙŠÙƒ ÙˆØ§Ø³Ø· ÙƒØ§Ø±Ø¨Ø±ÙŠ Ú¯Ø±Ø§ÙÙŠÙƒÙŠ Ø¯Ø§Ø±Ø¯ØŸ
+2.4) Ø¨Ø§ Ú†Ù‡ Ø²Ø¨Ø§Ù†Ù‡Ø§ÙŠ Ø¨Ø±Ù†Ø§Ù…Ù‡â€ŒÙ†ÙˆÙŠØ³ÙŠ Ù…ÙŠâ€ŒØªÙˆØ§Ù† Ø¨Ø§ 
+PostgreSQLâ€Œ Ø§Ø±ØªØ¨Ø§Ø· Ø¨Ø±Ù‚Ø±Ø§Ø± ÙƒØ±Ø¯ØŸ
+
+Ø³ÙˆØ§Ù„Ø§Øª Ù…Ø±Ø¨ÙˆØ· Ø¨Ù‡ Ø±Ø§Ù‡Ø¨Ø±ÙŠ
+3.1) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… PostgreSQLâ€Œ Ø±Ø§ Ø¯Ø± Ø´Ø§Ø®Ù‡â€ŒØ§ÙŠ ØºÙŠØ± 
+Ø§Ø² /usr/local/pgsql/  Ù†ØµØ¨ ÙƒÙ†Ù…ØŸ
+3.2) Ú†Ø±Ø§ Ù…ÙˆÙ‚Ø¹ÙŠ ÙƒÙ‡ Ù…Ù† Ø¨Ø±Ù†Ø§Ù…Ù‡ postmasterâ€Œ Ø±Ø§ Ø§Ø¬Ø±Ø§ Ù…ÙŠ 
+ÙƒÙ†Ù… Ù¾ÙŠØ§Ù… Bad system callâ€Œ Ùˆ ÙŠØ§ core dump â€ŒÙ…ÙŠâ€ŒÚ¯ÙŠØ±Ù…ØŸ
+3.3) Ú†Ø±Ø§ Ù…ÙˆÙ‚Ø¹ÙŠ ÙƒÙ‡ Ù…Ù† Ø³Ø¹ÙŠ Ù…ÙŠâ€ŒÙƒÙ†Ù… Ø¨Ø±Ù†Ø§Ù…Ù‡ postmasterâ€Œ 
+Ø±Ø§ Ø§Ø¬Ø±Ø§ ÙƒÙ†Ù… Ø®Ø·Ø§ÙŠ IpcMemoryCreate  Ù…ÙŠâ€ŒÚ¯ÙŠØ±Ù…ØŸ
+3.4) Ú†Ø±Ø§ Ù…ÙˆÙ‚Ø¹ÙŠ ÙƒÙ‡ Ù…Ù† Ø³Ø¹ÙŠ Ù…ÙŠâ€ŒÙƒÙ†Ù… Ø¨Ø±Ù†Ø§Ù…Ù‡ postmasterâ€Œ 
+Ø±Ø§ Ø§Ø¬Ø±Ø§ ÙƒÙ†Ù… Ø®Ø·Ø§ÙŠ  IpcSemaphoreCreate Ù…ÙŠâ€ŒÚ¯ÙŠØ±Ù…ØŸ
+3.5) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… Ø§ØªØµØ§Ù„Ø§Øª Ø³Ø§ÙŠØ± Ù…Ø§Ø´ÙŠÙ†Ù‡Ø§ Ø±Ø§ 
+ÙƒÙ†ØªØ±Ù„ ÙƒÙ†Ù…ØŸ
+3.6) Ø¨Ø±Ø§ÙŠ ÙƒØ§Ø±Ø§ÙŠÙŠ Ø¨Ø§Ù„Ø§ØªØ± Ùˆ Ø¨Ù‡ØªØ± Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ù…Ù† 
+Ú†Ù‡ ØªÙ†Ø¸ÙŠÙ…Ø§ØªÙŠ Ø±Ø§ Ø¨Ø§ÙŠØ¯ Ø§Ù†Ø¬Ø§Ù… Ø¯Ù‡Ù…ØŸ
+3.7) Ú†Ù‡ Ø§Ù…ÙƒØ§Ù†Ø§ØªÙŠ Ø¨Ø±Ø§ÙŠ Ù¾ÙŠØ¯Ø§ ÙƒØ±Ø¯Ù† Ø§Ø´ÙƒØ§Ù„â€Œ ÙˆØ¬ÙˆØ¯ 
+Ø¯Ø§Ø±Ø¯ØŸ
+3.8) Ú†Ø±Ø§ Ù…ÙˆÙ‚Ø¹ÙŠ ÙƒÙ‡ Ù…Ù† Ù…ÙŠâ€ŒØ®ÙˆØ§Ù‡Ù… Ø¨Ù‡ Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ 
+ÙˆØµÙ„ Ø´ÙˆÙ… Ù¾ÙŠØ§Ù… "Sorry, too many clients" â€ŒÙ…ÙŠâ€ŒÚ¯ÙŠØ±Ù…ØŸ
+3.9) Ø¯Ø± Ø´Ø§Ø®Ù‡  pgsql_tmp  Ú†Ù‡ Ú†ÙŠØ²ÙŠ Ù‚Ø±Ø§Ø± Ø¯Ø§Ø±Ø¯ØŸ
+3.10) Ú†Ø±Ø§ Ø¨Ø±Ø§ÙŠ Ø¨Ù‡ Ø±ÙˆØ² ÙƒØ±Ø¯Ù† Ù†Ø³Ø®Ù‡ Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ù…Ù† 
+Ø¨Ø§ÙŠØ¯ ÙƒÙ„ Ø¯Ø§Ø¯Ù‡ Ù‡Ø§ Ø±Ø§ dumpâ€Œ Ùˆ Ù…Ø¬Ø¯Ø¯Ø§Ù‹ restore ÙƒÙ†Ù…ØŸ
+3.11) Ø§Ø² Ú†Ù‡ Ø³Ø®Øª Ø§ÙØ²Ø§Ø±ÙŠ Ø¨Ø§ÙŠØ¯ Ø§Ø³ØªÙØ§Ø¯Ù‡ ÙƒÙ†Ù…ØŸ
+
+Ø³ÙˆØ§Ù„Ø§Øª Ø¹Ù…Ù„ÙŠØ§ØªÙŠ
+4.1) ØªÙØ§ÙˆØª Ø¨ÙŠÙ† binary cursors Ùˆ Normal cursors Ú†ÙŠØ³ØªØŸ
+4.2) Ù…Ù† Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… ÙÙ‚Ø· Ø±ÙˆÙŠ Ú†Ù†Ø¯ Ø±Ø¯ÙŠÙ Ø§ÙˆÙ„ ÙŠØ§ 
+ÙŠÙƒ Ø±Ø¯ÙŠÙ ØªØµØ§Ø¯ÙÙŠ Ø¯Ø±Ø®ÙˆØ§Ø³Øª SELECTâ€Œ Ø¨Ø²Ù†Ù…ØŸ
+4.3) Ù…Ù† Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… Ù„ÙŠØ³ØªÙŠ Ø§Ø² Ø¬Ø¯Ø§ÙˆÙ„ ÙŠØ§ Ø³Ø§ÙŠØ± 
+Ú†ÙŠØ²Ù‡Ø§ÙŠÙŠ ÙƒÙ‡ Ø¯Ø± psqlâ€Œ ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯ Ø±Ø§ Ø¨Ø¨ÙŠÙ†Ù…ØŸ
+4.4) Ú†Ú¯ÙˆÙ†Ù‡ ÙŠÙƒ Ø³ØªÙˆÙ† Ø¬Ø¯ÙˆÙ„ Ø±Ø§ Ø­Ø°Ù Ù…ÙŠâ€ŒÙƒÙ†ÙŠØ¯ØŸ Ú†Ú¯ÙˆÙ†Ù‡ 
+Ù†ÙˆØ¹ Ø¯Ø§Ø¯Ù‡ Ø¢Ù† Ø±Ø§ Ø¹ÙˆØ¶ ÙƒÙ†ÙŠÙ…ØŸ
+4.5) Ø­Ø¯Ø§ÙƒØ«Ø± Ø§Ù†Ø¯Ø§Ø²Ù‡ ÙŠÙƒ Ø±Ø¯ÙŠÙØŒâ€Œ Ø¬Ø¯ÙˆÙ„ Ùˆ Ø®ÙˆØ¯ 
+Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ú†Ù‚Ø¯Ø± Ø§Ø³ØªØŸ
+4.6) Ú†Ù‚Ø¯Ø± ÙØ¶Ø§ÙŠ Ø¯ÙŠØ³Ùƒ Ø³Ø®Øª Ø¨Ø±Ø§ÙŠ Ø°Ø®ÙŠØ±Ù‡ ÙƒØ±Ø¯Ù† 
+Ø¯Ø§Ø¯Ù‡â€Œâ€ŒÙ‡Ø§ÙŠ ÙŠÙƒ ÙØ§ÙŠÙ„ Ù…ØªÙ†ÙŠ Ù…ÙˆØ±Ø¯ Ù†ÙŠØ§Ø² Ø§Ø³ØªØŸ
+4.7) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… Ø¨ÙÙ‡Ù…Ù… ÙƒÙ‡ Ú†Ù‡ ÙƒØ§Ø±Ø¨Ø±Ø§Ù†ØŒâ€Œ 
+Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ØŒâ€Œ Ù†Ù…Ø§ÙŠÙ‡ Ùˆ Ø¬Ø¯Ø§ÙˆÙ„ÙŠ Ø¯Ø± Ø³ÙŠØ³ØªÙ… ØªØ¹Ø±ÙŠÙ 
+Ø´Ø¯Ù‡ Ø§Ø³ØªØŸ
+4.8) Ú†Ø±Ø§ Ø¯Ø±Ø®ÙˆØ§Ø³ØªÙ‡Ø§ÙŠ Ù…Ù† ÙƒÙ†Ø¯ Ø§Ø¬Ø±Ø§ Ù…ÙŠâ€ŒØ´ÙˆÙ†Ø¯ ÙŠØ§ 
+Ú†Ø±Ø§ Ø§Ø² Ù†Ù…Ø§ÙŠÙ‡ Ù‡Ø§ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù†Ù…ÙŠâ€ŒÙƒÙ†Ù†Ø¯ØŸ
+4.9) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… Ù†Ø­ÙˆÙ‡ Ø¨Ø±Ø±Ø³ÙŠ Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ø±Ø§ 
+ØªÙˆØ³Ø· Ø¨Ù‡ÙŠÙ†Ù‡â€ŒØ³Ø§Ø² Ø¯Ø±Ø®ÙˆØ§Ø³ØªÙ‡Ø§ Ù…Ø´Ø§Ù‡Ø¯Ù‡ ÙƒÙ†Ù…ØŸ
+4.10) Ù†Ù…Ø§ÙŠÙ‡ R-treeâ€Œ Ú†ÙŠØ³ØªØŸ
+4.11) Ø¨Ù‡ÙŠÙ†Ù‡ Ø³Ø§Ø² ØªÙƒÙˆÙŠÙ†ÙŠ Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ú†ÙŠØ³ØªØŸ (Genetic Query 
+Optimizer)
+4.12) Ú†Ú¯ÙˆÙ†Ù‡ Ø§Ø² Ø¹Ø¨Ø§Ø±Ø§Øª Ù…Ù†Ø¸Ù… Ø¨Ø±Ø§ÙŠ Ø¬Ø³ØªØ¬Ùˆ Ø§Ø³ØªÙØ§Ø¯Ù‡ 
+ÙƒÙ†Ù…ØŸ Ú†Ú¯ÙˆÙ†Ù‡ Ø¬Ø³ØªØ¬ÙˆÙŠÙŠ Ø§Ù†Ø¬Ø§Ù… Ø¯Ù‡Ù… ÙƒÙ‡ Ø­Ø³Ø§Ø³ Ø¨Ù‡ Ù…ØªÙ† 
+Ù†Ø¨Ø§Ø´Ø¯ØŸ Ú†Ú¯ÙˆÙ†Ù‡ Ø¨Ø±Ø§ÙŠ ÙŠÙƒ Ø¬Ø³ØªØ¬ÙˆÙŠ ØºÙŠØ± Ø­Ø³Ø§Ø³ Ø¨Ù‡ Ù…ØªÙ† 
+Ø§Ø² Ù†Ù…Ø§ÙŠÙ‡ Ø§Ø³ØªÙØ§Ø¯Ù‡ ÙƒÙ†Ù…ØŸ
+4.13) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… Ø¯Ø± ÙŠÙƒ Ø¯Ø±Ø®ÙˆØ§Ø³Øª ØªØ´Ø®ÙŠØµ Ø¯Ù‡Ù… 
+ÙƒÙ‡ ÙŠÙƒ ÙÙŠÙ„Ø¯ NULLâ€Œ Ø§Ø³ØªØŸ
+4.14) ØªÙØ§ÙˆØª Ø¨ÙŠÙ† Ú¯ÙˆÙ†Ù‡â€ŒÙ‡Ø§ÙŠ Ù…Ø®ØªÙ„Ù character Ú†ÙŠØ³ØªØŸ
+4.15.1) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… ÙŠÙƒ ÙÙŠÙ„Ø¯ Ø³Ø±ÙŠØ§Ù„ ÙŠØ§ 
+Ø§ÙØ²Ø§ÙŠØ´ÙŠ Ø§ÙŠØ¬Ø§Ø¯ ÙƒÙ†Ù…ØŸ
+4.15.2) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… Ù…Ù‚Ø¯Ø§Ø± ÙŠÙƒ Ø¯Ø±Ø¬ Ø³Ø±ÙŠØ§Ù„ÙŠ Ø±Ø§ 
+Ø¨Ø¯Ø§Ù†Ù…ØŸ
+4.15.3) Ø¢ÛŒØ§ ØªÙˆØ§Ø¨Ø¹ ()nextval Ùˆ ()currval Ù…Ù†Ø¬Ø± Ø¨Ù‡ Ø§ÛŒØ¬Ø§Ø¯ 
+Ø´Ø±Ø§ÛŒØ· race Ø¨Ø±Ø§ÛŒ Ø³Ø§ÛŒØ± Ú©Ø§Ø±Ø¨Ø±Ø§Ù† Ù…ÛŒ Ø´ÙˆÙ†Ø¯ØŸ
+4.15.4) Ú†Ø±Ø§ Ø§Ø¹Ø¯Ø§Ø¯ Ø³Ø±ÛŒØ§Ù„ÛŒ Ù…Ø±Ø¨ÙˆØ· Ø¨Ù‡ ØªØ±Ø§Ú©Ù†Ø´Ù‡Ø§ÛŒ abort 
+Ø´Ø¯Ù‡ Ù…Ø¬Ø¯Ø¯Ø§Ù‹ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù†Ù…ÛŒ Ø´ÙˆØ¯ØŸ Ú†Ø±Ø§ Ø¨ÛŒÙ† Ø§Ø¹Ø¯Ø§Ø¯ 
+Ø³Ø±ÛŒØ§Ù„ÛŒ ÛŒÚ© ÙØ§ØµÙ„Ù‡ Ø®Ø§Ù„ÛŒ Ø§ÛŒØ¬Ø§Ø¯ Ù…ÛŒ Ø´ÙˆØ¯ØŸ
+4.16) OID Ùˆ TID Ú†Ù‡ Ù‡Ø³ØªÙ†Ø¯ØŸ
+4.17) Ù…Ø¹Ù†ÙŠ Ø¨Ø¹Ø¶ÙŠ Ø§Ø² ØªØ±Ù…Ù‡Ø§ Ùˆ ÙƒÙ„Ù…Ø§ØªÙŠ ÙƒÙ‡ Ø¯Ø± PostgreSQLâ€Œ 
+Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÙŠâ€ŒØ´ÙˆØ¯ Ú†ÙŠØ³ØªØŸ
+4.18) Ú†Ø±Ø§ Ù…Ù† Ø®Ø·Ø§ÙŠ "ERROR: Memory exhausted in AllocSetAlloc" 
+Ù…ÙŠâ€ŒÚ¯ÙŠØ±Ù…ØŸ
+4.19) Ø§Ø² ÙƒØ¬Ø§ ØªØ´Ø®ÙŠØµ Ø¯Ù‡Ù… ÙƒÙ‡ ÙˆÙŠØ±Ø§ÙŠØ´ ÙŠØ§ Ù†Ø³Ø®Ù‡ 
+PostgreSQLÙŠÙŠ ÙƒÙ‡ Ù…Ù† Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÙŠâ€ŒÙƒÙ†Ù… Ú†ÙŠØ³ØªØŸ
+4.20) Ú†Ø±Ø§ Ø¯Ø± Ø­ÛŒÙ† Ø§Ø¬Ø±Ø§ÛŒ Ø¹Ù…Ù„ÛŒØ§Øª Ø±ÙˆÛŒ large-objectÙ‡Ø§ 
+Ø®Ø·Ø§ÛŒ "invalid large obj descriptor"Ø¨Ù‡ ÙˆØ¬ÙˆØ¯ Ù…ÛŒ Ø¢ÛŒØ¯ØŸ
+4.21) Ú†Ú¯ÙˆÙ†Ù‡ ÙŠÙƒ Ø³ØªÙˆÙ† Ø§ÙŠØ¬Ø§Ø¯ ÙƒÙ†Ù… ÙƒÙ‡ Ù…Ù‚Ø¯Ø§Ø± Ø²Ù…Ø§Ù† 
+Ø¬Ø§Ø±ÙŠ Ø±Ø§ Ø¨Ù‡ Ø¹Ù†ÙˆØ§Ù† Ù…Ù‚Ø¯Ø§Ø± Ù¾ÙŠØ´â€ŒÙØ±Ø¶ Ø¯Ø§Ø´ØªÙ‡ Ø¨Ø§Ø´Ø¯ØŸ
+4.22) Ú†Ø±Ø§ Ø²ÙŠØ± Ø¯Ø±Ø®ÙˆØ§Ø³ØªÙ‡Ø§ÙŠÙŠ ÙƒÙ‡ Ø§Ø² IN Ø§Ø³ØªÙØ§Ø¯Ù‡ 
+Ù…ÙŠâ€ŒÙƒÙ†Ù†Ø¯ ÙƒÙ†Ø¯ Ù‡Ø³ØªÙ†Ø¯ØŸ
+4.23) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… ÙŠÙƒ Ø§Ù„Ø­Ø§Ù‚ Ø®Ø§Ø±Ø¬ÙŠ (outer join) 
+Ø§Ù†Ø¬Ø§Ù… Ø¯Ù‡Ù…ØŸ
+4.24) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù† Ø¯Ø±Ø®ÙˆØ§Ø³ØªÙ‡Ø§ÙŠÙŠ Ø§Ø² Ú†Ù†Ø¯ Ù¾Ø§ÙŠÚ¯Ø§Ù‡ 
+Ø¯Ø§Ø¯Ù‡ ØªÙˆÙ„ÙŠØ¯ ÙƒØ±Ø¯ØŸ
+4.25) Ú†Ú¯ÙˆÙ†Ù‡ Ø®Ø±ÙˆØ¬ÙŠ ÙŠÙƒ ØªØ§Ø¨Ø¹ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ø¯  Ú†Ù†Ø¯ Ø±Ø¯ÙŠÙ 
+ÙŠØ§ Ø³ØªÙˆÙ† Ø¨Ø§Ø´Ø¯ØŸ
+4.26)  Ø¯Ø± ØªÙˆØ§Ø¨Ø¹ PL/PgSQL Ú†Ø±Ø§ Ù†Ù…ÙŠâ€ŒØªÙˆØ§Ù† Ø¨Ø§ Ø§Ø·Ù…ÙŠÙ†Ø§Ù† 
+Ø¬Ø¯Ø§ÙˆÙ„ Ù…ÙˆÙ‚Øª Ø±Ø§ Ø§ÙŠØ¬Ø§Ø¯ ÙŠØ§ Ø­Ø°Ù ÙƒØ±Ø¯ØŸ
+4.27) Ú†Ù‡ Ú¯Ø²ÙŠÙ†Ù‡â€ŒÙ‡Ø§ÙŠÙŠ Ø¨Ø±Ø§ÙŠ ØªÙƒØ±Ø§Ø± (replication) ÙˆØ¬ÙˆØ¯ 
+Ø¯Ø§Ø±Ø¯ØŸ
+4.28) Ú†Ù‡ Ú¯Ø²ÙŠÙ†Ù‡â€ŒÙ‡Ø§ÙŠÙŠ Ø¨Ø±Ø§ÙŠ Ø±Ù…Ø²Ù†Ú¯Ø§Ø±ÙŠ ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯ØŸ
+
+ØªÙˆØ³Ø¹Ù‡ PostgreSQL
+5.1) Ù…Ù† ÙŠÙƒ ØªØ§Ø¨Ø¹ Ù†ÙˆØ´ØªÙ‡â€ŒØ§Ù…. Ú†Ú¯ÙˆÙ†Ù‡ Ø¢Ù† Ø±Ø§ Ø¯Ø± psql 
+Ø§Ø¬Ø±Ø§ ÙƒÙ†Ù…ØŸ Ú†Ø±Ø§ Ø¨Ø§ Ø§Ø¬Ø±Ø§ÙŠ Ø¢Ù† core dump Ù…ÙŠâ€ŒÚ¯ÙŠØ±Ù…ØŸ
+5.2) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… Ø¯Ø± ØªÙˆÙ„ÙŠØ¯ Ù†ÙˆØ¹â€ŒÙ‡Ø§ Ùˆ ØªÙˆØ§Ø¨Ø¹ 
+Ø¬Ø¯ÙŠØ¯ Ùˆ Ø¬Ø§Ù„Ø¨ Ø¨Ø±Ø§ÙŠ PostgreSQLâ€Œ Ù‡Ù…ÙƒØ§Ø±ÙŠ Ùˆ Ù…Ø´Ø§Ø±ÙƒØª 
+Ø¯Ø§Ø´ØªÙ‡ Ø¨Ø§Ø´Ù….
+5.3) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… ÙŠÙƒ ØªØ§Ø¨Ø¹ Ø¨Ù‡ Ø²Ø¨Ø§Ù† C Ø¨Ù†ÙˆÙŠØ³Ù… 
+ÙƒÙ‡ Ø®Ø±ÙˆØ¬ÙŠ Ø¢Ù† ÙŠÙƒ â€Œtuple  (Ú†Ù†Ø¯ ØªØ§ÙŠÙŠ) Ø¨Ø§Ø´Ø¯ØŸ
+5.4) Ù…Ù† ÙŠÙƒ ÙØ§ÙŠÙ„ Ù…Ù†Ø¨Ø¹ Ø±Ø§ Ø¹ÙˆØ¶ ÙƒØ±Ø¯Ù‡ Ø§Ù… Ú†Ø±Ø§ Ø¯Ø± 
+Ø¹Ù…Ù„ÙŠØ§Øª ÙƒØ§Ù…Ù¾ÙŠÙ„ Ù…Ø¬Ø¯Ø¯ Ø¢Ù† ØªØºÙŠÙŠØ± Ø¯ÙŠØ¯Ù‡ Ù†Ù…ÙŠâ€ŒØ´ÙˆØ¯ØŸ
+
+
+
+
+Ø³ÙˆØ§Ù„Ø§Øª Ø¹Ù…ÙˆÙ…ÙŠ
+1.1) PostgreSQL Ú†ÙŠØ³Øª Ùˆ Ú†Ú¯ÙˆÙ†Ù‡ Ø¢Ù† Ø±Ø§ Ø¨Ø§ÙŠØ¯ ØªÙ„ÙØ¸ ÙƒØ±Ø¯ØŸ
+PostgreSQL Ø¨Ù‡ ØµÙˆØ±Øª Post-Gres-Q-Lâ€Œ ØªÙ„ÙØ¸ Ù…ÙŠâ€ŒØ´ÙˆØ¯. ÙŠÙƒ ÙØ§ÙŠÙ„ 
+ØµÙˆØªÙŠ Ø¯Ø± Ø¢Ø¯Ø±Ø³ http://www.postfresql.org/postgresql.mp3â€Œ Ø¨Ø±Ø§ÙŠ 
+ÙƒØ³Ø§Ù†ÙŠ ÙƒÙ‡ Ù…Ø§ÙŠÙ„Ù†Ø¯ ØªÙ„ÙØ¸ ØµØ­ÙŠØ­ Ø±Ø§ Ø¨Ø´Ù†ÙˆÙ†Ø¯ ÙˆØ¬ÙˆØ¯ 
+Ø¯Ø§Ø±Ø¯.
+PostgreSQL Ø§Ø² Ø±ÙˆÙŠ Ø³ÙŠØ³ØªÙ… Ù…Ø¯ÙŠØ±ÙŠØª Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ POSTGRES 
+ØªÙˆØ³Ø¹Ù‡ Ø¯Ø§Ø¯Ù‡ Ø´Ø¯Ù‡ Ø§Ø³Øª (Ù‡Ù†ÙˆØ² Ù‡Ù… Ø¨Ø¹Ø¶ÙŠ Ù…ÙˆØ§Ù‚Ø¹ Ø¨Ø±Ø§ÙŠ 
+Ø³Ø§Ø¯Ú¯ÙŠ Ø¨Ù‡ Ø¢Ù† Postgres Ú¯ÙØªÙ‡ Ù…ÙŠâ€ŒØ´ÙˆØ¯) ÙƒÙ‡ ÙŠÙƒ Ù†Ù…ÙˆÙ†Ù‡ 
+ØªØ­Ù‚ÙŠÙ‚Ø§ØªÙŠ Ø§Ø² Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡â€ŒÙ‡Ø§ÙŠ Ù†Ø³Ù„ Ø¨Ø¹Ø¯ Ø§Ø³Øª. 
+PostgreSQL Ù‡Ù…Ø§Ù† Ø§Ù„Ú¯ÙˆÙŠ Ø¯Ø§Ø¯Ù‡ Ù‚ÙˆÙŠ Ùˆ Ø§Ù†ÙˆØ§Ø¹ Ø¯Ø§Ø¯Ù‡  Ø±Ø§ 
+Ø­ÙØ¸ ÙƒØ±Ø¯Ù‡ Ø§Ø³Øª ÙˆÙ„ÙŠ Ø²Ø¨Ø§Ù† PostQuel Ø±Ø§ Ø¨Ø§ ÙŠÙƒ 
+Ø²ÙŠØ±Ù…Ø¬Ù…ÙˆØ¹Ù‡ Ù¾ÙŠØ´Ø±ÙØªÙ‡ Ø§Ø² SQL Ø¬Ø§ÙŠÚ¯Ø²ÙŠÙ† ÙƒØ±Ø¯Ù‡ Ø§Ø³Øª. 
+PostgreSQL Ù…ØªÙ† Ø¨Ø§Ø² Ø¨ÙˆØ¯Ù‡ Ùˆ Ù…ØªÙ† ÙƒØ§Ù…Ù„ Ø¢Ù† Ø¯Ø± Ø¯Ø³ØªØ±Ø³ 
+Ø§Ø³Øª.
+PostgreSQL  ØªÙˆØ³Ø· ÙŠÙƒ ØªÙŠÙ… Ø¨Ø±Ù†Ø§Ù…Ù‡â€ŒÙ†ÙˆÙŠØ³ ÙƒÙ‡ Ù‡Ù…Ú¯ÙŠ Ø¯Ø± 
+Ú¯Ø±ÙˆÙ‡ Ù¾Ø³Øª Ø§Ù„ÙƒØªØ±ÙˆÙ†ÙŠÙƒ Ø¨Ø±Ù†Ø§Ù…Ù‡â€ŒÙ†ÙˆÙŠØ³Ø§Ù† PostgreSQL  
+Ø¹Ø¶Ùˆ Ù‡Ø³ØªÙ†Ø¯ØŒ Ø§Ù†Ø¬Ø§Ù… Ù…ÙŠâ€ŒØ´ÙˆØ¯. Ù‡Ù…Ø§Ù‡Ù†Ú¯ ÙƒÙ†Ù†Ø¯Ù‡ Ø§ØµÙ„ÙŠ 
+Ø¯Ø± Ø­Ø§Ù„ Ø­Ø§Ø¶Ø± Marc G. Fournierâ€Œ Ø¨Ù‡ Ø¢Ø¯Ø±Ø³ scrappy@PostgreSQL.org  
+Ù…ÙŠâ€ŒØ¨Ø§Ø´Ø¯. (Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† Ù†Ø­ÙˆÙ‡ Ù…Ù„Ø­Ù‚ Ø´Ø¯Ù† Ø¨Ù‡ Ø§ÙŠÙ† ØªÙŠÙ… 
+Ù‚Ø³Ù…Øª 1.6 Ø±Ø§ Ø¨Ø¨ÙŠÙ†ÙŠØ¯). Ø§ÙŠÙ† ØªÙŠÙ… Ø¯Ø± Ø­Ø§Ø¶Ø± Ù…Ø³Ø¦ÙˆÙ„ÙŠØª 
+ØªÙ…Ø§Ù… Ù…Ø³Ø§Ø¦Ù„ Ù…Ø±Ø¨ÙˆØ· Ø¨Ù‡ Ø¨Ø±Ù†Ø§Ù…Ù‡â€ŒÙ†ÙˆÙŠØ³ÙŠ PostgreSQL Ø±Ø§ 
+Ø¨Ø± Ø¹Ù‡Ø¯Ù‡ Ø¯Ø§Ø±Ø¯. Ø§ÙŠÙ† ÙŠÙƒ Ù¾Ø±ÙˆÚ˜Ù‡ Ú¯Ø±ÙˆÙ‡ÙŠ Ø§Ø³Øª Ùˆ ØªØ­Øª 
+ÙƒÙ†ØªØ±Ù„ Ù‡ÙŠÚ† Ø´Ø±ÙƒØªÙŠ Ù†ÙŠØ³Øª. Ø¨Ø±Ø§ÙŠ Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ø¨ÙŠØ´ØªØ± Ø¯Ø± 
+Ù…ÙˆØ±Ø¯ Ø§ÙŠÙ† ØªÙŠÙ… Ø¨Ù‡ Ø¢Ø¯Ø±Ø³ 
+http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html Ù…Ø±Ø§Ø¬Ø¹Ù‡ ÙƒÙ†ÙŠØ¯.
+Ø§ÙˆÙ„ÙŠÙ† Ù†Ø³Ø®Ù‡ PostgreSQLâ€Œ ØªÙˆØ³Ø· Andrew Yu and Jolly Chen Ø¨Ù‡ 
+ÙˆØ¬ÙˆØ¯ Ø¢Ù…Ø¯. Ø§ÙØ±Ø§Ø¯ Ø¨Ø³ÙŠØ§Ø±ÙŠ Ø¯Ø± ØªÙˆØ³Ø¹Ù‡ Ùˆ Ø±ÙØ¹ Ø§Ø´ÙƒØ§Ù„ Ùˆ 
+Ø§Ù†ØªÙ‚Ø§Ù„ Ø¢Ù† Ø´Ø±ÙƒØª ÙƒØ±Ø¯Ù‡â€ŒØ§Ù†Ø¯. Ù…ØªÙ† Ø§ØµÙ„ÙŠ Postgres ÙƒÙ‡ 
+PostgreSQL Ø§Ø² Ø±ÙˆÙŠ Ø¢Ù† Ù†ÙˆØ´ØªÙ‡ Ø´Ø¯Ù‡ Ø§Ø³ØªØŒ ØªÙˆØ³Ø· ØªØ¹Ø¯Ø§Ø¯ 
+Ø²ÙŠØ§Ø¯ÙŠ Ø¯Ø§Ù†Ø´Ø¬ÙˆÙŠ ÙƒØ§Ø±Ø´Ù†Ø§Ø³ÙŠ Ø§Ø±Ø´Ø¯Ùˆ Ø¯Ø§Ù†Ø´Ø¬ÙˆÙŠ 
+ÙƒØ§Ø±Ø´Ù†Ø§Ø³ÙŠ Ùˆ ØªÙŠÙ… Ø¨Ø±Ù†Ø§Ù…Ù‡â€ŒÙ†ÙˆÙŠØ³ÙŠ ÙƒÙ‡ ØªØ­Øª Ù†Ø¸Ø± 
+Ù¾Ø±ÙˆÙØ³ÙˆØ± Michael Stonebrake Ø¯Ø± Ø¯Ø§Ù†Ø´Ú¯Ø§Ù‡ 
+Ø¨Ø±ÙƒÙ„ÙŠØŒâ€ŒÙƒØ§Ù„ÙŠÙØ±Ù†ÙŠØ§ ÙƒØ§Ø± Ù…ÙŠâ€ŒÙƒØ±Ø¯Ù‡â€ŒØ§Ù†Ø¯ Ù†ÙˆØ´ØªÙ‡ 
+Ø´Ø¯Ù‡ Ø§Ø³Øª.
+Ù†Ø§Ù… Ø§ØµÙ„ÙŠ Ù†Ø±Ù… Ø§ÙØ²Ø§Ø± Ø¯Ø± Ø¯Ø§Ù†Ø´Ú¯Ø§Ù‡ Ø¨Ø±ÙƒÙ„ÙŠ Postgresâ€Œ 
+Ø¨ÙˆØ¯. Ø¯Ø± Ø³Ø§Ù„ 1995 Ø¨Ø¹Ø¯ Ø§Ø² Ø§Ø¶Ø§ÙÙ‡ Ø´Ø¯Ù† SQL Ù†Ø§Ù… Ø¢Ù† Ø¨Ù‡ 
+Postgres95 ØªØºÙŠÙŠØ± Ø¯Ø§Ø¯Ù‡ Ø´Ø¯. Ø¯Ø± Ø³Ø§Ù„ 1996 Ù†Ø§Ù… Ø¢Ù† Ø¨Ù‡ 
+PostgreSQL ØªØºÙŠÙŠØ± Ø¯Ø§Ø¯Ù‡ Ø´Ø¯.
+1.2) Ù‚ÙˆØ§Ù†ÙŠÙ† ÙƒÙ¾ÙŠ Ø±Ø§ÙŠØª Ø¯Ø± Ù…ÙˆØ±Ø¯ PostgreSQL Ø¨Ù‡ Ú†Ù‡ ØµÙˆØ±Øª 
+Ø§Ø³ØªØŸ
+PostgreSQL ØªØ­Øª Ù‚Ø§Ù†ÙˆÙ† ÙƒÙ¾ÙŠ Ø±Ø§ÙŠØª Ø²ÙŠØ± Ù‚Ø±Ø§Ø± Ø¯Ø§Ø±Ø¯:
 PostgreSQL Data Base Management System
 Portions copyright (c) 1996-2004, PostgreSQL Global Development Group Portions 
 Copyright (c) 1994-6 Regents of the University of California
@@ -150,666 +206,965 @@ BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND 
 THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, 
 UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-قانون بالا ليسانس BSD كه يك ليسانس كلاسيك براي متن‌هاي باز است مي‌باشد. هيچ 
-محدوديتي در مورد نحوه استفاده از متن در آن ديده نمي‌شود. ما آن را دوست داريم و 
-هيچ قصدي براي تغيير آن نداريم.
-1.3) PostgreSQL‌ روي چه نوع يونيكسهايي اجرا مي‌شود؟
-در حالت كلي PostgreSQL روي هر پلتفرم (سكوي) سازگار با يونيكس اجرا مي‌شود. ليست 
-پلتفرمهايي كه تاكنون PostgreSQL‌ روي آنها نصب و تست شده است درقسمت دستورالعملهاي 
-نصب آمده است.
-1.4) روي چه محيطهاي غير يونيكسي مي‌توان آن را اجرا كرد؟
+Ù‚Ø§Ù†ÙˆÙ† Ø¨Ø§Ù„Ø§ Ù„ÙŠØ³Ø§Ù†Ø³ BSD ÙƒÙ‡ ÙŠÙƒ Ù„ÙŠØ³Ø§Ù†Ø³ ÙƒÙ„Ø§Ø³ÙŠÙƒ 
+Ø¨Ø±Ø§ÙŠ Ù…ØªÙ†â€ŒÙ‡Ø§ÙŠ Ø¨Ø§Ø² Ø§Ø³Øª Ù…ÙŠâ€ŒØ¨Ø§Ø´Ø¯. Ù‡ÙŠÚ† Ù…Ø­Ø¯ÙˆØ¯ÙŠØªÙŠ 
+Ø¯Ø± Ù…ÙˆØ±Ø¯ Ù†Ø­ÙˆÙ‡ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² Ù…ØªÙ† Ø¯Ø± Ø¢Ù† Ø¯ÙŠØ¯Ù‡ 
+Ù†Ù…ÙŠâ€ŒØ´ÙˆØ¯. Ù…Ø§ Ø¢Ù† Ø±Ø§ Ø¯ÙˆØ³Øª Ø¯Ø§Ø±ÙŠÙ… Ùˆ Ù‡ÙŠÚ† Ù‚ØµØ¯ÙŠ Ø¨Ø±Ø§ÙŠ 
+ØªØºÙŠÙŠØ± Ø¢Ù† Ù†Ø¯Ø§Ø±ÙŠÙ….
+1.3) PostgreSQLâ€Œ Ø±ÙˆÙŠ Ú†Ù‡ Ù†ÙˆØ¹ ÙŠÙˆÙ†ÙŠÙƒØ³Ù‡Ø§ÙŠÙŠ Ø§Ø¬Ø±Ø§ 
+Ù…ÙŠâ€ŒØ´ÙˆØ¯ØŸ
+Ø¯Ø± Ø­Ø§Ù„Øª ÙƒÙ„ÙŠ PostgreSQL Ø±ÙˆÙŠ Ù‡Ø± Ù¾Ù„ØªÙØ±Ù… (Ø³ÙƒÙˆÙŠ) Ø³Ø§Ø²Ú¯Ø§Ø± 
+Ø¨Ø§ ÙŠÙˆÙ†ÙŠÙƒØ³ Ø§Ø¬Ø±Ø§ Ù…ÙŠâ€ŒØ´ÙˆØ¯. Ù„ÙŠØ³Øª Ù¾Ù„ØªÙØ±Ù…Ù‡Ø§ÙŠÙŠ ÙƒÙ‡ 
+ØªØ§ÙƒÙ†ÙˆÙ† PostgreSQLâ€Œ Ø±ÙˆÙŠ Ø¢Ù†Ù‡Ø§ Ù†ØµØ¨ Ùˆ ØªØ³Øª Ø´Ø¯Ù‡ Ø§Ø³Øª 
+Ø¯Ø±Ù‚Ø³Ù…Øª Ø¯Ø³ØªÙˆØ±Ø§Ù„Ø¹Ù…Ù„Ù‡Ø§ÙŠ Ù†ØµØ¨ Ø¢Ù…Ø¯Ù‡ Ø§Ø³Øª.
+1.4) Ø±ÙˆÙŠ Ú†Ù‡ Ù…Ø­ÙŠØ·Ù‡Ø§ÙŠ ØºÙŠØ± ÙŠÙˆÙ†ÙŠÙƒØ³ÙŠ Ù…ÙŠâ€ŒØªÙˆØ§Ù† Ø¢Ù† Ø±Ø§ 
+Ø§Ø¬Ø±Ø§ ÙƒØ±Ø¯ØŸ
 Client
-مي‌توان psql, كتابخانه libpq و ساير واسطها و برنامه‌هاي كاربردي را طوري كامپيل 
-كرد كه روي محيطهاي ويندوز نيز اجرا شوند. در اين حالت Client روي ويندوز اجرا 
-مي‌شود و از طربق شبكه و پروتكل TCP/IP با يك سرور كه روي يك پلتفرم لينوكس در حال 
-اجراست ارتباط برقرار مي‌كند.يك فايل win32.mak همراه با كدهاي PostgreSQL وجود 
-دارد كه براي كامپيل كردن كتابخانه libpq و برنامه psql مي‌باشد. P‌ostgreSQL‌ 
-همچنين امكان ارتباط به صورت ODBC‌  را نيز دارد.
+Ù…ÙŠâ€ŒØªÙˆØ§Ù† psql, ÙƒØªØ§Ø¨Ø®Ø§Ù†Ù‡ libpq Ùˆ Ø³Ø§ÙŠØ± ÙˆØ§Ø³Ø·Ù‡Ø§ Ùˆ 
+Ø¨Ø±Ù†Ø§Ù…Ù‡â€ŒÙ‡Ø§ÙŠ ÙƒØ§Ø±Ø¨Ø±Ø¯ÙŠ Ø±Ø§ Ø·ÙˆØ±ÙŠ ÙƒØ§Ù…Ù¾ÙŠÙ„ ÙƒØ±Ø¯ ÙƒÙ‡ 
+Ø±ÙˆÙŠ Ù…Ø­ÙŠØ·Ù‡Ø§ÙŠ ÙˆÙŠÙ†Ø¯ÙˆØ² Ù†ÙŠØ² Ø§Ø¬Ø±Ø§ Ø´ÙˆÙ†Ø¯. Ø¯Ø± Ø§ÙŠÙ† 
+Ø­Ø§Ù„Øª Client Ø±ÙˆÙŠ ÙˆÙŠÙ†Ø¯ÙˆØ² Ø§Ø¬Ø±Ø§ Ù…ÙŠâ€ŒØ´ÙˆØ¯ Ùˆ Ø§Ø² Ø·Ø±Ø¨Ù‚ 
+Ø´Ø¨ÙƒÙ‡ Ùˆ Ù¾Ø±ÙˆØªÙƒÙ„ TCP/IP Ø¨Ø§ ÙŠÙƒ Ø³Ø±ÙˆØ± ÙƒÙ‡ Ø±ÙˆÙŠ ÙŠÙƒ Ù¾Ù„ØªÙØ±Ù… 
+Ù„ÙŠÙ†ÙˆÙƒØ³ Ø¯Ø± Ø­Ø§Ù„ Ø§Ø¬Ø±Ø§Ø³Øª Ø§Ø±ØªØ¨Ø§Ø· Ø¨Ø±Ù‚Ø±Ø§Ø± 
+Ù…ÙŠâ€ŒÙƒÙ†Ø¯.ÙŠÙƒ ÙØ§ÙŠÙ„ win32.mak Ù‡Ù…Ø±Ø§Ù‡ Ø¨Ø§ ÙƒØ¯Ù‡Ø§ÙŠ PostgreSQL 
+ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯ ÙƒÙ‡ Ø¨Ø±Ø§ÙŠ ÙƒØ§Ù…Ù¾ÙŠÙ„ ÙƒØ±Ø¯Ù† ÙƒØªØ§Ø¨Ø®Ø§Ù†Ù‡ libpq Ùˆ 
+Ø¨Ø±Ù†Ø§Ù…Ù‡ psql Ù…ÙŠâ€ŒØ¨Ø§Ø´Ø¯. Pâ€ŒostgreSQLâ€Œ Ù‡Ù…Ú†Ù†ÙŠÙ† Ø§Ù…ÙƒØ§Ù† 
+Ø§Ø±ØªØ¨Ø§Ø· Ø¨Ù‡ ØµÙˆØ±Øª ODBCâ€Œ  Ø±Ø§ Ù†ÙŠØ² Ø¯Ø§Ø±Ø¯.
 Server
-با استفاده از Cygwin‌ و كتابخانه Cygnus مي‌توان پايگاه داده را روي ويندوز NT و 
-يا Win2K اجرا كرد.براي ديدن اطلاعات بيشتر فايل pgsql/doc/FAQ_MSWIN ‌را كه بهمراه 
-توزبع‌هاي PostgreSQL آمده است ببينيد و يا اينكه به اين صفحه 
-http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN مراجعه كنيد.
-در حال حاضر يك عمليات انتقال PostgreSQL به روي سكوهاي Win NT/2000/XP در جريان 
-است. براي ديدن وضعيت اين پروژه به سايت‌هاي 
-http://momjian.postgresql.org/main/writings/pgsql/win32.htm و 
-http://techdocs.postgresql.org/guides/Windows مراجعه كنيد. 
-همچنين يك عمليات انتقال بر روي Novell Netware 6 نيز در حال انجام است كه در سايت 
-http://forge.novell.com مي‌توانيد اطلاعات بيشتر را ببينيد.
-1.5) PostgreSQL را از كجا مي‌توانم بگيرم؟
-PostgreSQL‌ را از سايت اصلي آن  ftp://ftp.PostgreSQL.org/pub مي‌توانيد بگيريد. 
-در صفحه اصلي سايت ليست ساير آدرسهايي كه مي‌توانيد PostgreSQL‌ را از آنها بگيريد 
-آمده است.
-1.6) از كجا خدمات پشتيباني بگيرم؟
-گروه پستي اصلي pgsql-general@PostgreSQL.org مي‌باشد. اين گروه براي بحث در مورد 
-موضوعات مختلف در زمينه PostgreSQL است. براي عضو شدن در اين گروه پستي يك نامه 
-الكترونيكي به آدرس گروه با محتوياتی كه در ادامه آمده است ارسال كنيد. در قسمت 
-Subject چيزي ننويسيد.
+Ø¨Ø§ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² Cygwinâ€Œ Ùˆ ÙƒØªØ§Ø¨Ø®Ø§Ù†Ù‡ Cygnus Ù…ÙŠâ€ŒØªÙˆØ§Ù† 
+Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ø±Ø§ Ø±ÙˆÙŠ ÙˆÙŠÙ†Ø¯ÙˆØ² NT Ùˆ ÙŠØ§ Win2K Ø§Ø¬Ø±Ø§ 
+ÙƒØ±Ø¯.Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ø¨ÙŠØ´ØªØ± ÙØ§ÙŠÙ„ pgsql/doc/FAQ_MSWIN 
+â€ŒØ±Ø§ ÙƒÙ‡ Ø¨Ù‡Ù…Ø±Ø§Ù‡ ØªÙˆØ²Ø¨Ø¹â€ŒÙ‡Ø§ÙŠ PostgreSQL Ø¢Ù…Ø¯Ù‡ Ø§Ø³Øª 
+Ø¨Ø¨ÙŠÙ†ÙŠØ¯ Ùˆ ÙŠØ§ Ø§ÙŠÙ†ÙƒÙ‡ Ø¨Ù‡ Ø§ÙŠÙ† ØµÙØ­Ù‡ 
+http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN Ù…Ø±Ø§Ø¬Ø¹Ù‡ ÙƒÙ†ÙŠØ¯.
+Ø¯Ø± Ø­Ø§Ù„ Ø­Ø§Ø¶Ø± ÙŠÙƒ Ø¹Ù…Ù„ÙŠØ§Øª Ø§Ù†ØªÙ‚Ø§Ù„ PostgreSQL Ø¨Ù‡ Ø±ÙˆÙŠ 
+Ø³ÙƒÙˆÙ‡Ø§ÙŠ Win NT/2000/XP Ø¯Ø± Ø¬Ø±ÙŠØ§Ù† Ø§Ø³Øª. Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† ÙˆØ¶Ø¹ÙŠØª 
+Ø§ÙŠÙ† Ù¾Ø±ÙˆÚ˜Ù‡ Ø¨Ù‡ Ø³Ø§ÙŠØªâ€ŒÙ‡Ø§ÙŠ 
+http://momjian.postgresql.org/main/writings/pgsql/win32.htm Ùˆ 
+http://techdocs.postgresql.org/guides/Windows Ù…Ø±Ø§Ø¬Ø¹Ù‡ ÙƒÙ†ÙŠØ¯. 
+Ù‡Ù…Ú†Ù†ÙŠÙ† ÙŠÙƒ Ø¹Ù…Ù„ÙŠØ§Øª Ø§Ù†ØªÙ‚Ø§Ù„ Ø¨Ø± Ø±ÙˆÙŠ Novell Netware 6 Ù†ÙŠØ² 
+Ø¯Ø± Ø­Ø§Ù„ Ø§Ù†Ø¬Ø§Ù… Ø§Ø³Øª ÙƒÙ‡ Ø¯Ø± Ø³Ø§ÙŠØª http://forge.novell.com 
+Ù…ÙŠâ€ŒØªÙˆØ§Ù†ÙŠØ¯ Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ø¨ÙŠØ´ØªØ± Ø±Ø§ Ø¨Ø¨ÙŠÙ†ÙŠØ¯.
+1.5) PostgreSQL Ø±Ø§ Ø§Ø² ÙƒØ¬Ø§ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… Ø¨Ú¯ÙŠØ±Ù…ØŸ
+PostgreSQLâ€Œ Ø±Ø§ Ø§Ø² Ø³Ø§ÙŠØª Ø§ØµÙ„ÙŠ Ø¢Ù†  ftp://ftp.PostgreSQL.org/pub 
+Ù…ÙŠâ€ŒØªÙˆØ§Ù†ÙŠØ¯ Ø¨Ú¯ÙŠØ±ÙŠØ¯. Ø¯Ø± ØµÙØ­Ù‡ Ø§ØµÙ„ÙŠ Ø³Ø§ÙŠØª Ù„ÙŠØ³Øª 
+Ø³Ø§ÙŠØ± Ø¢Ø¯Ø±Ø³Ù‡Ø§ÙŠÙŠ ÙƒÙ‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†ÙŠØ¯ PostgreSQLâ€Œ Ø±Ø§ Ø§Ø² 
+Ø¢Ù†Ù‡Ø§ Ø¨Ú¯ÙŠØ±ÙŠØ¯ Ø¢Ù…Ø¯Ù‡ Ø§Ø³Øª.
+1.6) Ø§Ø² ÙƒØ¬Ø§ Ø®Ø¯Ù…Ø§Øª Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ Ø¨Ú¯ÙŠØ±Ù…ØŸ
+Ú¯Ø±ÙˆÙ‡ Ù¾Ø³ØªÙŠ Ø§ØµÙ„ÙŠ pgsql-general@PostgreSQL.org Ù…ÙŠâ€ŒØ¨Ø§Ø´Ø¯. Ø§ÙŠÙ† 
+Ú¯Ø±ÙˆÙ‡ Ø¨Ø±Ø§ÙŠ Ø¨Ø­Ø« Ø¯Ø± Ù…ÙˆØ±Ø¯ Ù…ÙˆØ¶ÙˆØ¹Ø§Øª Ù…Ø®ØªÙ„Ù Ø¯Ø± Ø²Ù…ÙŠÙ†Ù‡ 
+PostgreSQL Ø§Ø³Øª. Ø¨Ø±Ø§ÙŠ Ø¹Ø¶Ùˆ Ø´Ø¯Ù† Ø¯Ø± Ø§ÙŠÙ† Ú¯Ø±ÙˆÙ‡ Ù¾Ø³ØªÙŠ ÙŠÙƒ 
+Ù†Ø§Ù…Ù‡ Ø§Ù„ÙƒØªØ±ÙˆÙ†ÙŠÙƒÙŠ Ø¨Ù‡ Ø¢Ø¯Ø±Ø³ Ú¯Ø±ÙˆÙ‡ Ø¨Ø§ Ù…Ø­ØªÙˆÙŠØ§ØªÛŒ ÙƒÙ‡ 
+Ø¯Ø± Ø§Ø¯Ø§Ù…Ù‡ Ø¢Ù…Ø¯Ù‡ Ø§Ø³Øª Ø§Ø±Ø³Ø§Ù„ ÙƒÙ†ÙŠØ¯. Ø¯Ø± Ù‚Ø³Ù…Øª Subject 
+Ú†ÙŠØ²ÙŠ Ù†Ù†ÙˆÙŠØ³ÙŠØ¯.
     subscribe
     end
-آدرس گروه: pgsql-general-request@PostgreSQL.org
-همچنين يك گروه پستي هم به صورت ارسال چكيده پيامها وجود دارد. براي عضو شدن در اين 
-گروه يك نامه با محتويات زير به این آدرس  ارسال كنيد. 
+Ø¢Ø¯Ø±Ø³ Ú¯Ø±ÙˆÙ‡: pgsql-general-request@PostgreSQL.org
+Ù‡Ù…Ú†Ù†ÙŠÙ† ÙŠÙƒ Ú¯Ø±ÙˆÙ‡ Ù¾Ø³ØªÙŠ Ù‡Ù… Ø¨Ù‡ ØµÙˆØ±Øª Ø§Ø±Ø³Ø§Ù„ Ú†ÙƒÙŠØ¯Ù‡ 
+Ù¾ÙŠØ§Ù…Ù‡Ø§ ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯. Ø¨Ø±Ø§ÙŠ Ø¹Ø¶Ùˆ Ø´Ø¯Ù† Ø¯Ø± Ø§ÙŠÙ† Ú¯Ø±ÙˆÙ‡ ÙŠÙƒ 
+Ù†Ø§Ù…Ù‡ Ø¨Ø§ Ù…Ø­ØªÙˆÙŠØ§Øª Ø²ÙŠØ± Ø¨Ù‡ Ø§ÛŒÙ† Ø¢Ø¯Ø±Ø³  Ø§Ø±Ø³Ø§Ù„ ÙƒÙ†ÙŠØ¯. 
 pgsql-general-digest-request@PostgreSQL.org 
     subscribe
     end
-در اين گروه هر موقع حجم نامه‌ها به 30 كيلوبايت رسيد براي تمام اعضاء ارسال 
-مي‌شود.
-گروه پستي بررسي اِشكالات هم وجود دارد. براي عضو شدن در اين گروه يك نامه با 
-محتويات زير به pgsql-bugs-request@PostgreSQL.org ارسال كنيد.
+Ø¯Ø± Ø§ÙŠÙ† Ú¯Ø±ÙˆÙ‡ Ù‡Ø± Ù…ÙˆÙ‚Ø¹ Ø­Ø¬Ù… Ù†Ø§Ù…Ù‡â€ŒÙ‡Ø§ Ø¨Ù‡ 30 
+ÙƒÙŠÙ„ÙˆØ¨Ø§ÙŠØª Ø±Ø³ÙŠØ¯ Ø¨Ø±Ø§ÙŠ ØªÙ…Ø§Ù… Ø§Ø¹Ø¶Ø§Ø¡ Ø§Ø±Ø³Ø§Ù„ Ù…ÙŠâ€ŒØ´ÙˆØ¯.
+Ú¯Ø±ÙˆÙ‡ Ù¾Ø³ØªÙŠ Ø¨Ø±Ø±Ø³ÙŠ Ø§ÙØ´ÙƒØ§Ù„Ø§Øª Ù‡Ù… ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯. Ø¨Ø±Ø§ÙŠ 
+Ø¹Ø¶Ùˆ Ø´Ø¯Ù† Ø¯Ø± Ø§ÙŠÙ† Ú¯Ø±ÙˆÙ‡ ÙŠÙƒ Ù†Ø§Ù…Ù‡ Ø¨Ø§ Ù…Ø­ØªÙˆÙŠØ§Øª Ø²ÙŠØ± Ø¨Ù‡ 
+pgsql-bugs-request@PostgreSQL.org Ø§Ø±Ø³Ø§Ù„ ÙƒÙ†ÙŠØ¯.
     subscribe
     end
-گروه پستي مخصوص توسعه دهندگان (برنامه‌نويسان) نيز وجوددارد. براي عضويت در اين 
-گروه يك نامه به آدرس زير با محتويات مشخص شده ارسال كنيد.  
-pgsql-hackers-request@PostgreSQL.org  
+Ú¯Ø±ÙˆÙ‡ Ù¾Ø³ØªÙŠ Ù…Ø®ØµÙˆØµ ØªÙˆØ³Ø¹Ù‡ Ø¯Ù‡Ù†Ø¯Ú¯Ø§Ù† 
+(Ø¨Ø±Ù†Ø§Ù…Ù‡â€ŒÙ†ÙˆÙŠØ³Ø§Ù†) Ù†ÙŠØ² ÙˆØ¬ÙˆØ¯Ø¯Ø§Ø±Ø¯. Ø¨Ø±Ø§ÙŠ Ø¹Ø¶ÙˆÙŠØª Ø¯Ø± 
+Ø§ÙŠÙ† Ú¯Ø±ÙˆÙ‡ ÙŠÙƒ Ù†Ø§Ù…Ù‡ Ø¨Ù‡ Ø¢Ø¯Ø±Ø³ Ø²ÙŠØ± Ø¨Ø§ Ù…Ø­ØªÙˆÙŠØ§Øª Ù…Ø´Ø®Øµ 
+Ø´Ø¯Ù‡ Ø§Ø±Ø³Ø§Ù„ ÙƒÙ†ÙŠØ¯.  pgsql-hackers-request@PostgreSQL.org  
     subscribe
     end
-گروههاي پستي ديگري نيز در زمينه PostgreSQL‌ وجود دارد  كه مي‌توانيد در سايت 
-http://www.postgresql.org ببينيد.
-همچنين يك كانال IRC روي Freenode و EFNet بنام PostgreSQL# وجود دارد. شما 
-مي‌توانيد از فرمان يونيكسي irc -c '#PostgreSQL' "$USER" irc.phoenix.net. يا irc 
--c '#PostgreSQL' "$USER" irc.freenode.net استفاده كنيد.
-ليست شركتهايي كه از طريق آنها مي‌توانيد خدمات پشتيباني تجاري در زمينه PostgreSQL 
-دريافت كنيد در اين آدرس http://techdocs.postgresql.org/companies.php موجود است.
-1.7) آخرين نسخه اعلام شده چيست؟
-آخرين نسخه PostgreSQL‌  كه وجود دارد 7.4.3 است.
-هدف ما آن است كه هر 6 ماه تا 8 ماه يك نسخه جديد ارائه شود.
-1.8) چه مستندات و راهنمائيهايي وجود دارند؟
-چندين كتابچه و صفحات راهنما و مثالهاي كوچك همراه با متن اصلي PostgreSQL‌ در شاخه 
-doc وجود دارد. براي ديدن صفحات راهنما مي‌توانيد به سايت 
-http://www.PostgreSQL.org/docs  نيز مراجعه نماييد.
-دو كتاب در زمينه PostgreSQL‌  در آدرس‌هاي 
-http://www.PostgreSQL.org/docs/awbook.htm و http://www.commandprompt.com/ppbook 
-وجود دارد. ليستي از كتابهايي كه قابل خريد است در آدرس 
-http://techdocs.PostgreSQL.org/techdocs/bookreviews.php وجود دارد. همچنين ليستي 
-از مقالات فني در مورد PostgreSQL در آدرس http://techdocs.PostgreSQL.org وجود 
-دارد.
-برنامه psql يك دستور d\ دارد كه اطلاعاتي در مورد انواع داده‌هاي قابل تعريف و 
-عملگر‌ها و توابع و ... به ما نشان مي‌دهد. در سايت اصلي ما اطلاعات بيشتري را 
-مي‌توانيد پيدا كنيد.
-1.9) چگونه مي‌توانم ازاشكالات شناخته شده و يا امكاناتي كه در اين پايگاه داده 
-وجود ندارد  مطلع شوم؟
-PostgreSQL يك زير مجموعه پيشرفته از SQL-92 را پشتيباني مي‌كند. در ليست  TODO   
-اِشكالات شناخته شده يا امكاناتي كه وجود ندارد و يا برنامه‌‌هاي آينده آمده است.
-1.10) چگونه مي‌توانم زبان SQL را ياد بگيرم؟
-كتاب PostgreSQL در آدرس SQL http://www.PostgreSQL.org/docs/awbook.html ‌را آموزش 
-مي‌دهد. همچنين يك كتاب در آدرس http://www.commandprompt.com/ppbook وجود دارد. يك 
-راهنماي خيلي خوب هم در سايت‌هاي  
-http://www.intermedia.net/support/sql/sqltut.shtm و 
-http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM و  
-http://sqlcourse.com در مورد SQL وجود دارد.
-كتاب ديگري كه مي‌توان براي يادگيري SQL از آن استفاده كرد كتاب "SQL را در 21 روز 
-ياد بگيريد،‌ ويرايش دوم" در سايت http://members.tripod.com/er4ebus/sql/index.htm 
-مي‌باشد.
-تعداد زيادي از كاربران كتاب The Practical SQL را ترجيح مي‌دهند. كتاب ديگر The 
-Complete Refrence SQL انتشارات McGraw-Hill مي‌باشد.
-1.11) آيا PostgreSQL مشكل Y2K‌ دارد يا خير؟
-خير،‌PostgreSQL‌ با تاريخ‌هاي قبل و بعد از 2000 مشكلي ندارد.
-1.12) چگونه مي‌توانم به تيم برنامه نويس PostgreSQL ملحق شوم؟
-ابتدا،‌آخرين سورس را دونلود كرده و مستندات مربوط به برنامه‌نويسي PostgreSQL را 
-در سايت مطالعه كنيد. سپس به گروههاي پستي ‌ pgsql-patches و pgsql-hackers  عضو 
-شويد. در مرحله آخر وصله‌هاي با كيفيت بالا را به pgsql-patches ارسال كنيد.
-تعداد زيادي از برنامه‌نويسان وجود دارند كه امتياز انجام تغييرات در cvs‌ را 
-دارند. هر كدام از آنها تعداد زيادي وصله‌‌ با كيفيت بالا به گروه ارسال كرده‌اند 
-كه اعتماد گردانندگان PostgreSQL را به دست آورده‌اند.
-1.13) چگونه مي‌توانم يك اِشكال را به گروه برنامه نويس اعلام كنم؟
-لطفاً صفحه مربوط به اِشكالات PostgreSQL را در سايت 
-http://www.PostgreSQL.org/bugs/bugs.php مشاهده‌ كنيد. در اين سايت نحوه گزارش و 
-ارسال يك اشكال توضيح داده شده است.
- همچنين براي ديدن نسخه‌هاي جديدتر PostgreSQL و يا وجود يك وصله جديد از سايت 
-ftp://ftp.PostgreSQL.org/pub بازديد كنيد.
-1.14) وضعيت PostgreSQL‌ در مقايسه با ساير DBMSها به چه صورت است؟
-راههاي مختلفي براي اندازه‌گيري و مقايسه نرم‌افزارها وجود دارد كه عبارتند از 
-امكانات، كارايي، قابليت اعتماد، پشتيباني و قيمت
-    امكانات 
-    PostgreSQL بيشتر امكانات موجود در سيستم‌هاي پايگاه داده تجاري بزرگ نظير 
-    transactions, subselets, triggers, views, foreign key referential integrity 
-    و sophisticated locking‌ را دارد. در PostgreSQL‌‌ امكاناتي وجود دارد كه 
-    پايگاههاي داده ديگر آن را ندارند نظير user-defined types‌و Inheritance‌و 
-    rules‌و multi-version concurrency control 
-
-  كارايي
-          كارايي PostgreSQL در حد بقيه سيستم‌هاي تجاري و متن باز است. در بعضي 
-  موارد سريعتر و در بعضي موارد از آنها كندتر است. در مقايسه با MySQL براي 
-  كاربران بيشتر و درخواست‌هاي پيچيده و بار زياد خواندن/نوشتن سريعتر است. در 
-  درخواست‌هاي ساده SELECT‌ از MySQL كندتر است. البته MySQL خيلي از امكانات 
-  PostgreSQL كه در بالا به آن اشاره شد را ندارد. هدف اصلي ما امكانات و قابليت 
-  اعتماد بالاست در ضمن آنكه تلاش مي‌كنيم تا كارايي آن نيز بهبود يابد. در آدرس 
-  http://openacs.org/philosophy/why-not-mysql.html يك مقايسه جالب بين MySQL و 
-  PostgreSQL وجود دارد. از طرف ديگر MySQL‌ يك شركت است كه محصول خود را به صورت 
-  متن باز ارائه مي‌كند ولي براي نرم‌افزار غير متن باز خود احتياج به ليسانس تجاري 
-  دارد بر خلاف PostgreSQL كه يك گروه كاملاً متن باز هستند.
-
-    قابليت اطمينان 
-    ما فكر مي‌كنيم كه يك سيستم پايگاه داده‌اي كه مطمئن نباشد ارزشي ندارد. ما 
-    تمام تلاشمان را براي ارائه كدهاي پايداري كه به خوبي تست شده باشند و كمترين 
-    اِشكالات را داشته باشند مي‌كنيم. هر نسخه جديدي كه ارائه مي‌شود حداقل يك ماه 
-    را در مرحله تست بتا مي‌گذراند. ما بر اين باور هستيم كه قابليت اطمينان 
-    PostgreSQL‌ در مقايسه با ساير سيستم‌هاي پايگاه داده قابل توجه است و 
-    نسخه‌هايي كه تاكنون ارائه شده است نشان مي‌دهد كه ما توانايي ارائه يك سيستم 
-    قوي و محكم و مطمئن را كه آماده بهره‌برداري است داريم. 
-    پشتيباني 
-    گروههاي پستي ما امكان ارتباط و تماس به گروه بزرگي از برنامه نويسان و كاربران 
-    را مي‌دهد كه مي‌توانند در حل مشكلات به ديگران كمك كنند. دسترسي مستقيم به 
-    برنامه‌نويسان و گروههاي كاربران و راهنماها و كداصلي باعث مي‌شود كه پشتيباني 
-    PostgreSQL نسبت به ساير پايگاههاي داده به نحو بهتري انجام شود. همچنين امكان 
-    ارائه خدمات پشتيباني به صورت تجاري نيز وجود دارد. براي ديدن اطلاعات بيشتر به 
-    FAQ section 1.6  مراجعه كنيد. 
-    قيمت 
-    هم براي استفاده تجاري و هم غير تجاري هيچ هزينه‌اي نبايد پرداخت شود. هيچ 
-    محدوديتي براي انجام تغييرات در PostgreSQL توسط استفاده كنندگان وجود ندارد به 
-    جز مواردي كه در ليسانس BSD به آن اشاره شده است. 
-1.15) من چگونه مي‌توانم از نظر مالي به PostgreSQL كمك كنم؟
-PostgreSQL  داراي يك ساختار تشكيلاتي درجه اول است كه آن را مديون Marc Fournier‌ 
-است كه اين ساختار را ايجاد كرده است.
-كيفيت يك ساختار براي يك پروژه متن باز بسيار اهميت دارد. يك ساختار خوب مي‌تواند 
-مانع از حوادثي شود كه در حركت روبه‌جلوي پروژه خللي وارد مي‌كنند.
-البته اين ساختار تشكيلاتي ارزان نيست. هزينه‌هاي ثابت ماهانه و روزمره براي 
-نگهداري و حفظ اين ساختار مورد نياز است. اگر شما يا شركت شما مايل است كه از نظر 
-مالي به اين حركت كمك كند لطفاً به سايت http://store.pgsql.com/shopping مراجعه 
-كرده و كمك خود را اهدا كنيد.
-هر چند در صفحه اصلي عبارت PostgreSQL,Inc‌ ذكر شده است ولي مشاركت عمدتاً براي 
-پشتيباني از پروژه PostgreSQL‌ مي باشد و نه براي يك شركت مشخص. اگر ترجيح مي‌دهيد 
-مي‌توانيد يك چك به آدرس مشخص شده ارسال كنيد.
-اگر يك استفاده موفق از PostgreSQL سراغ داريد لطفاً آن را به سايت 
-http://advocacy.postgresql.org گزارش دهيد.
-
-
-
-سوالات مربوط به استفاده از پايگاه داده
-2.1) آيا هيچ درايور ODBC‌ براي PostgreSQL وجود دارد؟
-دو درايور ODBC بنامهاي psqlODBC‌ و OpenLink براي PostgreSQL‌ وجود دارد.
-براي گرفتن psqlODBC به سايت 
-http://gborg.postgresql.org/project/psqlodbc/projdisplay.php مراجعه كنيد.
-OpenLlink را از اين سايت http://www.openlinksw.com مي‌توانيد بگيريد. اين درايور 
-با نرم‌افزارهاي مختلف ODBC كار مي‌كند بنابراين شما قادر خواهيد بود با استفاده از 
-OpenLink روي اكثر سكو‌هايي كه نرم‌افزارODBC‌دارند بدون مشكل به PostgreSQL نيز 
-متصل شويد.
-اين محصول به كساني كه احتياج به خدمات پشتيباني تجاري دارند فروخته مي‌شود. ولي 
-نسخه آزاد اين نرم‌افزار هميشه در درسترس مي‌باشد. براي كسب اطلاعات بيشتر سوالات 
-خود را به آدرس postgres95@openlink.co.uk ‌ارسال نماييد.
-2.2) چه ابزارهايي براي استفاده از PostgreSQL‌ با صفحات وب وجود دارد؟
-در سايت http://www.webreview.com براي استفاده از PostgreSQL‌ در صفحات وب 
-راهنماييهاي خوبي وجود دارد.
-براي تركيب و استفاده در صفحات وب زبان PHP‌ يك واسط بسيار مناسب است. اطلاعات 
-بيشتر راجع به PHP‌در سايت http://www.php.net وجود دارد.
-مثالهايي نيز با استفاده از Perl‌ و CGI.pm و mod_perl وجود دارد.
-2.3) آيا PostgreSQL‌ يك واسط كاربري گرافيكي دارد؟
-چند نرم افزار گرافيكي براي PostgreSQL‌ وجود دارد كه شامل pgAccess درسايت 
-http://www.pgaccess.org و pgAdmin III در سايت http://www.pgadmin.org و RHDB 
-Admin در سايت http://sources.redhat.com/rhdb و Rekall در سايت 
-http://www.thekompany.com/products/rekall  مي‌باشد. همچنين يك phpPgAdmin هم در 
-سايت http://phppgadmin.sourceforge.net وجود دارد كه يك واسط وبي براي مديريت 
-PostgreSQL مي‌باشد.
-براي ديدن اطلاعات بيشتر راجع به نرم‌افزارهاي گرافيكي براي PostgreSQL به آدرس 
-http://techdocs.postgresql.org/guides/GUITools مراجعه كنيد.
-2.4) با چه زبانهاي برنامه‌نويسي مي‌توان با PostgreSQL‌ ارتباط برقرار كرد؟
-بيشتر زبانهاي برنامه‌نويسي مي‌توانند با PostgreSQL‌ ارتباط برقرار كنند. به همراه 
- سورس PostgreSQL تعدادي از واسطهاي مورد نياز براي ارتباط با پايگاه داده از طريق 
-زبانهاي مختلف آمده است كه در زير ليست آنها را مشاهده مي‌كنيد.
+Ú¯Ø±ÙˆÙ‡Ù‡Ø§ÙŠ Ù¾Ø³ØªÙŠ Ø¯ÙŠÚ¯Ø±ÙŠ Ù†ÙŠØ² Ø¯Ø± Ø²Ù…ÙŠÙ†Ù‡ PostgreSQLâ€Œ ÙˆØ¬ÙˆØ¯ 
+Ø¯Ø§Ø±Ø¯  ÙƒÙ‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†ÙŠØ¯ Ø¯Ø± Ø³Ø§ÙŠØª http://www.postgresql.org 
+Ø¨Ø¨ÙŠÙ†ÙŠØ¯.
+Ù‡Ù…Ú†Ù†ÙŠÙ† ÙŠÙƒ ÙƒØ§Ù†Ø§Ù„ IRC Ø±ÙˆÙŠ Freenode Ùˆ EFNet Ø¨Ù†Ø§Ù… PostgreSQL# 
+ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯. Ø´Ù…Ø§ Ù…ÙŠâ€ŒØªÙˆØ§Ù†ÙŠØ¯ Ø§Ø² ÙØ±Ù…Ø§Ù† ÙŠÙˆÙ†ÙŠÙƒØ³ÙŠ irc 
+-c '#PostgreSQL' "$USER" irc.phoenix.net. ÙŠØ§ irc -c '#PostgreSQL' "$USER" 
+irc.freenode.net Ø§Ø³ØªÙØ§Ø¯Ù‡ ÙƒÙ†ÙŠØ¯.
+Ù„ÙŠØ³Øª Ø´Ø±ÙƒØªÙ‡Ø§ÙŠÙŠ ÙƒÙ‡ Ø§Ø² Ø·Ø±ÙŠÙ‚ Ø¢Ù†Ù‡Ø§ Ù…ÙŠâ€ŒØªÙˆØ§Ù†ÙŠØ¯ 
+Ø®Ø¯Ù…Ø§Øª Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ ØªØ¬Ø§Ø±ÙŠ Ø¯Ø± Ø²Ù…ÙŠÙ†Ù‡ PostgreSQL Ø¯Ø±ÙŠØ§ÙØª 
+ÙƒÙ†ÙŠØ¯ Ø¯Ø± Ø§ÙŠÙ† Ø¢Ø¯Ø±Ø³ http://techdocs.postgresql.org/companies.php 
+Ù…ÙˆØ¬ÙˆØ¯ Ø§Ø³Øª.
+1.7) Ø¢Ø®Ø±ÙŠÙ† Ù†Ø³Ø®Ù‡ Ø§Ø¹Ù„Ø§Ù… Ø´Ø¯Ù‡ Ú†ÙŠØ³ØªØŸ
+Ø¢Ø®Ø±ÙŠÙ† Ù†Ø³Ø®Ù‡ PostgreSQLâ€Œ  ÙƒÙ‡ ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯ 7.4.3 Ø§Ø³Øª.
+Ù‡Ø¯Ù Ù…Ø§ Ø¢Ù† Ø§Ø³Øª ÙƒÙ‡ Ù‡Ø± 6 Ù…Ø§Ù‡ ØªØ§ 8 Ù…Ø§Ù‡ ÙŠÙƒ Ù†Ø³Ø®Ù‡ Ø¬Ø¯ÙŠØ¯ 
+Ø§Ø±Ø§Ø¦Ù‡ Ø´ÙˆØ¯.
+1.8) Ú†Ù‡ Ù…Ø³ØªÙ†Ø¯Ø§Øª Ùˆ Ø±Ø§Ù‡Ù†Ù…Ø§Ø¦ÙŠÙ‡Ø§ÙŠÙŠ ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ù†Ø¯ØŸ
+Ú†Ù†Ø¯ÙŠÙ† ÙƒØªØ§Ø¨Ú†Ù‡ Ùˆ ØµÙØ­Ø§Øª Ø±Ø§Ù‡Ù†Ù…Ø§ Ùˆ Ù…Ø«Ø§Ù„Ù‡Ø§ÙŠ ÙƒÙˆÚ†Ùƒ 
+Ù‡Ù…Ø±Ø§Ù‡ Ø¨Ø§ Ù…ØªÙ† Ø§ØµÙ„ÙŠ PostgreSQLâ€Œ Ø¯Ø± Ø´Ø§Ø®Ù‡ doc ÙˆØ¬ÙˆØ¯ 
+Ø¯Ø§Ø±Ø¯. Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† ØµÙØ­Ø§Øª Ø±Ø§Ù‡Ù†Ù…Ø§ Ù…ÙŠâ€ŒØªÙˆØ§Ù†ÙŠØ¯ Ø¨Ù‡ 
+Ø³Ø§ÙŠØª http://www.PostgreSQL.org/docs  Ù†ÙŠØ² Ù…Ø±Ø§Ø¬Ø¹Ù‡ Ù†Ù…Ø§ÙŠÙŠØ¯.
+Ø¯Ùˆ ÙƒØªØ§Ø¨ Ø¯Ø± Ø²Ù…ÙŠÙ†Ù‡ PostgreSQLâ€Œ  Ø¯Ø± Ø¢Ø¯Ø±Ø³â€ŒÙ‡Ø§ÙŠ 
+http://www.PostgreSQL.org/docs/awbook.htm Ùˆ http://www.commandprompt.com/ppbook 
+ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯. Ù„ÙŠØ³ØªÙŠ Ø§Ø² ÙƒØªØ§Ø¨Ù‡Ø§ÙŠÙŠ ÙƒÙ‡ Ù‚Ø§Ø¨Ù„ Ø®Ø±ÙŠØ¯ 
+Ø§Ø³Øª Ø¯Ø± Ø¢Ø¯Ø±Ø³ http://techdocs.PostgreSQL.org/techdocs/bookreviews.php 
+ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯. Ù‡Ù…Ú†Ù†ÙŠÙ† Ù„ÙŠØ³ØªÙŠ Ø§Ø² Ù…Ù‚Ø§Ù„Ø§Øª ÙÙ†ÙŠ Ø¯Ø± 
+Ù…ÙˆØ±Ø¯ PostgreSQL Ø¯Ø± Ø¢Ø¯Ø±Ø³ http://techdocs.PostgreSQL.org ÙˆØ¬ÙˆØ¯ 
+Ø¯Ø§Ø±Ø¯.
+Ø¨Ø±Ù†Ø§Ù…Ù‡ psql ÙŠÙƒ Ø¯Ø³ØªÙˆØ± d\ Ø¯Ø§Ø±Ø¯ ÙƒÙ‡ Ø§Ø·Ù„Ø§Ø¹Ø§ØªÙŠ Ø¯Ø± 
+Ù…ÙˆØ±Ø¯ Ø§Ù†ÙˆØ§Ø¹ Ø¯Ø§Ø¯Ù‡â€ŒÙ‡Ø§ÙŠ Ù‚Ø§Ø¨Ù„ ØªØ¹Ø±ÙŠÙ Ùˆ Ø¹Ù…Ù„Ú¯Ø±â€ŒÙ‡Ø§ 
+Ùˆ ØªÙˆØ§Ø¨Ø¹ Ùˆ ... Ø¨Ù‡ Ù…Ø§ Ù†Ø´Ø§Ù† Ù…ÙŠâ€ŒØ¯Ù‡Ø¯. Ø¯Ø± Ø³Ø§ÙŠØª Ø§ØµÙ„ÙŠ 
+Ù…Ø§ Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ø¨ÙŠØ´ØªØ±ÙŠ Ø±Ø§ Ù…ÙŠâ€ŒØªÙˆØ§Ù†ÙŠØ¯ Ù¾ÙŠØ¯Ø§ ÙƒÙ†ÙŠØ¯.
+1.9) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… Ø§Ø²Ø§Ø´ÙƒØ§Ù„Ø§Øª Ø´Ù†Ø§Ø®ØªÙ‡ Ø´Ø¯Ù‡ Ùˆ ÙŠØ§ 
+Ø§Ù…ÙƒØ§Ù†Ø§ØªÙŠ ÙƒÙ‡ Ø¯Ø± Ø§ÙŠÙ† Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯  
+Ù…Ø·Ù„Ø¹ Ø´ÙˆÙ…ØŸ
+PostgreSQL ÙŠÙƒ Ø²ÙŠØ± Ù…Ø¬Ù…ÙˆØ¹Ù‡ Ù¾ÙŠØ´Ø±ÙØªÙ‡ Ø§Ø² SQL-92 Ø±Ø§ 
+Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ Ù…ÙŠâ€ŒÙƒÙ†Ø¯. Ø¯Ø± Ù„ÙŠØ³Øª  TODO   Ø§ÙØ´ÙƒØ§Ù„Ø§Øª 
+Ø´Ù†Ø§Ø®ØªÙ‡ Ø´Ø¯Ù‡ ÙŠØ§ Ø§Ù…ÙƒØ§Ù†Ø§ØªÙŠ ÙƒÙ‡ ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯ Ùˆ ÙŠØ§ 
+Ø¨Ø±Ù†Ø§Ù…Ù‡â€Œâ€ŒÙ‡Ø§ÙŠ Ø¢ÙŠÙ†Ø¯Ù‡ Ø¢Ù…Ø¯Ù‡ Ø§Ø³Øª.
+1.10) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… Ø²Ø¨Ø§Ù† SQL Ø±Ø§ ÙŠØ§Ø¯ Ø¨Ú¯ÙŠØ±Ù…ØŸ
+ÙƒØªØ§Ø¨ PostgreSQL Ø¯Ø± Ø¢Ø¯Ø±Ø³ SQL http://www.PostgreSQL.org/docs/awbook.html 
+â€ŒØ±Ø§ Ø¢Ù…ÙˆØ²Ø´ Ù…ÙŠâ€ŒØ¯Ù‡Ø¯. Ù‡Ù…Ú†Ù†ÙŠÙ† ÙŠÙƒ ÙƒØªØ§Ø¨ Ø¯Ø± Ø¢Ø¯Ø±Ø³ 
+http://www.commandprompt.com/ppbook ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯. ÙŠÙƒ Ø±Ø§Ù‡Ù†Ù…Ø§ÙŠ 
+Ø®ÙŠÙ„ÙŠ Ø®ÙˆØ¨ Ù‡Ù… Ø¯Ø± Ø³Ø§ÙŠØªâ€ŒÙ‡Ø§ÙŠ  
+http://www.intermedia.net/support/sql/sqltut.shtm Ùˆ 
+http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM Ùˆ  
+http://sqlcourse.com Ø¯Ø± Ù…ÙˆØ±Ø¯ SQL ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯.
+ÙƒØªØ§Ø¨ Ø¯ÙŠÚ¯Ø±ÙŠ ÙƒÙ‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù† Ø¨Ø±Ø§ÙŠ ÙŠØ§Ø¯Ú¯ÙŠØ±ÙŠ SQL Ø§Ø² Ø¢Ù† 
+Ø§Ø³ØªÙØ§Ø¯Ù‡ ÙƒØ±Ø¯ ÙƒØªØ§Ø¨ "SQL Ø±Ø§ Ø¯Ø± 21 Ø±ÙˆØ² ÙŠØ§Ø¯ Ø¨Ú¯ÙŠØ±ÙŠØ¯ØŒâ€Œ 
+ÙˆÙŠØ±Ø§ÙŠØ´ Ø¯ÙˆÙ…" Ø¯Ø± Ø³Ø§ÙŠØª 
+http://members.tripod.com/er4ebus/sql/index.htm Ù…ÙŠâ€ŒØ¨Ø§Ø´Ø¯.
+ØªØ¹Ø¯Ø§Ø¯ Ø²ÙŠØ§Ø¯ÙŠ Ø§Ø² ÙƒØ§Ø±Ø¨Ø±Ø§Ù† ÙƒØªØ§Ø¨ The Practical SQL Ø±Ø§ 
+ØªØ±Ø¬ÙŠØ­ Ù…ÙŠâ€ŒØ¯Ù‡Ù†Ø¯. ÙƒØªØ§Ø¨ Ø¯ÙŠÚ¯Ø± The Complete Refrence SQL 
+Ø§Ù†ØªØ´Ø§Ø±Ø§Øª McGraw-Hill Ù…ÙŠâ€ŒØ¨Ø§Ø´Ø¯.
+1.11) Ø¢ÙŠØ§ PostgreSQL Ù…Ø´ÙƒÙ„ Y2Kâ€Œ Ø¯Ø§Ø±Ø¯ ÙŠØ§ Ø®ÙŠØ±ØŸ
+Ø®ÙŠØ±ØŒâ€ŒPostgreSQLâ€Œ Ø¨Ø§ ØªØ§Ø±ÙŠØ®â€ŒÙ‡Ø§ÙŠ Ù‚Ø¨Ù„ Ùˆ Ø¨Ø¹Ø¯ Ø§Ø² 2000 
+Ù…Ø´ÙƒÙ„ÙŠ Ù†Ø¯Ø§Ø±Ø¯.
+1.12) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… Ø¨Ù‡ ØªÙŠÙ… Ø¨Ø±Ù†Ø§Ù…Ù‡ Ù†ÙˆÙŠØ³ PostgreSQL 
+Ù…Ù„Ø­Ù‚ Ø´ÙˆÙ…ØŸ
+Ø§Ø¨ØªØ¯Ø§ØŒâ€ŒØ¢Ø®Ø±ÙŠÙ† Ø³ÙˆØ±Ø³ Ø±Ø§ Ø¯ÙˆÙ†Ù„ÙˆØ¯ ÙƒØ±Ø¯Ù‡ Ùˆ Ù…Ø³ØªÙ†Ø¯Ø§Øª 
+Ù…Ø±Ø¨ÙˆØ· Ø¨Ù‡ Ø¨Ø±Ù†Ø§Ù…Ù‡â€ŒÙ†ÙˆÙŠØ³ÙŠ PostgreSQL Ø±Ø§ Ø¯Ø± Ø³Ø§ÙŠØª 
+Ù…Ø·Ø§Ù„Ø¹Ù‡ ÙƒÙ†ÙŠØ¯. Ø³Ù¾Ø³ Ø¨Ù‡ Ú¯Ø±ÙˆÙ‡Ù‡Ø§ÙŠ Ù¾Ø³ØªÙŠ â€Œ pgsql-patches Ùˆ 
+pgsql-hackers  Ø¹Ø¶Ùˆ Ø´ÙˆÙŠØ¯. Ø¯Ø± Ù…Ø±Ø­Ù„Ù‡ Ø¢Ø®Ø± ÙˆØµÙ„Ù‡â€ŒÙ‡Ø§ÙŠ Ø¨Ø§ 
+ÙƒÙŠÙÙŠØª Ø¨Ø§Ù„Ø§ Ø±Ø§ Ø¨Ù‡ pgsql-patches Ø§Ø±Ø³Ø§Ù„ ÙƒÙ†ÙŠØ¯.
+ØªØ¹Ø¯Ø§Ø¯ Ø²ÙŠØ§Ø¯ÙŠ Ø§Ø² Ø¨Ø±Ù†Ø§Ù…Ù‡â€ŒÙ†ÙˆÙŠØ³Ø§Ù† ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ù†Ø¯ ÙƒÙ‡ 
+Ø§Ù…ØªÙŠØ§Ø² Ø§Ù†Ø¬Ø§Ù… ØªØºÙŠÙŠØ±Ø§Øª Ø¯Ø± cvsâ€Œ Ø±Ø§ Ø¯Ø§Ø±Ù†Ø¯. Ù‡Ø± 
+ÙƒØ¯Ø§Ù… Ø§Ø² Ø¢Ù†Ù‡Ø§ ØªØ¹Ø¯Ø§Ø¯ Ø²ÙŠØ§Ø¯ÙŠ ÙˆØµÙ„Ù‡â€Œâ€Œ Ø¨Ø§ ÙƒÙŠÙÙŠØª 
+Ø¨Ø§Ù„Ø§ Ø¨Ù‡ Ú¯Ø±ÙˆÙ‡ Ø§Ø±Ø³Ø§Ù„ ÙƒØ±Ø¯Ù‡â€ŒØ§Ù†Ø¯ ÙƒÙ‡ Ø§Ø¹ØªÙ…Ø§Ø¯ 
+Ú¯Ø±Ø¯Ø§Ù†Ù†Ø¯Ú¯Ø§Ù† PostgreSQL Ø±Ø§ Ø¨Ù‡ Ø¯Ø³Øª Ø¢ÙˆØ±Ø¯Ù‡â€ŒØ§Ù†Ø¯.
+1.13) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… ÙŠÙƒ Ø§ÙØ´ÙƒØ§Ù„ Ø±Ø§ Ø¨Ù‡ Ú¯Ø±ÙˆÙ‡ 
+Ø¨Ø±Ù†Ø§Ù…Ù‡ Ù†ÙˆÙŠØ³ Ø§Ø¹Ù„Ø§Ù… ÙƒÙ†Ù…ØŸ
+Ù„Ø·ÙØ§Ù‹ ØµÙØ­Ù‡ Ù…Ø±Ø¨ÙˆØ· Ø¨Ù‡ Ø§ÙØ´ÙƒØ§Ù„Ø§Øª PostgreSQL Ø±Ø§ Ø¯Ø± 
+Ø³Ø§ÙŠØª http://www.PostgreSQL.org/bugs/bugs.php Ù…Ø´Ø§Ù‡Ø¯Ù‡â€Œ ÙƒÙ†ÙŠØ¯. Ø¯Ø± 
+Ø§ÙŠÙ† Ø³Ø§ÙŠØª Ù†Ø­ÙˆÙ‡ Ú¯Ø²Ø§Ø±Ø´ Ùˆ Ø§Ø±Ø³Ø§Ù„ ÙŠÙƒ Ø§Ø´ÙƒØ§Ù„ ØªÙˆØ¶ÙŠØ­ 
+Ø¯Ø§Ø¯Ù‡ Ø´Ø¯Ù‡ Ø§Ø³Øª.
+ Ù‡Ù…Ú†Ù†ÙŠÙ† Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† Ù†Ø³Ø®Ù‡â€ŒÙ‡Ø§ÙŠ Ø¬Ø¯ÙŠØ¯ØªØ± PostgreSQL Ùˆ 
+ÙŠØ§ ÙˆØ¬ÙˆØ¯ ÙŠÙƒ ÙˆØµÙ„Ù‡ Ø¬Ø¯ÙŠØ¯ Ø§Ø² Ø³Ø§ÙŠØª ftp://ftp.PostgreSQL.org/pub 
+Ø¨Ø§Ø²Ø¯ÙŠØ¯ ÙƒÙ†ÙŠØ¯.
+1.14) ÙˆØ¶Ø¹ÙŠØª PostgreSQLâ€Œ Ø¯Ø± Ù…Ù‚Ø§ÙŠØ³Ù‡ Ø¨Ø§ Ø³Ø§ÙŠØ± DBMSÙ‡Ø§ Ø¨Ù‡ 
+Ú†Ù‡ ØµÙˆØ±Øª Ø§Ø³ØªØŸ
+Ø±Ø§Ù‡Ù‡Ø§ÙŠ Ù…Ø®ØªÙ„ÙÙŠ Ø¨Ø±Ø§ÙŠ Ø§Ù†Ø¯Ø§Ø²Ù‡â€ŒÚ¯ÙŠØ±ÙŠ Ùˆ Ù…Ù‚Ø§ÙŠØ³Ù‡ 
+Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø±Ù‡Ø§ ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯ ÙƒÙ‡ Ø¹Ø¨Ø§Ø±ØªÙ†Ø¯ Ø§Ø² 
+Ø§Ù…ÙƒØ§Ù†Ø§ØªØŒ ÙƒØ§Ø±Ø§ÙŠÙŠØŒ Ù‚Ø§Ø¨Ù„ÙŠØª Ø§Ø¹ØªÙ…Ø§Ø¯ØŒ Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ Ùˆ 
+Ù‚ÙŠÙ…Øª
+    Ø§Ù…ÙƒØ§Ù†Ø§Øª 
+    PostgreSQL Ø¨ÙŠØ´ØªØ± Ø§Ù…ÙƒØ§Ù†Ø§Øª Ù…ÙˆØ¬ÙˆØ¯ Ø¯Ø± Ø³ÙŠØ³ØªÙ…â€ŒÙ‡Ø§ÙŠ 
+    Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ ØªØ¬Ø§Ø±ÙŠ Ø¨Ø²Ø±Ú¯ Ù†Ø¸ÙŠØ± transactions, subselets, 
+    triggers, views, foreign key referential integrity Ùˆ sophisticated 
+    lockingâ€Œ Ø±Ø§ Ø¯Ø§Ø±Ø¯. Ø¯Ø± PostgreSQLâ€Œâ€Œ Ø§Ù…ÙƒØ§Ù†Ø§ØªÙŠ ÙˆØ¬ÙˆØ¯ 
+    Ø¯Ø§Ø±Ø¯ ÙƒÙ‡ Ù¾Ø§ÙŠÚ¯Ø§Ù‡Ù‡Ø§ÙŠ Ø¯Ø§Ø¯Ù‡ Ø¯ÙŠÚ¯Ø± Ø¢Ù† Ø±Ø§ Ù†Ø¯Ø§Ø±Ù†Ø¯ 
+    Ù†Ø¸ÙŠØ± user-defined typesâ€ŒÙˆ Inheritanceâ€ŒÙˆ rulesâ€ŒÙˆ multi-version 
+    concurrency control 
+
+  ÙƒØ§Ø±Ø§ÙŠÙŠ
+          ÙƒØ§Ø±Ø§ÙŠÙŠ PostgreSQL Ø¯Ø± Ø­Ø¯ Ø¨Ù‚ÙŠÙ‡ Ø³ÙŠØ³ØªÙ…â€ŒÙ‡Ø§ÙŠ 
+  ØªØ¬Ø§Ø±ÙŠ Ùˆ Ù…ØªÙ† Ø¨Ø§Ø² Ø§Ø³Øª. Ø¯Ø± Ø¨Ø¹Ø¶ÙŠ Ù…ÙˆØ§Ø±Ø¯ Ø³Ø±ÙŠØ¹ØªØ± Ùˆ 
+  Ø¯Ø± Ø¨Ø¹Ø¶ÙŠ Ù…ÙˆØ§Ø±Ø¯ Ø§Ø² Ø¢Ù†Ù‡Ø§ ÙƒÙ†Ø¯ØªØ± Ø§Ø³Øª. Ø¯Ø± Ù…Ù‚Ø§ÙŠØ³Ù‡ 
+  Ø¨Ø§ MySQL Ø¨Ø±Ø§ÙŠ ÙƒØ§Ø±Ø¨Ø±Ø§Ù† Ø¨ÙŠØ´ØªØ± Ùˆ Ø¯Ø±Ø®ÙˆØ§Ø³Øªâ€ŒÙ‡Ø§ÙŠ 
+  Ù¾ÙŠÚ†ÙŠØ¯Ù‡ Ùˆ Ø¨Ø§Ø± Ø²ÙŠØ§Ø¯ Ø®ÙˆØ§Ù†Ø¯Ù†/Ù†ÙˆØ´ØªÙ† Ø³Ø±ÙŠØ¹ØªØ± Ø§Ø³Øª. 
+  Ø¯Ø± Ø¯Ø±Ø®ÙˆØ§Ø³Øªâ€ŒÙ‡Ø§ÙŠ Ø³Ø§Ø¯Ù‡ SELECTâ€Œ Ø§Ø² MySQL ÙƒÙ†Ø¯ØªØ± Ø§Ø³Øª. 
+  Ø§Ù„Ø¨ØªÙ‡ MySQL Ø®ÙŠÙ„ÙŠ Ø§Ø² Ø§Ù…ÙƒØ§Ù†Ø§Øª PostgreSQL ÙƒÙ‡ Ø¯Ø± Ø¨Ø§Ù„Ø§ 
+  Ø¨Ù‡ Ø¢Ù† Ø§Ø´Ø§Ø±Ù‡ Ø´Ø¯ Ø±Ø§ Ù†Ø¯Ø§Ø±Ø¯. Ù‡Ø¯Ù Ø§ØµÙ„ÙŠ Ù…Ø§ Ø§Ù…ÙƒØ§Ù†Ø§Øª 
+  Ùˆ Ù‚Ø§Ø¨Ù„ÙŠØª Ø§Ø¹ØªÙ…Ø§Ø¯ Ø¨Ø§Ù„Ø§Ø³Øª Ø¯Ø± Ø¶Ù…Ù† Ø¢Ù†ÙƒÙ‡ ØªÙ„Ø§Ø´ 
+  Ù…ÙŠâ€ŒÙƒÙ†ÙŠÙ… ØªØ§ ÙƒØ§Ø±Ø§ÙŠÙŠ Ø¢Ù† Ù†ÙŠØ² Ø¨Ù‡Ø¨ÙˆØ¯ ÙŠØ§Ø¨Ø¯. Ø¯Ø± 
+  Ø¢Ø¯Ø±Ø³ http://openacs.org/philosophy/why-not-mysql.html ÙŠÙƒ Ù…Ù‚Ø§ÙŠØ³Ù‡ 
+  Ø¬Ø§Ù„Ø¨ Ø¨ÙŠÙ† MySQL Ùˆ PostgreSQL ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯. Ø§Ø² Ø·Ø±Ù Ø¯ÙŠÚ¯Ø± 
+  MySQLâ€Œ ÙŠÙƒ Ø´Ø±ÙƒØª Ø§Ø³Øª ÙƒÙ‡ Ù…Ø­ØµÙˆÙ„ Ø®ÙˆØ¯ Ø±Ø§ Ø¨Ù‡ ØµÙˆØ±Øª Ù…ØªÙ† 
+  Ø¨Ø§Ø² Ø§Ø±Ø§Ø¦Ù‡ Ù…ÙŠâ€ŒÙƒÙ†Ø¯ ÙˆÙ„ÙŠ Ø¨Ø±Ø§ÙŠ Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø± ØºÙŠØ± 
+  Ù…ØªÙ† Ø¨Ø§Ø² Ø®ÙˆØ¯ Ø§Ø­ØªÙŠØ§Ø¬ Ø¨Ù‡ Ù„ÙŠØ³Ø§Ù†Ø³ ØªØ¬Ø§Ø±ÙŠ Ø¯Ø§Ø±Ø¯ Ø¨Ø± 
+  Ø®Ù„Ø§Ù PostgreSQL ÙƒÙ‡ ÙŠÙƒ Ú¯Ø±ÙˆÙ‡ ÙƒØ§Ù…Ù„Ø§Ù‹ Ù…ØªÙ† Ø¨Ø§Ø² Ù‡Ø³ØªÙ†Ø¯.
+
+    Ù‚Ø§Ø¨Ù„ÙŠØª Ø§Ø·Ù…ÙŠÙ†Ø§Ù† 
+    Ù…Ø§ ÙÙƒØ± Ù…ÙŠâ€ŒÙƒÙ†ÙŠÙ… ÙƒÙ‡ ÙŠÙƒ Ø³ÙŠØ³ØªÙ… Ù¾Ø§ÙŠÚ¯Ø§Ù‡ 
+    Ø¯Ø§Ø¯Ù‡â€ŒØ§ÙŠ ÙƒÙ‡ Ù…Ø·Ù…Ø¦Ù† Ù†Ø¨Ø§Ø´Ø¯ Ø§Ø±Ø²Ø´ÙŠ Ù†Ø¯Ø§Ø±Ø¯. Ù…Ø§ 
+    ØªÙ…Ø§Ù… ØªÙ„Ø§Ø´Ù…Ø§Ù† Ø±Ø§ Ø¨Ø±Ø§ÙŠ Ø§Ø±Ø§Ø¦Ù‡ ÙƒØ¯Ù‡Ø§ÙŠ Ù¾Ø§ÙŠØ¯Ø§Ø±ÙŠ 
+    ÙƒÙ‡ Ø¨Ù‡ Ø®ÙˆØ¨ÙŠ ØªØ³Øª Ø´Ø¯Ù‡ Ø¨Ø§Ø´Ù†Ø¯ Ùˆ ÙƒÙ…ØªØ±ÙŠÙ† Ø§ÙØ´ÙƒØ§Ù„Ø§Øª 
+    Ø±Ø§ Ø¯Ø§Ø´ØªÙ‡ Ø¨Ø§Ø´Ù†Ø¯ Ù…ÙŠâ€ŒÙƒÙ†ÙŠÙ…. Ù‡Ø± Ù†Ø³Ø®Ù‡ Ø¬Ø¯ÙŠØ¯ÙŠ ÙƒÙ‡ 
+    Ø§Ø±Ø§Ø¦Ù‡ Ù…ÙŠâ€ŒØ´ÙˆØ¯ Ø­Ø¯Ø§Ù‚Ù„ ÙŠÙƒ Ù…Ø§Ù‡ Ø±Ø§ Ø¯Ø± Ù…Ø±Ø­Ù„Ù‡ ØªØ³Øª 
+    Ø¨ØªØ§ Ù…ÙŠâ€ŒÚ¯Ø°Ø±Ø§Ù†Ø¯. Ù…Ø§ Ø¨Ø± Ø§ÙŠÙ† Ø¨Ø§ÙˆØ± Ù‡Ø³ØªÙŠÙ… ÙƒÙ‡ 
+    Ù‚Ø§Ø¨Ù„ÙŠØª Ø§Ø·Ù…ÙŠÙ†Ø§Ù† PostgreSQLâ€Œ Ø¯Ø± Ù…Ù‚Ø§ÙŠØ³Ù‡ Ø¨Ø§ Ø³Ø§ÙŠØ± 
+    Ø³ÙŠØ³ØªÙ…â€ŒÙ‡Ø§ÙŠ Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ù‚Ø§Ø¨Ù„ ØªÙˆØ¬Ù‡ Ø§Ø³Øª Ùˆ 
+    Ù†Ø³Ø®Ù‡â€ŒÙ‡Ø§ÙŠÙŠ ÙƒÙ‡ ØªØ§ÙƒÙ†ÙˆÙ† Ø§Ø±Ø§Ø¦Ù‡ Ø´Ø¯Ù‡ Ø§Ø³Øª Ù†Ø´Ø§Ù† 
+    Ù…ÙŠâ€ŒØ¯Ù‡Ø¯ ÙƒÙ‡ Ù…Ø§ ØªÙˆØ§Ù†Ø§ÙŠÙŠ Ø§Ø±Ø§Ø¦Ù‡ ÙŠÙƒ Ø³ÙŠØ³ØªÙ… Ù‚ÙˆÙŠ Ùˆ 
+    Ù…Ø­ÙƒÙ… Ùˆ Ù…Ø·Ù…Ø¦Ù† Ø±Ø§ ÙƒÙ‡ Ø¢Ù…Ø§Ø¯Ù‡ Ø¨Ù‡Ø±Ù‡â€ŒØ¨Ø±Ø¯Ø§Ø±ÙŠ Ø§Ø³Øª 
+    Ø¯Ø§Ø±ÙŠÙ…. 
+    Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ 
+    Ú¯Ø±ÙˆÙ‡Ù‡Ø§ÙŠ Ù¾Ø³ØªÙŠ Ù…Ø§ Ø§Ù…ÙƒØ§Ù† Ø§Ø±ØªØ¨Ø§Ø· Ùˆ ØªÙ…Ø§Ø³ Ø¨Ù‡ 
+    Ú¯Ø±ÙˆÙ‡ Ø¨Ø²Ø±Ú¯ÙŠ Ø§Ø² Ø¨Ø±Ù†Ø§Ù…Ù‡ Ù†ÙˆÙŠØ³Ø§Ù† Ùˆ ÙƒØ§Ø±Ø¨Ø±Ø§Ù† Ø±Ø§ 
+    Ù…ÙŠâ€ŒØ¯Ù‡Ø¯ ÙƒÙ‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù†Ø¯ Ø¯Ø± Ø­Ù„ Ù…Ø´ÙƒÙ„Ø§Øª Ø¨Ù‡ 
+    Ø¯ÙŠÚ¯Ø±Ø§Ù† ÙƒÙ…Ùƒ ÙƒÙ†Ù†Ø¯. Ø¯Ø³ØªØ±Ø³ÙŠ Ù…Ø³ØªÙ‚ÙŠÙ… Ø¨Ù‡ 
+    Ø¨Ø±Ù†Ø§Ù…Ù‡â€ŒÙ†ÙˆÙŠØ³Ø§Ù† Ùˆ Ú¯Ø±ÙˆÙ‡Ù‡Ø§ÙŠ ÙƒØ§Ø±Ø¨Ø±Ø§Ù† Ùˆ 
+    Ø±Ø§Ù‡Ù†Ù…Ø§Ù‡Ø§ Ùˆ ÙƒØ¯Ø§ØµÙ„ÙŠ Ø¨Ø§Ø¹Ø« Ù…ÙŠâ€ŒØ´ÙˆØ¯ ÙƒÙ‡ 
+    Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ PostgreSQL Ù†Ø³Ø¨Øª Ø¨Ù‡ Ø³Ø§ÙŠØ± Ù¾Ø§ÙŠÚ¯Ø§Ù‡Ù‡Ø§ÙŠ 
+    Ø¯Ø§Ø¯Ù‡ Ø¨Ù‡ Ù†Ø­Ùˆ Ø¨Ù‡ØªØ±ÙŠ Ø§Ù†Ø¬Ø§Ù… Ø´ÙˆØ¯. Ù‡Ù…Ú†Ù†ÙŠÙ† Ø§Ù…ÙƒØ§Ù† 
+    Ø§Ø±Ø§Ø¦Ù‡ Ø®Ø¯Ù…Ø§Øª Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ Ø¨Ù‡ ØµÙˆØ±Øª ØªØ¬Ø§Ø±ÙŠ Ù†ÙŠØ² 
+    ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯. Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ø¨ÙŠØ´ØªØ± Ø¨Ù‡ FAQ 
+    section 1.6  Ù…Ø±Ø§Ø¬Ø¹Ù‡ ÙƒÙ†ÙŠØ¯. 
+    Ù‚ÙŠÙ…Øª 
+    Ù‡Ù… Ø¨Ø±Ø§ÙŠ Ø§Ø³ØªÙØ§Ø¯Ù‡ ØªØ¬Ø§Ø±ÙŠ Ùˆ Ù‡Ù… ØºÙŠØ± ØªØ¬Ø§Ø±ÙŠ Ù‡ÙŠÚ† 
+    Ù‡Ø²ÙŠÙ†Ù‡â€ŒØ§ÙŠ Ù†Ø¨Ø§ÙŠØ¯ Ù¾Ø±Ø¯Ø§Ø®Øª Ø´ÙˆØ¯. Ù‡ÙŠÚ† Ù…Ø­Ø¯ÙˆØ¯ÙŠØªÙŠ 
+    Ø¨Ø±Ø§ÙŠ Ø§Ù†Ø¬Ø§Ù… ØªØºÙŠÙŠØ±Ø§Øª Ø¯Ø± PostgreSQL ØªÙˆØ³Ø· Ø§Ø³ØªÙØ§Ø¯Ù‡ 
+    ÙƒÙ†Ù†Ø¯Ú¯Ø§Ù† ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯ Ø¨Ù‡ Ø¬Ø² Ù…ÙˆØ§Ø±Ø¯ÙŠ ÙƒÙ‡ Ø¯Ø± 
+    Ù„ÙŠØ³Ø§Ù†Ø³ BSD Ø¨Ù‡ Ø¢Ù† Ø§Ø´Ø§Ø±Ù‡ Ø´Ø¯Ù‡ Ø§Ø³Øª. 
+1.15) Ù…Ù† Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… Ø§Ø² Ù†Ø¸Ø± Ù…Ø§Ù„ÙŠ Ø¨Ù‡ PostgreSQL 
+ÙƒÙ…Ùƒ ÙƒÙ†Ù…ØŸ
+PostgreSQL  Ø¯Ø§Ø±Ø§ÙŠ ÙŠÙƒ Ø³Ø§Ø®ØªØ§Ø± ØªØ´ÙƒÙŠÙ„Ø§ØªÙŠ Ø¯Ø±Ø¬Ù‡ Ø§ÙˆÙ„ Ø§Ø³Øª 
+ÙƒÙ‡ Ø¢Ù† Ø±Ø§ Ù…Ø¯ÙŠÙˆÙ† Marc Fournierâ€Œ Ø§Ø³Øª ÙƒÙ‡ Ø§ÙŠÙ† Ø³Ø§Ø®ØªØ§Ø± Ø±Ø§ 
+Ø§ÙŠØ¬Ø§Ø¯ ÙƒØ±Ø¯Ù‡ Ø§Ø³Øª.
+ÙƒÙŠÙÙŠØª ÙŠÙƒ Ø³Ø§Ø®ØªØ§Ø± Ø¨Ø±Ø§ÙŠ ÙŠÙƒ Ù¾Ø±ÙˆÚ˜Ù‡ Ù…ØªÙ† Ø¨Ø§Ø² Ø¨Ø³ÙŠØ§Ø± 
+Ø§Ù‡Ù…ÙŠØª Ø¯Ø§Ø±Ø¯. ÙŠÙƒ Ø³Ø§Ø®ØªØ§Ø± Ø®ÙˆØ¨ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ø¯ Ù…Ø§Ù†Ø¹ Ø§Ø² 
+Ø­ÙˆØ§Ø¯Ø«ÙŠ Ø´ÙˆØ¯ ÙƒÙ‡ Ø¯Ø± Ø­Ø±ÙƒØª Ø±ÙˆØ¨Ù‡â€ŒØ¬Ù„ÙˆÙŠ Ù¾Ø±ÙˆÚ˜Ù‡ Ø®Ù„Ù„ÙŠ 
+ÙˆØ§Ø±Ø¯ Ù…ÙŠâ€ŒÙƒÙ†Ù†Ø¯.
+Ø§Ù„Ø¨ØªÙ‡ Ø§ÙŠÙ† Ø³Ø§Ø®ØªØ§Ø± ØªØ´ÙƒÙŠÙ„Ø§ØªÙŠ Ø§Ø±Ø²Ø§Ù† Ù†ÙŠØ³Øª. 
+Ù‡Ø²ÙŠÙ†Ù‡â€ŒÙ‡Ø§ÙŠ Ø«Ø§Ø¨Øª Ù…Ø§Ù‡Ø§Ù†Ù‡ Ùˆ Ø±ÙˆØ²Ù…Ø±Ù‡ Ø¨Ø±Ø§ÙŠ 
+Ù†Ú¯Ù‡Ø¯Ø§Ø±ÙŠ Ùˆ Ø­ÙØ¸ Ø§ÙŠÙ† Ø³Ø§Ø®ØªØ§Ø± Ù…ÙˆØ±Ø¯ Ù†ÙŠØ§Ø² Ø§Ø³Øª. Ø§Ú¯Ø± 
+Ø´Ù…Ø§ ÙŠØ§ Ø´Ø±ÙƒØª Ø´Ù…Ø§ Ù…Ø§ÙŠÙ„ Ø§Ø³Øª ÙƒÙ‡ Ø§Ø² Ù†Ø¸Ø± Ù…Ø§Ù„ÙŠ Ø¨Ù‡ 
+Ø§ÙŠÙ† Ø­Ø±ÙƒØª ÙƒÙ…Ùƒ ÙƒÙ†Ø¯ Ù„Ø·ÙØ§Ù‹ Ø¨Ù‡ Ø³Ø§ÙŠØª 
+http://store.pgsql.com/shopping Ù…Ø±Ø§Ø¬Ø¹Ù‡ ÙƒØ±Ø¯Ù‡ Ùˆ ÙƒÙ…Ùƒ Ø®ÙˆØ¯ Ø±Ø§ 
+Ø§Ù‡Ø¯Ø§ ÙƒÙ†ÙŠØ¯.
+Ù‡Ø± Ú†Ù†Ø¯ Ø¯Ø± ØµÙØ­Ù‡ Ø§ØµÙ„ÙŠ Ø¹Ø¨Ø§Ø±Øª PostgreSQL,Incâ€Œ Ø°ÙƒØ± Ø´Ø¯Ù‡ 
+Ø§Ø³Øª ÙˆÙ„ÙŠ Ù…Ø´Ø§Ø±ÙƒØª Ø¹Ù…Ø¯ØªØ§Ù‹ Ø¨Ø±Ø§ÙŠ Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ Ø§Ø² 
+Ù¾Ø±ÙˆÚ˜Ù‡ PostgreSQLâ€Œ Ù…ÙŠ Ø¨Ø§Ø´Ø¯ Ùˆ Ù†Ù‡ Ø¨Ø±Ø§ÙŠ ÙŠÙƒ Ø´Ø±ÙƒØª Ù…Ø´Ø®Øµ. 
+Ø§Ú¯Ø± ØªØ±Ø¬ÙŠØ­ Ù…ÙŠâ€ŒØ¯Ù‡ÙŠØ¯ Ù…ÙŠâ€ŒØªÙˆØ§Ù†ÙŠØ¯ ÙŠÙƒ Ú†Ùƒ Ø¨Ù‡ Ø¢Ø¯Ø±Ø³ 
+Ù…Ø´Ø®Øµ Ø´Ø¯Ù‡ Ø§Ø±Ø³Ø§Ù„ ÙƒÙ†ÙŠØ¯.
+Ø§Ú¯Ø± ÙŠÙƒ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÙˆÙÙ‚ Ø§Ø² PostgreSQL Ø³Ø±Ø§Øº Ø¯Ø§Ø±ÙŠØ¯ 
+Ù„Ø·ÙØ§Ù‹ Ø¢Ù† Ø±Ø§ Ø¨Ù‡ Ø³Ø§ÙŠØª http://advocacy.postgresql.org Ú¯Ø²Ø§Ø±Ø´ 
+Ø¯Ù‡ÙŠØ¯.
+
+
+
+Ø³ÙˆØ§Ù„Ø§Øª Ù…Ø±Ø¨ÙˆØ· Ø¨Ù‡ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡
+2.1) Ø¢ÙŠØ§ Ù‡ÙŠÚ† Ø¯Ø±Ø§ÙŠÙˆØ± ODBCâ€Œ Ø¨Ø±Ø§ÙŠ PostgreSQL ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯ØŸ
+Ø¯Ùˆ Ø¯Ø±Ø§ÙŠÙˆØ± ODBC Ø¨Ù†Ø§Ù…Ù‡Ø§ÙŠ psqlODBCâ€Œ Ùˆ OpenLink Ø¨Ø±Ø§ÙŠ 
+PostgreSQLâ€Œ ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯.
+Ø¨Ø±Ø§ÙŠ Ú¯Ø±ÙØªÙ† psqlODBC Ø¨Ù‡ Ø³Ø§ÙŠØª 
+http://gborg.postgresql.org/project/psqlodbc/projdisplay.php Ù…Ø±Ø§Ø¬Ø¹Ù‡ 
+ÙƒÙ†ÙŠØ¯.
+OpenLlink Ø±Ø§ Ø§Ø² Ø§ÙŠÙ† Ø³Ø§ÙŠØª http://www.openlinksw.com 
+Ù…ÙŠâ€ŒØªÙˆØ§Ù†ÙŠØ¯ Ø¨Ú¯ÙŠØ±ÙŠØ¯. Ø§ÙŠÙ† Ø¯Ø±Ø§ÙŠÙˆØ± Ø¨Ø§ 
+Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø±Ù‡Ø§ÙŠ Ù…Ø®ØªÙ„Ù ODBC ÙƒØ§Ø± Ù…ÙŠâ€ŒÙƒÙ†Ø¯ Ø¨Ù†Ø§Ø¨Ø±Ø§ÙŠÙ† 
+Ø´Ù…Ø§ Ù‚Ø§Ø¯Ø± Ø®ÙˆØ§Ù‡ÙŠØ¯ Ø¨ÙˆØ¯ Ø¨Ø§ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² OpenLink Ø±ÙˆÙŠ 
+Ø§ÙƒØ«Ø± Ø³ÙƒÙˆâ€ŒÙ‡Ø§ÙŠÙŠ ÙƒÙ‡ Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø±ODBCâ€ŒØ¯Ø§Ø±Ù†Ø¯ Ø¨Ø¯ÙˆÙ† 
+Ù…Ø´ÙƒÙ„ Ø¨Ù‡ PostgreSQL Ù†ÙŠØ² Ù…ØªØµÙ„ Ø´ÙˆÙŠØ¯.
+Ø§ÙŠÙ† Ù…Ø­ØµÙˆÙ„ Ø¨Ù‡ ÙƒØ³Ø§Ù†ÙŠ ÙƒÙ‡ Ø§Ø­ØªÙŠØ§Ø¬ Ø¨Ù‡ Ø®Ø¯Ù…Ø§Øª 
+Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ ØªØ¬Ø§Ø±ÙŠ Ø¯Ø§Ø±Ù†Ø¯ ÙØ±ÙˆØ®ØªÙ‡ Ù…ÙŠâ€ŒØ´ÙˆØ¯. ÙˆÙ„ÙŠ 
+Ù†Ø³Ø®Ù‡ Ø¢Ø²Ø§Ø¯ Ø§ÙŠÙ† Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø± Ù‡Ù…ÙŠØ´Ù‡ Ø¯Ø± Ø¯Ø±Ø³ØªØ±Ø³ 
+Ù…ÙŠâ€ŒØ¨Ø§Ø´Ø¯. Ø¨Ø±Ø§ÙŠ ÙƒØ³Ø¨ Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ø¨ÙŠØ´ØªØ± Ø³ÙˆØ§Ù„Ø§Øª Ø®ÙˆØ¯ 
+Ø±Ø§ Ø¨Ù‡ Ø¢Ø¯Ø±Ø³ postgres95@openlink.co.uk â€ŒØ§Ø±Ø³Ø§Ù„ Ù†Ù…Ø§ÙŠÙŠØ¯.
+2.2) Ú†Ù‡ Ø§Ø¨Ø²Ø§Ø±Ù‡Ø§ÙŠÙŠ Ø¨Ø±Ø§ÙŠ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² PostgreSQLâ€Œ Ø¨Ø§ 
+ØµÙØ­Ø§Øª ÙˆØ¨ ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯ØŸ
+Ø¯Ø± Ø³Ø§ÙŠØª http://www.webreview.com Ø¨Ø±Ø§ÙŠ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² 
+PostgreSQLâ€Œ Ø¯Ø± ØµÙØ­Ø§Øª ÙˆØ¨ Ø±Ø§Ù‡Ù†Ù…Ø§ÙŠÙŠÙ‡Ø§ÙŠ Ø®ÙˆØ¨ÙŠ ÙˆØ¬ÙˆØ¯ 
+Ø¯Ø§Ø±Ø¯.
+Ø¨Ø±Ø§ÙŠ ØªØ±ÙƒÙŠØ¨ Ùˆ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø¯Ø± ØµÙØ­Ø§Øª ÙˆØ¨ Ø²Ø¨Ø§Ù† PHPâ€Œ ÙŠÙƒ 
+ÙˆØ§Ø³Ø· Ø¨Ø³ÙŠØ§Ø± Ù…Ù†Ø§Ø³Ø¨ Ø§Ø³Øª. Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ø¨ÙŠØ´ØªØ± Ø±Ø§Ø¬Ø¹ Ø¨Ù‡ 
+PHPâ€ŒØ¯Ø± Ø³Ø§ÙŠØª http://www.php.net ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯.
+Ù…Ø«Ø§Ù„Ù‡Ø§ÙŠÙŠ Ù†ÙŠØ² Ø¨Ø§ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² Perlâ€Œ Ùˆ CGI.pm Ùˆ mod_perl 
+ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯.
+2.3) Ø¢ÙŠØ§ PostgreSQLâ€Œ ÙŠÙƒ ÙˆØ§Ø³Ø· ÙƒØ§Ø±Ø¨Ø±ÙŠ Ú¯Ø±Ø§ÙÙŠÙƒÙŠ Ø¯Ø§Ø±Ø¯ØŸ
+Ú†Ù†Ø¯ Ù†Ø±Ù… Ø§ÙØ²Ø§Ø± Ú¯Ø±Ø§ÙÙŠÙƒÙŠ Ø¨Ø±Ø§ÙŠ PostgreSQLâ€Œ ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯ 
+ÙƒÙ‡ Ø´Ø§Ù…Ù„ pgAccess Ø¯Ø±Ø³Ø§ÙŠØª http://www.pgaccess.org Ùˆ pgAdmin III Ø¯Ø± 
+Ø³Ø§ÙŠØª http://www.pgadmin.org Ùˆ RHDB Admin Ø¯Ø± Ø³Ø§ÙŠØª 
+http://sources.redhat.com/rhdb Ùˆ Rekall Ø¯Ø± Ø³Ø§ÙŠØª 
+http://www.thekompany.com/products/rekall  Ù…ÙŠâ€ŒØ¨Ø§Ø´Ø¯. Ù‡Ù…Ú†Ù†ÙŠÙ† ÙŠÙƒ 
+phpPgAdmin Ù‡Ù… Ø¯Ø± Ø³Ø§ÙŠØª http://phppgadmin.sourceforge.net ÙˆØ¬ÙˆØ¯ 
+Ø¯Ø§Ø±Ø¯ ÙƒÙ‡ ÙŠÙƒ ÙˆØ§Ø³Ø· ÙˆØ¨ÙŠ Ø¨Ø±Ø§ÙŠ Ù…Ø¯ÙŠØ±ÙŠØª PostgreSQL 
+Ù…ÙŠâ€ŒØ¨Ø§Ø´Ø¯.
+Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ø¨ÙŠØ´ØªØ± Ø±Ø§Ø¬Ø¹ Ø¨Ù‡ 
+Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø±Ù‡Ø§ÙŠ Ú¯Ø±Ø§ÙÙŠÙƒÙŠ Ø¨Ø±Ø§ÙŠ PostgreSQL Ø¨Ù‡ Ø¢Ø¯Ø±Ø³ 
+http://techdocs.postgresql.org/guides/GUITools Ù…Ø±Ø§Ø¬Ø¹Ù‡ ÙƒÙ†ÙŠØ¯.
+2.4) Ø¨Ø§ Ú†Ù‡ Ø²Ø¨Ø§Ù†Ù‡Ø§ÙŠ Ø¨Ø±Ù†Ø§Ù…Ù‡â€ŒÙ†ÙˆÙŠØ³ÙŠ Ù…ÙŠâ€ŒØªÙˆØ§Ù† Ø¨Ø§ 
+PostgreSQLâ€Œ Ø§Ø±ØªØ¨Ø§Ø· Ø¨Ø±Ù‚Ø±Ø§Ø± ÙƒØ±Ø¯ØŸ
+Ø¨ÙŠØ´ØªØ± Ø²Ø¨Ø§Ù†Ù‡Ø§ÙŠ Ø¨Ø±Ù†Ø§Ù…Ù‡â€ŒÙ†ÙˆÙŠØ³ÙŠ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù†Ø¯ Ø¨Ø§ 
+PostgreSQLâ€Œ Ø§Ø±ØªØ¨Ø§Ø· Ø¨Ø±Ù‚Ø±Ø§Ø± ÙƒÙ†Ù†Ø¯. Ø¨Ù‡ Ù‡Ù…Ø±Ø§Ù‡  Ø³ÙˆØ±Ø³ 
+PostgreSQL ØªØ¹Ø¯Ø§Ø¯ÙŠ Ø§Ø² ÙˆØ§Ø³Ø·Ù‡Ø§ÙŠ Ù…ÙˆØ±Ø¯ Ù†ÙŠØ§Ø² Ø¨Ø±Ø§ÙŠ 
+Ø§Ø±ØªØ¨Ø§Ø· Ø¨Ø§ Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ø§Ø² Ø·Ø±ÙŠÙ‚ Ø²Ø¨Ø§Ù†Ù‡Ø§ÙŠ Ù…Ø®ØªÙ„Ù 
+Ø¢Ù…Ø¯Ù‡ Ø§Ø³Øª ÙƒÙ‡ Ø¯Ø± Ø²ÙŠØ± Ù„ÙŠØ³Øª Ø¢Ù†Ù‡Ø§ Ø±Ø§ Ù…Ø´Ø§Ù‡Ø¯Ù‡ 
+Ù…ÙŠâ€ŒÙƒÙ†ÙŠØ¯.
   C (libpq) 
   Embedded C (ecpg) 
   Java (jdbc) 
   Python (PyGreSQL) 
   TCL (libpgtcl) 
-واسطهاي ديگر در سايت http://gborg.postgresql.org در قسمت Drivers/Interfaces وجود 
-دارد.
-
-
-
-سوالات مديريتي
-3.1) چگونه مي‌توانم PostgreSQL‌ را در شاخه‌اي غير از /usr/local/pgsql/  نصب كنم؟
-موقع اجراي دستور configure از گزينه prefix-- استفاده كنيد.
-3.2) چرا موقعي كه من برنامه postmaster‌ را اجرا مي كنم پيام Bad system call‌ و 
-يا core dump ‌مي‌گيرم؟
-به دلايل مختلف ممكن است اين اتفاق بيفتد. اما در قدم اول شما مطمئن شويد كه كه 
-امكانات اضافه System V‌ در كرنل شما نصب شده باشد. PostgreSQL براي اجرا شدن نياز 
-به استفاده از امكانات حافظه مشترك و سمافورها دارد.
-3.3) چرا موقعي كه من سعي مي‌كنم برنامه postmaster‌ را اجرا كنم خطاي 
-IpcMemoryCreate  مي‌گيرم؟
-احتمالاً‌ قسمت ايجاد حافظه مشترك در كرنل به درستي تنظيم نشده است و يا اينكه بايد 
-فضاي حافظه اشتراكي در كرنل را زياد كرد. ميزان دقيق حافظه مشترك مورد نياز بسته به 
-معماري و نحوه استفاده از بافرها توسط برنامه postmaster دارد. براي بيشتر سيستم‌ها 
-كه با تنظيمات پيش‌فرض كار مي‌كنند مقدار اين حافظه حدود 1 مگابايت است. براي ديدن 
-اطلاعات بيشتر راجع به حافظه مشترك و سمافور به PostgreSQL Administrator's Guide 
-مراجعه كنيد.
-3.4) چرا موقعي كه من سعي مي‌كنم برنامه postmaster‌ را اجرا كنم خطاي  
-IpcSemaphoreCreate مي‌گيرم؟
-اگر پيغام خطا (‌pcSemaphoreCreate: semget failed (No space left on device  باشد 
-به اين معني است كه تعداد سمافورهاي تنظيم شده در كرنل كافي نيست. PostgreSQL‌ براي 
-هر فرايندي كه در backend اجرا مي‌شود به يك سمافور نياز دارد. يك راه حل موقت براي 
-اين مسئله آن است كه postmaster را با اعمال محدوديت روي تعداد فرايندهايي كه 
-مي‌تواند ايجاد كند اجرا كنيم. براي اينكار از گزينه N- و يك عدد كمتر از 32 
-استفاده كنيد. راه حل دائمي اين مشكل آن است كه پارامترهاي SEMMNS, SEMMNI كرنل را 
-افزايش دهيم.
-در زمان دسترسي خيلي زياد به پايگاه داده، ‌ سمافورهاي نامعتبر مي‌توانند باعث 
-crash‌ كردن سيستم شوند.
-اگر پيغام خطا چيز ديگري باشد احتمالاً به دليل آن است كه كرنل از سمافورها 
-پشتيباني نمي‌كند. براي ديدن اطلاعات بيشتر راهنماي مديريتي PostgreSQL را مطالعه 
-كنيد.
-3.5) چگونه مي‌توانم اتصالات ساير ماشينها را كنترل كنم؟
-به صورت پيش فرض فقط از ماشيني كه PostgreSQL روي آن در حال اجراست مي‌توان با 
-استفاده از سوكت‌هاي يونيكسي به آن متصل شد. ساير ماشين‌ها قادر نيستند به 
-PostgreSQL متصل شوند مگر آنكه گزينه tcp_sockets در فايل postgresql.conf فعال شده 
-و همچنين با اصلاح فايل PGDATA/ph_hba.conf هويت‌شناسي مبتني بر ميزبان نيز فعال 
-شود. با اين كار مي‌توان اتصالات TCP/IP به PostgreSQL‌ ايجاد كرد.
-3.6) براي كارايي بالاتر و بهتر پايگاه داده من چه تنظيماتي را بايد انجام دهم؟
-به طور حتم استفاده از انديس‌ها باعث بالا رفتن سرعت پاسخ‌گويي به درخواست‌ها خواهد 
-شد. دستور EXPLAIN ANALYZE به شما امكان ديدن نحوه پردازش يك دستور توسط PostgreSQL 
-را مي‌دهد.
-اگر شما تعداد زيادي INSERT‌ داريد سعي كنيد آنها را با قرار دادن در يك فايل با 
-دستور COPY‌ اجرا كنيد. اين دستور به مراتب از INSERT سريعتر است. حتي‌الامكان سعي 
-كنيد از تراكنشها استفاده نكنيد. تراكنشها مجموعه دستوراتي هستند كه بيند BEGIN و 
-‍COMMIT مي‌آيند. اگر يك دستور به صورت عادي اجرا شود PostgreSQL خود آن دستور را 
-به صورت يك تراكنش مستقل نگاه كرده و اجرا مي‌كند. موقعی كه تغييرات زيادي در 
-پايگاه داده انجام مي‌شود انديسهاي قبلي را حذف و مجدداً‌ ايجاد كنيد.
-استفاده از گزينه o -F- در فرمان postmaster باعث غير فعال كردن ()fsync مي‌شود. 
-اين دستور بعد از هر تراكنش اطلاعات را روي هاردديسك منتقل مي‌كند.
-براي افزايش تعداد بافرهاي حافظه اشتراكي از گزينه B- به همراه فرمان postmaster 
-استفاده كنيد. توجه كنيد كه اگر اين عدد خيلي بزرگ باشد ممكن است postmaster اصلاً‌ 
-اجرا نشود. هر بافر 8 كيلو بايت حافظه نياز دارد و تعداد بافرها به طور پيش فرض 64 
-است.
-همچنين مي‌توان با گزينه S-  ميزان حافظه‌اي كه براي مرتب‌سازي‌هاي موقت توسط 
-PostgreSQL استفاده مي‌شود را افزايش داد. مقدار پيش فرض 512 كيلو بايت است.
-استفاده از دستور CLUSTER نيز براي بالا بردن كارايي موثر ا ست. دستور راهنماي 
-CLUSTER اطلاعات بيشتري در اين زمينه به شما مي‌دهد.
-3.7) چه امكاناتي براي پيدا كردن اشكال‌ وجود دارد؟
-PostgerSQL‌ امكانات مختلفي براي گزارش دادن وضعيت خود دارد كه براي اشكال زدايي 
-مي‌توان از آنها استفاده كرد.
-با استفاده از گزينه enable-assert-- تعداد زيادي ()assert براي مونيتور كردن و 
-توقف برنامه در صورت بروز خطاهاي ناخواسته فعال مي‌شود.
-هم Postmaster و هم postgres گزينه‌هاي زيادي براي اشكال زدايي دارند. موقعي كه 
-postmaster را اجرا مي‌كنيد خروجي استاندارد و خطا را سمت فايل log ارسال كنيد.
+ÙˆØ§Ø³Ø·Ù‡Ø§ÙŠ Ø¯ÙŠÚ¯Ø± Ø¯Ø± Ø³Ø§ÙŠØª http://gborg.postgresql.org Ø¯Ø± Ù‚Ø³Ù…Øª 
+Drivers/Interfaces ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯.
+
+
+
+Ø³ÙˆØ§Ù„Ø§Øª Ù…Ø¯ÙŠØ±ÙŠØªÙŠ
+3.1) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… PostgreSQLâ€Œ Ø±Ø§ Ø¯Ø± Ø´Ø§Ø®Ù‡â€ŒØ§ÙŠ ØºÙŠØ± 
+Ø§Ø² /usr/local/pgsql/  Ù†ØµØ¨ ÙƒÙ†Ù…ØŸ
+Ù…ÙˆÙ‚Ø¹ Ø§Ø¬Ø±Ø§ÙŠ Ø¯Ø³ØªÙˆØ± configure Ø§Ø² Ú¯Ø²ÙŠÙ†Ù‡ prefix-- Ø§Ø³ØªÙØ§Ø¯Ù‡ 
+ÙƒÙ†ÙŠØ¯.
+3.2) Ú†Ø±Ø§ Ù…ÙˆÙ‚Ø¹ÙŠ ÙƒÙ‡ Ù…Ù† Ø¨Ø±Ù†Ø§Ù…Ù‡ postmasterâ€Œ Ø±Ø§ Ø§Ø¬Ø±Ø§ Ù…ÙŠ 
+ÙƒÙ†Ù… Ù¾ÙŠØ§Ù… Bad system callâ€Œ Ùˆ ÙŠØ§ core dump â€ŒÙ…ÙŠâ€ŒÚ¯ÙŠØ±Ù…ØŸ
+Ø¨Ù‡ Ø¯Ù„Ø§ÙŠÙ„ Ù…Ø®ØªÙ„Ù Ù…Ù…ÙƒÙ† Ø§Ø³Øª Ø§ÙŠÙ† Ø§ØªÙØ§Ù‚ Ø¨ÙŠÙØªØ¯. Ø§Ù…Ø§ 
+Ø¯Ø± Ù‚Ø¯Ù… Ø§ÙˆÙ„ Ø´Ù…Ø§ Ù…Ø·Ù…Ø¦Ù† Ø´ÙˆÙŠØ¯ ÙƒÙ‡ ÙƒÙ‡ Ø§Ù…ÙƒØ§Ù†Ø§Øª 
+Ø§Ø¶Ø§ÙÙ‡ System Vâ€Œ Ø¯Ø± ÙƒØ±Ù†Ù„ Ø´Ù…Ø§ Ù†ØµØ¨ Ø´Ø¯Ù‡ Ø¨Ø§Ø´Ø¯. PostgreSQL 
+Ø¨Ø±Ø§ÙŠ Ø§Ø¬Ø±Ø§ Ø´Ø¯Ù† Ù†ÙŠØ§Ø² Ø¨Ù‡ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² Ø§Ù…ÙƒØ§Ù†Ø§Øª 
+Ø­Ø§ÙØ¸Ù‡ Ù…Ø´ØªØ±Ùƒ Ùˆ Ø³Ù…Ø§ÙÙˆØ±Ù‡Ø§ Ø¯Ø§Ø±Ø¯.
+3.3) Ú†Ø±Ø§ Ù…ÙˆÙ‚Ø¹ÙŠ ÙƒÙ‡ Ù…Ù† Ø³Ø¹ÙŠ Ù…ÙŠâ€ŒÙƒÙ†Ù… Ø¨Ø±Ù†Ø§Ù…Ù‡ postmasterâ€Œ 
+Ø±Ø§ Ø§Ø¬Ø±Ø§ ÙƒÙ†Ù… Ø®Ø·Ø§ÙŠ IpcMemoryCreate  Ù…ÙŠâ€ŒÚ¯ÙŠØ±Ù…ØŸ
+Ø§Ø­ØªÙ…Ø§Ù„Ø§Ù‹â€Œ Ù‚Ø³Ù…Øª Ø§ÙŠØ¬Ø§Ø¯ Ø­Ø§ÙØ¸Ù‡ Ù…Ø´ØªØ±Ùƒ Ø¯Ø± ÙƒØ±Ù†Ù„ Ø¨Ù‡ 
+Ø¯Ø±Ø³ØªÙŠ ØªÙ†Ø¸ÙŠÙ… Ù†Ø´Ø¯Ù‡ Ø§Ø³Øª Ùˆ ÙŠØ§ Ø§ÙŠÙ†ÙƒÙ‡ Ø¨Ø§ÙŠØ¯ ÙØ¶Ø§ÙŠ 
+Ø­Ø§ÙØ¸Ù‡ Ø§Ø´ØªØ±Ø§ÙƒÙŠ Ø¯Ø± ÙƒØ±Ù†Ù„ Ø±Ø§ Ø²ÙŠØ§Ø¯ ÙƒØ±Ø¯. Ù…ÙŠØ²Ø§Ù† 
+Ø¯Ù‚ÙŠÙ‚ Ø­Ø§ÙØ¸Ù‡ Ù…Ø´ØªØ±Ùƒ Ù…ÙˆØ±Ø¯ Ù†ÙŠØ§Ø² Ø¨Ø³ØªÙ‡ Ø¨Ù‡ Ù…Ø¹Ù…Ø§Ø±ÙŠ Ùˆ 
+Ù†Ø­ÙˆÙ‡ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² Ø¨Ø§ÙØ±Ù‡Ø§ ØªÙˆØ³Ø· Ø¨Ø±Ù†Ø§Ù…Ù‡ postmaster 
+Ø¯Ø§Ø±Ø¯. Ø¨Ø±Ø§ÙŠ Ø¨ÙŠØ´ØªØ± Ø³ÙŠØ³ØªÙ…â€ŒÙ‡Ø§ ÙƒÙ‡ Ø¨Ø§ ØªÙ†Ø¸ÙŠÙ…Ø§Øª 
+Ù¾ÙŠØ´â€ŒÙØ±Ø¶ ÙƒØ§Ø± Ù…ÙŠâ€ŒÙƒÙ†Ù†Ø¯ Ù…Ù‚Ø¯Ø§Ø± Ø§ÙŠÙ† Ø­Ø§ÙØ¸Ù‡ Ø­Ø¯ÙˆØ¯ 1 
+Ù…Ú¯Ø§Ø¨Ø§ÙŠØª Ø§Ø³Øª. Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ø¨ÙŠØ´ØªØ± Ø±Ø§Ø¬Ø¹ Ø¨Ù‡ 
+Ø­Ø§ÙØ¸Ù‡ Ù…Ø´ØªØ±Ùƒ Ùˆ Ø³Ù…Ø§ÙÙˆØ± Ø¨Ù‡ PostgreSQL Administrator's Guide 
+Ù…Ø±Ø§Ø¬Ø¹Ù‡ ÙƒÙ†ÙŠØ¯.
+3.4) Ú†Ø±Ø§ Ù…ÙˆÙ‚Ø¹ÙŠ ÙƒÙ‡ Ù…Ù† Ø³Ø¹ÙŠ Ù…ÙŠâ€ŒÙƒÙ†Ù… Ø¨Ø±Ù†Ø§Ù…Ù‡ postmasterâ€Œ 
+Ø±Ø§ Ø§Ø¬Ø±Ø§ ÙƒÙ†Ù… Ø®Ø·Ø§ÙŠ  IpcSemaphoreCreate Ù…ÙŠâ€ŒÚ¯ÙŠØ±Ù…ØŸ
+Ø§Ú¯Ø± Ù¾ÙŠØºØ§Ù… Ø®Ø·Ø§ (â€ŒpcSemaphoreCreate: semget failed (No space left on 
+device  Ø¨Ø§Ø´Ø¯ Ø¨Ù‡ Ø§ÙŠÙ† Ù…Ø¹Ù†ÙŠ Ø§Ø³Øª ÙƒÙ‡ ØªØ¹Ø¯Ø§Ø¯ Ø³Ù…Ø§ÙÙˆØ±Ù‡Ø§ÙŠ 
+ØªÙ†Ø¸ÙŠÙ… Ø´Ø¯Ù‡ Ø¯Ø± ÙƒØ±Ù†Ù„ ÙƒØ§ÙÙŠ Ù†ÙŠØ³Øª. PostgreSQLâ€Œ Ø¨Ø±Ø§ÙŠ Ù‡Ø± 
+ÙØ±Ø§ÙŠÙ†Ø¯ÙŠ ÙƒÙ‡ Ø¯Ø± backend Ø§Ø¬Ø±Ø§ Ù…ÙŠâ€ŒØ´ÙˆØ¯ Ø¨Ù‡ ÙŠÙƒ Ø³Ù…Ø§ÙÙˆØ± 
+Ù†ÙŠØ§Ø² Ø¯Ø§Ø±Ø¯. ÙŠÙƒ Ø±Ø§Ù‡ Ø­Ù„ Ù…ÙˆÙ‚Øª Ø¨Ø±Ø§ÙŠ Ø§ÙŠÙ† Ù…Ø³Ø¦Ù„Ù‡ Ø¢Ù† 
+Ø§Ø³Øª ÙƒÙ‡ postmaster Ø±Ø§ Ø¨Ø§ Ø§Ø¹Ù…Ø§Ù„ Ù…Ø­Ø¯ÙˆØ¯ÙŠØª Ø±ÙˆÙŠ ØªØ¹Ø¯Ø§Ø¯ 
+ÙØ±Ø§ÙŠÙ†Ø¯Ù‡Ø§ÙŠÙŠ ÙƒÙ‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ø¯ Ø§ÙŠØ¬Ø§Ø¯ ÙƒÙ†Ø¯ Ø§Ø¬Ø±Ø§ ÙƒÙ†ÙŠÙ…. 
+Ø¨Ø±Ø§ÙŠ Ø§ÙŠÙ†ÙƒØ§Ø± Ø§Ø² Ú¯Ø²ÙŠÙ†Ù‡ N- Ùˆ ÙŠÙƒ Ø¹Ø¯Ø¯ ÙƒÙ…ØªØ± Ø§Ø² 32 
+Ø§Ø³ØªÙØ§Ø¯Ù‡ ÙƒÙ†ÙŠØ¯. Ø±Ø§Ù‡ Ø­Ù„ Ø¯Ø§Ø¦Ù…ÙŠ Ø§ÙŠÙ† Ù…Ø´ÙƒÙ„ Ø¢Ù† Ø§Ø³Øª ÙƒÙ‡ 
+Ù¾Ø§Ø±Ø§Ù…ØªØ±Ù‡Ø§ÙŠ SEMMNS, SEMMNI ÙƒØ±Ù†Ù„ Ø±Ø§ Ø§ÙØ²Ø§ÙŠØ´ Ø¯Ù‡ÙŠÙ….
+Ø¯Ø± Ø²Ù…Ø§Ù† Ø¯Ø³ØªØ±Ø³ÙŠ Ø®ÙŠÙ„ÙŠ Ø²ÙŠØ§Ø¯ Ø¨Ù‡ Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ØŒ â€Œ 
+Ø³Ù…Ø§ÙÙˆØ±Ù‡Ø§ÙŠ Ù†Ø§Ù…Ø¹ØªØ¨Ø± Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù†Ø¯ Ø¨Ø§Ø¹Ø« crashâ€Œ ÙƒØ±Ø¯Ù† 
+Ø³ÙŠØ³ØªÙ… Ø´ÙˆÙ†Ø¯.
+Ø§Ú¯Ø± Ù¾ÙŠØºØ§Ù… Ø®Ø·Ø§ Ú†ÙŠØ² Ø¯ÙŠÚ¯Ø±ÙŠ Ø¨Ø§Ø´Ø¯ Ø§Ø­ØªÙ…Ø§Ù„Ø§Ù‹ Ø¨Ù‡ 
+Ø¯Ù„ÙŠÙ„ Ø¢Ù† Ø§Ø³Øª ÙƒÙ‡ ÙƒØ±Ù†Ù„ Ø§Ø² Ø³Ù…Ø§ÙÙˆØ±Ù‡Ø§ Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ 
+Ù†Ù…ÙŠâ€ŒÙƒÙ†Ø¯. Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ø¨ÙŠØ´ØªØ± Ø±Ø§Ù‡Ù†Ù…Ø§ÙŠ 
+Ù…Ø¯ÙŠØ±ÙŠØªÙŠ PostgreSQL Ø±Ø§ Ù…Ø·Ø§Ù„Ø¹Ù‡ ÙƒÙ†ÙŠØ¯.
+3.5) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… Ø§ØªØµØ§Ù„Ø§Øª Ø³Ø§ÙŠØ± Ù…Ø§Ø´ÙŠÙ†Ù‡Ø§ Ø±Ø§ 
+ÙƒÙ†ØªØ±Ù„ ÙƒÙ†Ù…ØŸ
+Ø¨Ù‡ ØµÙˆØ±Øª Ù¾ÙŠØ´ ÙØ±Ø¶ ÙÙ‚Ø· Ø§Ø² Ù…Ø§Ø´ÙŠÙ†ÙŠ ÙƒÙ‡ PostgreSQL Ø±ÙˆÙŠ Ø¢Ù† 
+Ø¯Ø± Ø­Ø§Ù„ Ø§Ø¬Ø±Ø§Ø³Øª Ù…ÙŠâ€ŒØªÙˆØ§Ù† Ø¨Ø§ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² 
+Ø³ÙˆÙƒØªâ€ŒÙ‡Ø§ÙŠ ÙŠÙˆÙ†ÙŠÙƒØ³ÙŠ Ø¨Ù‡ Ø¢Ù† Ù…ØªØµÙ„ Ø´Ø¯. Ø³Ø§ÙŠØ± 
+Ù…Ø§Ø´ÙŠÙ†â€ŒÙ‡Ø§ Ù‚Ø§Ø¯Ø± Ù†ÙŠØ³ØªÙ†Ø¯ Ø¨Ù‡ PostgreSQL Ù…ØªØµÙ„ Ø´ÙˆÙ†Ø¯ Ù…Ú¯Ø± 
+Ø¢Ù†ÙƒÙ‡ Ú¯Ø²ÙŠÙ†Ù‡ tcp_sockets Ø¯Ø± ÙØ§ÙŠÙ„ postgresql.conf ÙØ¹Ø§Ù„ Ø´Ø¯Ù‡ Ùˆ 
+Ù‡Ù…Ú†Ù†ÙŠÙ† Ø¨Ø§ Ø§ØµÙ„Ø§Ø­ ÙØ§ÙŠÙ„ PGDATA/ph_hba.conf Ù‡ÙˆÙŠØªâ€ŒØ´Ù†Ø§Ø³ÙŠ 
+Ù…Ø¨ØªÙ†ÙŠ Ø¨Ø± Ù…ÙŠØ²Ø¨Ø§Ù† Ù†ÙŠØ² ÙØ¹Ø§Ù„ Ø´ÙˆØ¯. Ø¨Ø§ Ø§ÙŠÙ† ÙƒØ§Ø± 
+Ù…ÙŠâ€ŒØªÙˆØ§Ù† Ø§ØªØµØ§Ù„Ø§Øª TCP/IP Ø¨Ù‡ PostgreSQLâ€Œ Ø§ÙŠØ¬Ø§Ø¯ ÙƒØ±Ø¯.
+3.6) Ø¨Ø±Ø§ÙŠ ÙƒØ§Ø±Ø§ÙŠÙŠ Ø¨Ø§Ù„Ø§ØªØ± Ùˆ Ø¨Ù‡ØªØ± Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ù…Ù† 
+Ú†Ù‡ ØªÙ†Ø¸ÙŠÙ…Ø§ØªÙŠ Ø±Ø§ Ø¨Ø§ÙŠØ¯ Ø§Ù†Ø¬Ø§Ù… Ø¯Ù‡Ù…ØŸ
+Ø¨Ù‡ Ø·ÙˆØ± Ø­ØªÙ… Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² Ø§Ù†Ø¯ÙŠØ³â€ŒÙ‡Ø§ Ø¨Ø§Ø¹Ø« Ø¨Ø§Ù„Ø§ 
+Ø±ÙØªÙ† Ø³Ø±Ø¹Øª Ù¾Ø§Ø³Ø®â€ŒÚ¯ÙˆÙŠÙŠ Ø¨Ù‡ Ø¯Ø±Ø®ÙˆØ§Ø³Øªâ€ŒÙ‡Ø§ Ø®ÙˆØ§Ù‡Ø¯ 
+Ø´Ø¯. Ø¯Ø³ØªÙˆØ± EXPLAIN ANALYZE Ø¨Ù‡ Ø´Ù…Ø§ Ø§Ù…ÙƒØ§Ù† Ø¯ÙŠØ¯Ù† Ù†Ø­ÙˆÙ‡ 
+Ù¾Ø±Ø¯Ø§Ø²Ø´ ÙŠÙƒ Ø¯Ø³ØªÙˆØ± ØªÙˆØ³Ø· PostgreSQL Ø±Ø§ Ù…ÙŠâ€ŒØ¯Ù‡Ø¯.
+Ø§Ú¯Ø± Ø´Ù…Ø§ ØªØ¹Ø¯Ø§Ø¯ Ø²ÙŠØ§Ø¯ÙŠ INSERTâ€Œ Ø¯Ø§Ø±ÙŠØ¯ Ø³Ø¹ÙŠ ÙƒÙ†ÙŠØ¯ 
+Ø¢Ù†Ù‡Ø§ Ø±Ø§ Ø¨Ø§ Ù‚Ø±Ø§Ø± Ø¯Ø§Ø¯Ù† Ø¯Ø± ÙŠÙƒ ÙØ§ÙŠÙ„ Ø¨Ø§ Ø¯Ø³ØªÙˆØ± COPYâ€Œ 
+Ø§Ø¬Ø±Ø§ ÙƒÙ†ÙŠØ¯. Ø§ÙŠÙ† Ø¯Ø³ØªÙˆØ± Ø¨Ù‡ Ù…Ø±Ø§ØªØ¨ Ø§Ø² INSERT Ø³Ø±ÙŠØ¹ØªØ± 
+Ø§Ø³Øª. Ø­ØªÙŠâ€ŒØ§Ù„Ø§Ù…ÙƒØ§Ù† Ø³Ø¹ÙŠ ÙƒÙ†ÙŠØ¯ Ø§Ø² ØªØ±Ø§ÙƒÙ†Ø´Ù‡Ø§ 
+Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù†ÙƒÙ†ÙŠØ¯. ØªØ±Ø§ÙƒÙ†Ø´Ù‡Ø§ Ù…Ø¬Ù…ÙˆØ¹Ù‡ Ø¯Ø³ØªÙˆØ±Ø§ØªÙŠ 
+Ù‡Ø³ØªÙ†Ø¯ ÙƒÙ‡ Ø¨ÙŠÙ†Ø¯ BEGIN Ùˆ â€COMMIT Ù…ÙŠâ€ŒØ¢ÙŠÙ†Ø¯. Ø§Ú¯Ø± ÙŠÙƒ 
+Ø¯Ø³ØªÙˆØ± Ø¨Ù‡ ØµÙˆØ±Øª Ø¹Ø§Ø¯ÙŠ Ø§Ø¬Ø±Ø§ Ø´ÙˆØ¯ PostgreSQL Ø®ÙˆØ¯ Ø¢Ù† 
+Ø¯Ø³ØªÙˆØ± Ø±Ø§ Ø¨Ù‡ ØµÙˆØ±Øª ÙŠÙƒ ØªØ±Ø§ÙƒÙ†Ø´ Ù…Ø³ØªÙ‚Ù„ Ù†Ú¯Ø§Ù‡ ÙƒØ±Ø¯Ù‡ Ùˆ 
+Ø§Ø¬Ø±Ø§ Ù…ÙŠâ€ŒÙƒÙ†Ø¯. Ù…ÙˆÙ‚Ø¹ÛŒ ÙƒÙ‡ ØªØºÙŠÙŠØ±Ø§Øª Ø²ÙŠØ§Ø¯ÙŠ Ø¯Ø± 
+Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ø§Ù†Ø¬Ø§Ù… Ù…ÙŠâ€ŒØ´ÙˆØ¯ Ø§Ù†Ø¯ÙŠØ³Ù‡Ø§ÙŠ Ù‚Ø¨Ù„ÙŠ Ø±Ø§ 
+Ø­Ø°Ù Ùˆ Ù…Ø¬Ø¯Ø¯Ø§Ù‹â€Œ Ø§ÙŠØ¬Ø§Ø¯ ÙƒÙ†ÙŠØ¯.
+Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² Ú¯Ø²ÙŠÙ†Ù‡ o -F- Ø¯Ø± ÙØ±Ù…Ø§Ù† postmaster Ø¨Ø§Ø¹Ø« ØºÙŠØ± 
+ÙØ¹Ø§Ù„ ÙƒØ±Ø¯Ù† ()fsync Ù…ÙŠâ€ŒØ´ÙˆØ¯. Ø§ÙŠÙ† Ø¯Ø³ØªÙˆØ± Ø¨Ø¹Ø¯ Ø§Ø² Ù‡Ø± 
+ØªØ±Ø§ÙƒÙ†Ø´ Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ø±Ø§ Ø±ÙˆÙŠ Ù‡Ø§Ø±Ø¯Ø¯ÙŠØ³Ùƒ Ù…Ù†ØªÙ‚Ù„ 
+Ù…ÙŠâ€ŒÙƒÙ†Ø¯.
+Ø¨Ø±Ø§ÙŠ Ø§ÙØ²Ø§ÙŠØ´ ØªØ¹Ø¯Ø§Ø¯ Ø¨Ø§ÙØ±Ù‡Ø§ÙŠ Ø­Ø§ÙØ¸Ù‡ Ø§Ø´ØªØ±Ø§ÙƒÙŠ Ø§Ø² 
+Ú¯Ø²ÙŠÙ†Ù‡ B- Ø¨Ù‡ Ù‡Ù…Ø±Ø§Ù‡ ÙØ±Ù…Ø§Ù† postmaster Ø§Ø³ØªÙØ§Ø¯Ù‡ ÙƒÙ†ÙŠØ¯. 
+ØªÙˆØ¬Ù‡ ÙƒÙ†ÙŠØ¯ ÙƒÙ‡ Ø§Ú¯Ø± Ø§ÙŠÙ† Ø¹Ø¯Ø¯ Ø®ÙŠÙ„ÙŠ Ø¨Ø²Ø±Ú¯ Ø¨Ø§Ø´Ø¯ Ù…Ù…ÙƒÙ† 
+Ø§Ø³Øª postmaster Ø§ØµÙ„Ø§Ù‹â€Œ Ø§Ø¬Ø±Ø§ Ù†Ø´ÙˆØ¯. Ù‡Ø± Ø¨Ø§ÙØ± 8 ÙƒÙŠÙ„Ùˆ 
+Ø¨Ø§ÙŠØª Ø­Ø§ÙØ¸Ù‡ Ù†ÙŠØ§Ø² Ø¯Ø§Ø±Ø¯ Ùˆ ØªØ¹Ø¯Ø§Ø¯ Ø¨Ø§ÙØ±Ù‡Ø§ Ø¨Ù‡ Ø·ÙˆØ± 
+Ù¾ÙŠØ´ ÙØ±Ø¶ 64 Ø§Ø³Øª.
+Ù‡Ù…Ú†Ù†ÙŠÙ† Ù…ÙŠâ€ŒØªÙˆØ§Ù† Ø¨Ø§ Ú¯Ø²ÙŠÙ†Ù‡ S-  Ù…ÙŠØ²Ø§Ù† Ø­Ø§ÙØ¸Ù‡â€ŒØ§ÙŠ 
+ÙƒÙ‡ Ø¨Ø±Ø§ÙŠ Ù…Ø±ØªØ¨â€ŒØ³Ø§Ø²ÙŠâ€ŒÙ‡Ø§ÙŠ Ù…ÙˆÙ‚Øª ØªÙˆØ³Ø· PostgreSQL 
+Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÙŠâ€ŒØ´ÙˆØ¯ Ø±Ø§ Ø§ÙØ²Ø§ÙŠØ´ Ø¯Ø§Ø¯. Ù…Ù‚Ø¯Ø§Ø± Ù¾ÙŠØ´ ÙØ±Ø¶ 
+512 ÙƒÙŠÙ„Ùˆ Ø¨Ø§ÙŠØª Ø§Ø³Øª.
+Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² Ø¯Ø³ØªÙˆØ± CLUSTER Ù†ÙŠØ² Ø¨Ø±Ø§ÙŠ Ø¨Ø§Ù„Ø§ Ø¨Ø±Ø¯Ù† 
+ÙƒØ§Ø±Ø§ÙŠÙŠ Ù…ÙˆØ«Ø± Ø§ Ø³Øª. Ø¯Ø³ØªÙˆØ± Ø±Ø§Ù‡Ù†Ù…Ø§ÙŠ CLUSTER Ø§Ø·Ù„Ø§Ø¹Ø§Øª 
+Ø¨ÙŠØ´ØªØ±ÙŠ Ø¯Ø± Ø§ÙŠÙ† Ø²Ù…ÙŠÙ†Ù‡ Ø¨Ù‡ Ø´Ù…Ø§ Ù…ÙŠâ€ŒØ¯Ù‡Ø¯.
+3.7) Ú†Ù‡ Ø§Ù…ÙƒØ§Ù†Ø§ØªÙŠ Ø¨Ø±Ø§ÙŠ Ù¾ÙŠØ¯Ø§ ÙƒØ±Ø¯Ù† Ø§Ø´ÙƒØ§Ù„â€Œ ÙˆØ¬ÙˆØ¯ 
+Ø¯Ø§Ø±Ø¯ØŸ
+PostgerSQLâ€Œ Ø§Ù…ÙƒØ§Ù†Ø§Øª Ù…Ø®ØªÙ„ÙÙŠ Ø¨Ø±Ø§ÙŠ Ú¯Ø²Ø§Ø±Ø´ Ø¯Ø§Ø¯Ù† 
+ÙˆØ¶Ø¹ÙŠØª Ø®ÙˆØ¯ Ø¯Ø§Ø±Ø¯ ÙƒÙ‡ Ø¨Ø±Ø§ÙŠ Ø§Ø´ÙƒØ§Ù„ Ø²Ø¯Ø§ÙŠÙŠ Ù…ÙŠâ€ŒØªÙˆØ§Ù† 
+Ø§Ø² Ø¢Ù†Ù‡Ø§ Ø§Ø³ØªÙØ§Ø¯Ù‡ ÙƒØ±Ø¯.
+Ø¨Ø§ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² Ú¯Ø²ÙŠÙ†Ù‡ enable-assert-- ØªØ¹Ø¯Ø§Ø¯ Ø²ÙŠØ§Ø¯ÙŠ 
+()assert Ø¨Ø±Ø§ÙŠ Ù…ÙˆÙ†ÙŠØªÙˆØ± ÙƒØ±Ø¯Ù† Ùˆ ØªÙˆÙ‚Ù Ø¨Ø±Ù†Ø§Ù…Ù‡ Ø¯Ø± ØµÙˆØ±Øª 
+Ø¨Ø±ÙˆØ² Ø®Ø·Ø§Ù‡Ø§ÙŠ Ù†Ø§Ø®ÙˆØ§Ø³ØªÙ‡ ÙØ¹Ø§Ù„ Ù…ÙŠâ€ŒØ´ÙˆØ¯.
+Ù‡Ù… Postmaster Ùˆ Ù‡Ù… postgres Ú¯Ø²ÙŠÙ†Ù‡â€ŒÙ‡Ø§ÙŠ Ø²ÙŠØ§Ø¯ÙŠ Ø¨Ø±Ø§ÙŠ 
+Ø§Ø´ÙƒØ§Ù„ Ø²Ø¯Ø§ÙŠÙŠ Ø¯Ø§Ø±Ù†Ø¯. Ù…ÙˆÙ‚Ø¹ÙŠ ÙƒÙ‡ postmaster Ø±Ø§ Ø§Ø¬Ø±Ø§ 
+Ù…ÙŠâ€ŒÙƒÙ†ÙŠØ¯ Ø®Ø±ÙˆØ¬ÙŠ Ø§Ø³ØªØ§Ù†Ø¯Ø§Ø±Ø¯ Ùˆ Ø®Ø·Ø§ Ø±Ø§ Ø³Ù…Øª ÙØ§ÙŠÙ„ log 
+Ø§Ø±Ø³Ø§Ù„ ÙƒÙ†ÙŠØ¯.
     cd /usr/local/pgsql
     ./bin/postmaster >server.log 2>&1 &
-اين كار يك فايل log در بالاترين شاخه PostgreSQL‌ ايجاد مي‌كند. اين فايل حاوي 
-اطلاعات مفيدي در مورد مسائل و خطاهايي است كه براي سرور اتفاق افتاده است. براي 
-ديدن جزئيات بيشتر مي‌توان از d-  به همراه فرمان postmaster‌ استفاده كرد. گزينه 
-d- همچنين يك عدد مي‌گيرد كه نشان دهنده سطح جزئياتي است كه در Log‌فايل نوشته 
-مي‌شود. با بالابردن اين عدد حجم اطلاعات توليد شده در Logفايل نيز افزايش مي‌يابد.
-اگر postmaster در حال اجرا نباشد، مي‌توانيم postgres را به طور مستقيم از خط 
-فرمان اجرا كرده و  دستورات SQL را به آن بدهيم. اين كار فقط براي اشكال‌يابي توصيه 
-مي‌شود. توجه كنيد كه در اين حالت يك دستور با كاراكتر newline خاتمه پيدا مي‌كند و 
-نه با ;. اگر postmaster را با امكانات اشكال‌يابي كامپيل كرده باشيد مي‌توانيد با 
-استفاده از يك برنامه اشكال‌ياب اجراي برنامه را مونيتور كنيد. 
-اگر postmaster در حال اجرا باشد با دستور psql مي‌توان به postgres متصل شد. با 
-پيدا كردن PID فرايند postgres كه psql به آن متصل شده است مي‌توان آن را مونيتور 
-كرد. براي اينكار بايد يك برنامه اشكال‌ياب را به آن pid متصل كرد. اگر بخواهيم 
-بالا آمدن postgres را مونيتور كنيم كافي است "PGOPTIONS="-W n و psql را اجرا 
-كنيم. اين كار باعث مي‌شود كه postgres با n ثانيه تاخير اجرا شود و در اين فاصله 
-شما مي‌توانيد برنامه اشكال‌ياب را به آن متصل كرده و با قرار دادن يك نقطه توقف  
-روند اجراي آن را مونيتور كنيد.
-postgres گزينه‌هاي s-‌ و A- و t-‌ دارد كه براي پيدا كردن اشكالات بسيار مناسب 
-هستند.
-شما مي‌توانيد postgreSQL را با امكانات profiling كامپيل كنيد. اين كار باعث 
-مي‌شود كه زمان اجراي دقيق هر تابع در برنامه مشخص شود. خروجي‌هاي توليد شده در اين 
-حالت در فايل DLINUX_PROFILE. ريخته مي‌شود.
-3.8) چرا موقعي كه من مي‌خواهم به پايگاه داده وصل شوم پيام "Sorry, too many 
-clients" ‌مي‌گيرم؟
-شما بايد حداكثر تعداد فرايندهاي همزمان postmaster را افزايش دهيد. مقدار پيش فرض 
-32 است. براي افزايش آن مي‌توان از گزينه N- استفاده كرد و يا فايل postgresql.conf 
-را اصلاح نمود
-توجه كنيد كه اگر N- مقداري بيشتر از 32 داشته باشد بايد مقدار B- را نيز افزايش 
-دهيم. اين مقدار بايد حداقل دو برابر مقدار N-‌ باشد. براي اعداد خيلي بالا بايد 
-بعضي از پارامترهاي كرنل را نيز اصلاح كرد. پارامترهايي نظير حداكثر اندازه حافظه 
-اشتراكي SHMMAX ، حداكثر تعداد سمافورها SEMMNI‌ و SEMMNS ، حداكثر تعداد فرايندها 
-NPROC، حداكثر فرايندهاي يك كاربر MAXUPRC و حداكثر فايلهاي باز NFILE و NINODE. 
-يكي از دلايلي كه تعداد اتصالات همزمان postgreSQL محدود است آن است كه نيازهاي 
-PostgreSQL بيش از منابع موجود سيستم نباشد.
-3.9) در شاخه  pgsql_tmp  چه چيزي قرار دارد؟
-دراين شاخه فايلهاي موقتي قرار دارد كه با اجراي درخواستها به وجود آمده است. به 
-عنوان مثال اگر براي اجراي دستور order by نياز به انجام مرتب سازي باشد و در صورتي 
-كه حافظه مشخص شده با گزينه S- براي اينكار كافي نباشد سيستم يك فايل موقت در اين 
-شاخه ايجاد مي‌كند تا عمل مرتب سازي را انجام دهد.
-فايلهاي موقت معمولاً به صورت اتوماتيك پاك مي‌شود اما اگر postgreSQL در حين مرتب 
-سازي crash‌ كند آن فايلها باقي مي‌مانند. با stop و start كردن برنامه postmaster 
-اين فايلها پاك مي‌شوند.
-3.10) چرا براي به روز كردن نسخه پايگاه داده من بايد كل داده ها را dump‌ و مجدداً 
-restore كنم؟
-تيم برنامه نويس postgreSQL در نسخه‌هاي ارائه شده كه فقط minor آنها متفاوت است 
-فقط تغييرات كوچكي اعمال مي‌كنند؛ بنابراين براي به روز كردن از نسخه 7.2‌به 7.2.1 
-نيازي به dump و restore نيست. اما در نسخه‌هايي كه major آنها تغيير مي‌كند غالباً 
-ساختار داخلي جداول و فايلهاي داده تغيير مي‌كند. اين تغييرات معمولاً‌ پيچيده 
-هستند. براي انتقال داده‌هاي موجود در پايگاه داده در اين حالت بايد ‌از dump و 
-restore استفاده كرد.
-در نسخه‌هايي كه ساختار روي ديسك تغييري نمي‌كند مي توان از برنامه pg_upgrade براي 
-به روز كردن پايگاه داده استفاده كرد بدون اينكه نيازي به استفاده از dump و 
-restore  باشد. در يادداشتي كه به همراه هر توزيع مي‌آيد ذكر شده است كه آيا برنامه 
-pg_upgrade براي اين توزيع وجود دارد يا خير.
-3.11) از چه سخت افزاري بايد استفاده كنم؟
-
-چون اكثر سخت‌افزارهاي PC  سازگار هستند مردم فكر مي‌كنند كه كيفيت آنها نيز يكسان 
-است. در حاليكه اينطور نيست. استفاده از هاردهاي SCSI و حافظه‌هاي ECC و مادربردهاي 
-با كيفيت بالا نسبت به سخت افزارهاي ارزانتر نتايج بهتري از نظر كارايي و پايداري 
-سيستم بهمراه خواهد داشت. PostgreSQL روي بيشتر سخت افزارها اجرا مي‌شود اما اگر 
-كارايي و اطمينان فاكتورهاي مهمي هستند بايد سخت افزار مناسب استفاده شود. در 
-گروههاي پستي در مورد سخت افزار مناسب  و انتخاب آن بحث شده است. 
-
-
-
-سوالات عملياتي
-4.1) تفاوت بين binary cursors و Normal cursors چيست؟
-راهنماي دستور DECLARE‌ را مطالعه كنيد.
-4.2) من چگونه مي‌توانم فقط روي چند رديف اول يا يك رديف تصادفي درخواست SELECT‌ 
-بزنم؟
-راهنماي دستور FETCH  يا SELECT...LIMIT را ببينيد.
-در واقع كل درخواست بايد بررسي و ارزيابي شود حتي اگر شما فقط چند رديف اول را 
-بخواهيد. براي مثال درخواست ORDER BY را در نظر بگيريد. اگر انديس يا نمايه‌اي براي 
-ORDER BY وجود داشته باشد،‌postgreSQL‌ ممكن است بتواند فقط چند سطر اول درخواستي 
-را ارزيابي كند و يا اينكه كل درخواست پردازش شود تا تعداد رديف‌هاي درخواستي توليد 
-شود.
-براي انتخاب يك سطر تصادفي به روش زير عمل مي‌كنيم:
+Ø§ÙŠÙ† ÙƒØ§Ø± ÙŠÙƒ ÙØ§ÙŠÙ„ log Ø¯Ø± Ø¨Ø§Ù„Ø§ØªØ±ÙŠÙ† Ø´Ø§Ø®Ù‡ PostgreSQLâ€Œ 
+Ø§ÙŠØ¬Ø§Ø¯ Ù…ÙŠâ€ŒÙƒÙ†Ø¯. Ø§ÙŠÙ† ÙØ§ÙŠÙ„ Ø­Ø§ÙˆÙŠ Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ù…ÙÙŠØ¯ÙŠ 
+Ø¯Ø± Ù…ÙˆØ±Ø¯ Ù…Ø³Ø§Ø¦Ù„ Ùˆ Ø®Ø·Ø§Ù‡Ø§ÙŠÙŠ Ø§Ø³Øª ÙƒÙ‡ Ø¨Ø±Ø§ÙŠ Ø³Ø±ÙˆØ± 
+Ø§ØªÙØ§Ù‚ Ø§ÙØªØ§Ø¯Ù‡ Ø§Ø³Øª. Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† Ø¬Ø²Ø¦ÙŠØ§Øª Ø¨ÙŠØ´ØªØ± 
+Ù…ÙŠâ€ŒØªÙˆØ§Ù† Ø§Ø² d-  Ø¨Ù‡ Ù‡Ù…Ø±Ø§Ù‡ ÙØ±Ù…Ø§Ù† postmasterâ€Œ Ø§Ø³ØªÙØ§Ø¯Ù‡ 
+ÙƒØ±Ø¯. Ú¯Ø²ÙŠÙ†Ù‡ d- Ù‡Ù…Ú†Ù†ÙŠÙ† ÙŠÙƒ Ø¹Ø¯Ø¯ Ù…ÙŠâ€ŒÚ¯ÙŠØ±Ø¯ ÙƒÙ‡ Ù†Ø´Ø§Ù† 
+Ø¯Ù‡Ù†Ø¯Ù‡ Ø³Ø·Ø­ Ø¬Ø²Ø¦ÙŠØ§ØªÙŠ Ø§Ø³Øª ÙƒÙ‡ Ø¯Ø± Logâ€ŒÙØ§ÙŠÙ„ Ù†ÙˆØ´ØªÙ‡ 
+Ù…ÙŠâ€ŒØ´ÙˆØ¯. Ø¨Ø§ Ø¨Ø§Ù„Ø§Ø¨Ø±Ø¯Ù† Ø§ÙŠÙ† Ø¹Ø¯Ø¯ Ø­Ø¬Ù… Ø§Ø·Ù„Ø§Ø¹Ø§Øª 
+ØªÙˆÙ„ÙŠØ¯ Ø´Ø¯Ù‡ Ø¯Ø± LogÙØ§ÙŠÙ„ Ù†ÙŠØ² Ø§ÙØ²Ø§ÙŠØ´ Ù…ÙŠâ€ŒÙŠØ§Ø¨Ø¯.
+Ø§Ú¯Ø± postmaster Ø¯Ø± Ø­Ø§Ù„ Ø§Ø¬Ø±Ø§ Ù†Ø¨Ø§Ø´Ø¯ØŒ Ù…ÙŠâ€ŒØªÙˆØ§Ù†ÙŠÙ… postgres 
+Ø±Ø§ Ø¨Ù‡ Ø·ÙˆØ± Ù…Ø³ØªÙ‚ÙŠÙ… Ø§Ø² Ø®Ø· ÙØ±Ù…Ø§Ù† Ø§Ø¬Ø±Ø§ ÙƒØ±Ø¯Ù‡ Ùˆ  
+Ø¯Ø³ØªÙˆØ±Ø§Øª SQL Ø±Ø§ Ø¨Ù‡ Ø¢Ù† Ø¨Ø¯Ù‡ÙŠÙ…. Ø§ÙŠÙ† ÙƒØ§Ø± ÙÙ‚Ø· Ø¨Ø±Ø§ÙŠ 
+Ø§Ø´ÙƒØ§Ù„â€ŒÙŠØ§Ø¨ÙŠ ØªÙˆØµÙŠÙ‡ Ù…ÙŠâ€ŒØ´ÙˆØ¯. ØªÙˆØ¬Ù‡ ÙƒÙ†ÙŠØ¯ ÙƒÙ‡ Ø¯Ø± 
+Ø§ÙŠÙ† Ø­Ø§Ù„Øª ÙŠÙƒ Ø¯Ø³ØªÙˆØ± Ø¨Ø§ ÙƒØ§Ø±Ø§ÙƒØªØ± newline Ø®Ø§ØªÙ…Ù‡ Ù¾ÙŠØ¯Ø§ 
+Ù…ÙŠâ€ŒÙƒÙ†Ø¯ Ùˆ Ù†Ù‡ Ø¨Ø§ ;. Ø§Ú¯Ø± postmaster Ø±Ø§ Ø¨Ø§ Ø§Ù…ÙƒØ§Ù†Ø§Øª 
+Ø§Ø´ÙƒØ§Ù„â€ŒÙŠØ§Ø¨ÙŠ ÙƒØ§Ù…Ù¾ÙŠÙ„ ÙƒØ±Ø¯Ù‡ Ø¨Ø§Ø´ÙŠØ¯ Ù…ÙŠâ€ŒØªÙˆØ§Ù†ÙŠØ¯ Ø¨Ø§ 
+Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² ÙŠÙƒ Ø¨Ø±Ù†Ø§Ù…Ù‡ Ø§Ø´ÙƒØ§Ù„â€ŒÙŠØ§Ø¨ Ø§Ø¬Ø±Ø§ÙŠ 
+Ø¨Ø±Ù†Ø§Ù…Ù‡ Ø±Ø§ Ù…ÙˆÙ†ÙŠØªÙˆØ± ÙƒÙ†ÙŠØ¯. 
+Ø§Ú¯Ø± postmaster Ø¯Ø± Ø­Ø§Ù„ Ø§Ø¬Ø±Ø§ Ø¨Ø§Ø´Ø¯ Ø¨Ø§ Ø¯Ø³ØªÙˆØ± psql 
+Ù…ÙŠâ€ŒØªÙˆØ§Ù† Ø¨Ù‡ postgres Ù…ØªØµÙ„ Ø´Ø¯. Ø¨Ø§ Ù¾ÙŠØ¯Ø§ ÙƒØ±Ø¯Ù† PID 
+ÙØ±Ø§ÙŠÙ†Ø¯ postgres ÙƒÙ‡ psql Ø¨Ù‡ Ø¢Ù† Ù…ØªØµÙ„ Ø´Ø¯Ù‡ Ø§Ø³Øª Ù…ÙŠâ€ŒØªÙˆØ§Ù† 
+Ø¢Ù† Ø±Ø§ Ù…ÙˆÙ†ÙŠØªÙˆØ± ÙƒØ±Ø¯. Ø¨Ø±Ø§ÙŠ Ø§ÙŠÙ†ÙƒØ§Ø± Ø¨Ø§ÙŠØ¯ ÙŠÙƒ 
+Ø¨Ø±Ù†Ø§Ù…Ù‡ Ø§Ø´ÙƒØ§Ù„â€ŒÙŠØ§Ø¨ Ø±Ø§ Ø¨Ù‡ Ø¢Ù† pid Ù…ØªØµÙ„ ÙƒØ±Ø¯. Ø§Ú¯Ø± 
+Ø¨Ø®ÙˆØ§Ù‡ÙŠÙ… Ø¨Ø§Ù„Ø§ Ø¢Ù…Ø¯Ù† postgres Ø±Ø§ Ù…ÙˆÙ†ÙŠØªÙˆØ± ÙƒÙ†ÙŠÙ… ÙƒØ§ÙÙŠ 
+Ø§Ø³Øª "PGOPTIONS="-W n Ùˆ psql Ø±Ø§ Ø§Ø¬Ø±Ø§ ÙƒÙ†ÙŠÙ…. Ø§ÙŠÙ† ÙƒØ§Ø± Ø¨Ø§Ø¹Ø« 
+Ù…ÙŠâ€ŒØ´ÙˆØ¯ ÙƒÙ‡ postgres Ø¨Ø§ n Ø«Ø§Ù†ÙŠÙ‡ ØªØ§Ø®ÙŠØ± Ø§Ø¬Ø±Ø§ Ø´ÙˆØ¯ Ùˆ Ø¯Ø± 
+Ø§ÙŠÙ† ÙØ§ØµÙ„Ù‡ Ø´Ù…Ø§ Ù…ÙŠâ€ŒØªÙˆØ§Ù†ÙŠØ¯ Ø¨Ø±Ù†Ø§Ù…Ù‡ Ø§Ø´ÙƒØ§Ù„â€ŒÙŠØ§Ø¨ 
+Ø±Ø§ Ø¨Ù‡ Ø¢Ù† Ù…ØªØµÙ„ ÙƒØ±Ø¯Ù‡ Ùˆ Ø¨Ø§ Ù‚Ø±Ø§Ø± Ø¯Ø§Ø¯Ù† ÙŠÙƒ Ù†Ù‚Ø·Ù‡ 
+ØªÙˆÙ‚Ù  Ø±ÙˆÙ†Ø¯ Ø§Ø¬Ø±Ø§ÙŠ Ø¢Ù† Ø±Ø§ Ù…ÙˆÙ†ÙŠØªÙˆØ± ÙƒÙ†ÙŠØ¯.
+postgres Ú¯Ø²ÙŠÙ†Ù‡â€ŒÙ‡Ø§ÙŠ s-â€Œ Ùˆ A- Ùˆ t-â€Œ Ø¯Ø§Ø±Ø¯ ÙƒÙ‡ Ø¨Ø±Ø§ÙŠ 
+Ù¾ÙŠØ¯Ø§ ÙƒØ±Ø¯Ù† Ø§Ø´ÙƒØ§Ù„Ø§Øª Ø¨Ø³ÙŠØ§Ø± Ù…Ù†Ø§Ø³Ø¨ Ù‡Ø³ØªÙ†Ø¯.
+Ø´Ù…Ø§ Ù…ÙŠâ€ŒØªÙˆØ§Ù†ÙŠØ¯ postgreSQL Ø±Ø§ Ø¨Ø§ Ø§Ù…ÙƒØ§Ù†Ø§Øª profiling 
+ÙƒØ§Ù…Ù¾ÙŠÙ„ ÙƒÙ†ÙŠØ¯. Ø§ÙŠÙ† ÙƒØ§Ø± Ø¨Ø§Ø¹Ø« Ù…ÙŠâ€ŒØ´ÙˆØ¯ ÙƒÙ‡ Ø²Ù…Ø§Ù† 
+Ø§Ø¬Ø±Ø§ÙŠ Ø¯Ù‚ÙŠÙ‚ Ù‡Ø± ØªØ§Ø¨Ø¹ Ø¯Ø± Ø¨Ø±Ù†Ø§Ù…Ù‡ Ù…Ø´Ø®Øµ Ø´ÙˆØ¯. 
+Ø®Ø±ÙˆØ¬ÙŠâ€ŒÙ‡Ø§ÙŠ ØªÙˆÙ„ÙŠØ¯ Ø´Ø¯Ù‡ Ø¯Ø± Ø§ÙŠÙ† Ø­Ø§Ù„Øª Ø¯Ø± ÙØ§ÙŠÙ„ 
+DLINUX_PROFILE. Ø±ÙŠØ®ØªÙ‡ Ù…ÙŠâ€ŒØ´ÙˆØ¯.
+3.8) Ú†Ø±Ø§ Ù…ÙˆÙ‚Ø¹ÙŠ ÙƒÙ‡ Ù…Ù† Ù…ÙŠâ€ŒØ®ÙˆØ§Ù‡Ù… Ø¨Ù‡ Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ 
+ÙˆØµÙ„ Ø´ÙˆÙ… Ù¾ÙŠØ§Ù… "Sorry, too many clients" â€ŒÙ…ÙŠâ€ŒÚ¯ÙŠØ±Ù…ØŸ
+Ø´Ù…Ø§ Ø¨Ø§ÙŠØ¯ Ø­Ø¯Ø§ÙƒØ«Ø± ØªØ¹Ø¯Ø§Ø¯ ÙØ±Ø§ÙŠÙ†Ø¯Ù‡Ø§ÙŠ Ù‡Ù…Ø²Ù…Ø§Ù† 
+postmaster Ø±Ø§ Ø§ÙØ²Ø§ÙŠØ´ Ø¯Ù‡ÙŠØ¯. Ù…Ù‚Ø¯Ø§Ø± Ù¾ÙŠØ´ ÙØ±Ø¶ 32 Ø§Ø³Øª. 
+Ø¨Ø±Ø§ÙŠ Ø§ÙØ²Ø§ÙŠØ´ Ø¢Ù† Ù…ÙŠâ€ŒØªÙˆØ§Ù† Ø§Ø² Ú¯Ø²ÙŠÙ†Ù‡ N- Ø§Ø³ØªÙØ§Ø¯Ù‡ 
+ÙƒØ±Ø¯ Ùˆ ÙŠØ§ ÙØ§ÙŠÙ„ postgresql.conf Ø±Ø§ Ø§ØµÙ„Ø§Ø­ Ù†Ù…ÙˆØ¯
+ØªÙˆØ¬Ù‡ ÙƒÙ†ÙŠØ¯ ÙƒÙ‡ Ø§Ú¯Ø± N- Ù…Ù‚Ø¯Ø§Ø±ÙŠ Ø¨ÙŠØ´ØªØ± Ø§Ø² 32 Ø¯Ø§Ø´ØªÙ‡ 
+Ø¨Ø§Ø´Ø¯ Ø¨Ø§ÙŠØ¯ Ù…Ù‚Ø¯Ø§Ø± B- Ø±Ø§ Ù†ÙŠØ² Ø§ÙØ²Ø§ÙŠØ´ Ø¯Ù‡ÙŠÙ…. Ø§ÙŠÙ† 
+Ù…Ù‚Ø¯Ø§Ø± Ø¨Ø§ÙŠØ¯ Ø­Ø¯Ø§Ù‚Ù„ Ø¯Ùˆ Ø¨Ø±Ø§Ø¨Ø± Ù…Ù‚Ø¯Ø§Ø± N-â€Œ Ø¨Ø§Ø´Ø¯. 
+Ø¨Ø±Ø§ÙŠ Ø§Ø¹Ø¯Ø§Ø¯ Ø®ÙŠÙ„ÙŠ Ø¨Ø§Ù„Ø§ Ø¨Ø§ÙŠØ¯ Ø¨Ø¹Ø¶ÙŠ Ø§Ø² 
+Ù¾Ø§Ø±Ø§Ù…ØªØ±Ù‡Ø§ÙŠ ÙƒØ±Ù†Ù„ Ø±Ø§ Ù†ÙŠØ² Ø§ØµÙ„Ø§Ø­ ÙƒØ±Ø¯. 
+Ù¾Ø§Ø±Ø§Ù…ØªØ±Ù‡Ø§ÙŠÙŠ Ù†Ø¸ÙŠØ± Ø­Ø¯Ø§ÙƒØ«Ø± Ø§Ù†Ø¯Ø§Ø²Ù‡ Ø­Ø§ÙØ¸Ù‡ 
+Ø§Ø´ØªØ±Ø§ÙƒÙŠ SHMMAX ØŒ Ø­Ø¯Ø§ÙƒØ«Ø± ØªØ¹Ø¯Ø§Ø¯ Ø³Ù…Ø§ÙÙˆØ±Ù‡Ø§ SEMMNIâ€Œ Ùˆ 
+SEMMNS ØŒ Ø­Ø¯Ø§ÙƒØ«Ø± ØªØ¹Ø¯Ø§Ø¯ ÙØ±Ø§ÙŠÙ†Ø¯Ù‡Ø§ NPROCØŒ Ø­Ø¯Ø§ÙƒØ«Ø± 
+ÙØ±Ø§ÙŠÙ†Ø¯Ù‡Ø§ÙŠ ÙŠÙƒ ÙƒØ§Ø±Ø¨Ø± MAXUPRC Ùˆ Ø­Ø¯Ø§ÙƒØ«Ø± ÙØ§ÙŠÙ„Ù‡Ø§ÙŠ Ø¨Ø§Ø² 
+NFILE Ùˆ NINODE. ÙŠÙƒÙŠ Ø§Ø² Ø¯Ù„Ø§ÙŠÙ„ÙŠ ÙƒÙ‡ ØªØ¹Ø¯Ø§Ø¯ Ø§ØªØµØ§Ù„Ø§Øª 
+Ù‡Ù…Ø²Ù…Ø§Ù† postgreSQL Ù…Ø­Ø¯ÙˆØ¯ Ø§Ø³Øª Ø¢Ù† Ø§Ø³Øª ÙƒÙ‡ Ù†ÙŠØ§Ø²Ù‡Ø§ÙŠ 
+PostgreSQL Ø¨ÙŠØ´ Ø§Ø² Ù…Ù†Ø§Ø¨Ø¹ Ù…ÙˆØ¬ÙˆØ¯ Ø³ÙŠØ³ØªÙ… Ù†Ø¨Ø§Ø´Ø¯.
+3.9) Ø¯Ø± Ø´Ø§Ø®Ù‡  pgsql_tmp  Ú†Ù‡ Ú†ÙŠØ²ÙŠ Ù‚Ø±Ø§Ø± Ø¯Ø§Ø±Ø¯ØŸ
+Ø¯Ø±Ø§ÙŠÙ† Ø´Ø§Ø®Ù‡ ÙØ§ÙŠÙ„Ù‡Ø§ÙŠ Ù…ÙˆÙ‚ØªÙŠ Ù‚Ø±Ø§Ø± Ø¯Ø§Ø±Ø¯ ÙƒÙ‡ Ø¨Ø§ 
+Ø§Ø¬Ø±Ø§ÙŠ Ø¯Ø±Ø®ÙˆØ§Ø³ØªÙ‡Ø§ Ø¨Ù‡ ÙˆØ¬ÙˆØ¯ Ø¢Ù…Ø¯Ù‡ Ø§Ø³Øª. Ø¨Ù‡ Ø¹Ù†ÙˆØ§Ù† 
+Ù…Ø«Ø§Ù„ Ø§Ú¯Ø± Ø¨Ø±Ø§ÙŠ Ø§Ø¬Ø±Ø§ÙŠ Ø¯Ø³ØªÙˆØ± order by Ù†ÙŠØ§Ø² Ø¨Ù‡ Ø§Ù†Ø¬Ø§Ù… 
+Ù…Ø±ØªØ¨ Ø³Ø§Ø²ÙŠ Ø¨Ø§Ø´Ø¯ Ùˆ Ø¯Ø± ØµÙˆØ±ØªÙŠ ÙƒÙ‡ Ø­Ø§ÙØ¸Ù‡ Ù…Ø´Ø®Øµ Ø´Ø¯Ù‡ 
+Ø¨Ø§ Ú¯Ø²ÙŠÙ†Ù‡ S- Ø¨Ø±Ø§ÙŠ Ø§ÙŠÙ†ÙƒØ§Ø± ÙƒØ§ÙÙŠ Ù†Ø¨Ø§Ø´Ø¯ Ø³ÙŠØ³ØªÙ… ÙŠÙƒ 
+ÙØ§ÙŠÙ„ Ù…ÙˆÙ‚Øª Ø¯Ø± Ø§ÙŠÙ† Ø´Ø§Ø®Ù‡ Ø§ÙŠØ¬Ø§Ø¯ Ù…ÙŠâ€ŒÙƒÙ†Ø¯ ØªØ§ Ø¹Ù…Ù„ 
+Ù…Ø±ØªØ¨ Ø³Ø§Ø²ÙŠ Ø±Ø§ Ø§Ù†Ø¬Ø§Ù… Ø¯Ù‡Ø¯.
+ÙØ§ÙŠÙ„Ù‡Ø§ÙŠ Ù…ÙˆÙ‚Øª Ù…Ø¹Ù…ÙˆÙ„Ø§Ù‹ Ø¨Ù‡ ØµÙˆØ±Øª Ø§ØªÙˆÙ…Ø§ØªÙŠÙƒ Ù¾Ø§Ùƒ 
+Ù…ÙŠâ€ŒØ´ÙˆØ¯ Ø§Ù…Ø§ Ø§Ú¯Ø± postgreSQL Ø¯Ø± Ø­ÙŠÙ† Ù…Ø±ØªØ¨ Ø³Ø§Ø²ÙŠ crashâ€Œ 
+ÙƒÙ†Ø¯ Ø¢Ù† ÙØ§ÙŠÙ„Ù‡Ø§ Ø¨Ø§Ù‚ÙŠ Ù…ÙŠâ€ŒÙ…Ø§Ù†Ù†Ø¯. Ø¨Ø§ stop Ùˆ start ÙƒØ±Ø¯Ù† 
+Ø¨Ø±Ù†Ø§Ù…Ù‡ postmaster Ø§ÙŠÙ† ÙØ§ÙŠÙ„Ù‡Ø§ Ù¾Ø§Ùƒ Ù…ÙŠâ€ŒØ´ÙˆÙ†Ø¯.
+3.10) Ú†Ø±Ø§ Ø¨Ø±Ø§ÙŠ Ø¨Ù‡ Ø±ÙˆØ² ÙƒØ±Ø¯Ù† Ù†Ø³Ø®Ù‡ Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ù…Ù† 
+Ø¨Ø§ÙŠØ¯ ÙƒÙ„ Ø¯Ø§Ø¯Ù‡ Ù‡Ø§ Ø±Ø§ dumpâ€Œ Ùˆ Ù…Ø¬Ø¯Ø¯Ø§Ù‹ restore ÙƒÙ†Ù…ØŸ
+ØªÙŠÙ… Ø¨Ø±Ù†Ø§Ù…Ù‡ Ù†ÙˆÙŠØ³ postgreSQL Ø¯Ø± Ù†Ø³Ø®Ù‡â€ŒÙ‡Ø§ÙŠ Ø§Ø±Ø§Ø¦Ù‡ Ø´Ø¯Ù‡ 
+ÙƒÙ‡ ÙÙ‚Ø· minor Ø¢Ù†Ù‡Ø§ Ù…ØªÙØ§ÙˆØª Ø§Ø³Øª ÙÙ‚Ø· ØªØºÙŠÙŠØ±Ø§Øª ÙƒÙˆÚ†ÙƒÙŠ 
+Ø§Ø¹Ù…Ø§Ù„ Ù…ÙŠâ€ŒÙƒÙ†Ù†Ø¯Ø› Ø¨Ù†Ø§Ø¨Ø±Ø§ÙŠÙ† Ø¨Ø±Ø§ÙŠ Ø¨Ù‡ Ø±ÙˆØ² ÙƒØ±Ø¯Ù† Ø§Ø² 
+Ù†Ø³Ø®Ù‡ 7.2â€ŒØ¨Ù‡ 7.2.1 Ù†ÙŠØ§Ø²ÙŠ Ø¨Ù‡ dump Ùˆ restore Ù†ÙŠØ³Øª. Ø§Ù…Ø§ Ø¯Ø± 
+Ù†Ø³Ø®Ù‡â€ŒÙ‡Ø§ÙŠÙŠ ÙƒÙ‡ major Ø¢Ù†Ù‡Ø§ ØªØºÙŠÙŠØ± Ù…ÙŠâ€ŒÙƒÙ†Ø¯ ØºØ§Ù„Ø¨Ø§Ù‹ 
+Ø³Ø§Ø®ØªØ§Ø± Ø¯Ø§Ø®Ù„ÙŠ Ø¬Ø¯Ø§ÙˆÙ„ Ùˆ ÙØ§ÙŠÙ„Ù‡Ø§ÙŠ Ø¯Ø§Ø¯Ù‡ ØªØºÙŠÙŠØ± 
+Ù…ÙŠâ€ŒÙƒÙ†Ø¯. Ø§ÙŠÙ† ØªØºÙŠÙŠØ±Ø§Øª Ù…Ø¹Ù…ÙˆÙ„Ø§Ù‹â€Œ Ù¾ÙŠÚ†ÙŠØ¯Ù‡ Ù‡Ø³ØªÙ†Ø¯. 
+Ø¨Ø±Ø§ÙŠ Ø§Ù†ØªÙ‚Ø§Ù„ Ø¯Ø§Ø¯Ù‡â€ŒÙ‡Ø§ÙŠ Ù…ÙˆØ¬ÙˆØ¯ Ø¯Ø± Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ 
+Ø¯Ø± Ø§ÙŠÙ† Ø­Ø§Ù„Øª Ø¨Ø§ÙŠØ¯ â€ŒØ§Ø² dump Ùˆ restore Ø§Ø³ØªÙØ§Ø¯Ù‡ ÙƒØ±Ø¯.
+Ø¯Ø± Ù†Ø³Ø®Ù‡â€ŒÙ‡Ø§ÙŠÙŠ ÙƒÙ‡ Ø³Ø§Ø®ØªØ§Ø± Ø±ÙˆÙŠ Ø¯ÙŠØ³Ùƒ ØªØºÙŠÙŠØ±ÙŠ 
+Ù†Ù…ÙŠâ€ŒÙƒÙ†Ø¯ Ù…ÙŠ ØªÙˆØ§Ù† Ø§Ø² Ø¨Ø±Ù†Ø§Ù…Ù‡ pg_upgrade Ø¨Ø±Ø§ÙŠ Ø¨Ù‡ Ø±ÙˆØ² 
+ÙƒØ±Ø¯Ù† Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ø§Ø³ØªÙØ§Ø¯Ù‡ ÙƒØ±Ø¯ Ø¨Ø¯ÙˆÙ† Ø§ÙŠÙ†ÙƒÙ‡ 
+Ù†ÙŠØ§Ø²ÙŠ Ø¨Ù‡ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² dump Ùˆ restore  Ø¨Ø§Ø´Ø¯. Ø¯Ø± 
+ÙŠØ§Ø¯Ø¯Ø§Ø´ØªÙŠ ÙƒÙ‡ Ø¨Ù‡ Ù‡Ù…Ø±Ø§Ù‡ Ù‡Ø± ØªÙˆØ²ÙŠØ¹ Ù…ÙŠâ€ŒØ¢ÙŠØ¯ Ø°ÙƒØ± 
+Ø´Ø¯Ù‡ Ø§Ø³Øª ÙƒÙ‡ Ø¢ÙŠØ§ Ø¨Ø±Ù†Ø§Ù…Ù‡ pg_upgrade Ø¨Ø±Ø§ÙŠ Ø§ÙŠÙ† ØªÙˆØ²ÙŠØ¹ 
+ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯ ÙŠØ§ Ø®ÙŠØ±.
+3.11) Ø§Ø² Ú†Ù‡ Ø³Ø®Øª Ø§ÙØ²Ø§Ø±ÙŠ Ø¨Ø§ÙŠØ¯ Ø§Ø³ØªÙØ§Ø¯Ù‡ ÙƒÙ†Ù…ØŸ
+
+Ú†ÙˆÙ† Ø§ÙƒØ«Ø± Ø³Ø®Øªâ€ŒØ§ÙØ²Ø§Ø±Ù‡Ø§ÙŠ PC  Ø³Ø§Ø²Ú¯Ø§Ø± Ù‡Ø³ØªÙ†Ø¯ Ù…Ø±Ø¯Ù… 
+ÙÙƒØ± Ù…ÙŠâ€ŒÙƒÙ†Ù†Ø¯ ÙƒÙ‡ ÙƒÙŠÙÙŠØª Ø¢Ù†Ù‡Ø§ Ù†ÙŠØ² ÙŠÙƒØ³Ø§Ù† Ø§Ø³Øª. Ø¯Ø± 
+Ø­Ø§Ù„ÙŠÙƒÙ‡ Ø§ÙŠÙ†Ø·ÙˆØ± Ù†ÙŠØ³Øª. Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² Ù‡Ø§Ø±Ø¯Ù‡Ø§ÙŠ SCSI Ùˆ 
+Ø­Ø§ÙØ¸Ù‡â€ŒÙ‡Ø§ÙŠ ECC Ùˆ Ù…Ø§Ø¯Ø±Ø¨Ø±Ø¯Ù‡Ø§ÙŠ Ø¨Ø§ ÙƒÙŠÙÙŠØª Ø¨Ø§Ù„Ø§ 
+Ù†Ø³Ø¨Øª Ø¨Ù‡ Ø³Ø®Øª Ø§ÙØ²Ø§Ø±Ù‡Ø§ÙŠ Ø§Ø±Ø²Ø§Ù†ØªØ± Ù†ØªØ§ÙŠØ¬ Ø¨Ù‡ØªØ±ÙŠ Ø§Ø² 
+Ù†Ø¸Ø± ÙƒØ§Ø±Ø§ÙŠÙŠ Ùˆ Ù¾Ø§ÙŠØ¯Ø§Ø±ÙŠ Ø³ÙŠØ³ØªÙ… Ø¨Ù‡Ù…Ø±Ø§Ù‡ Ø®ÙˆØ§Ù‡Ø¯ 
+Ø¯Ø§Ø´Øª. PostgreSQL Ø±ÙˆÙŠ Ø¨ÙŠØ´ØªØ± Ø³Ø®Øª Ø§ÙØ²Ø§Ø±Ù‡Ø§ Ø§Ø¬Ø±Ø§ 
+Ù…ÙŠâ€ŒØ´ÙˆØ¯ Ø§Ù…Ø§ Ø§Ú¯Ø± ÙƒØ§Ø±Ø§ÙŠÙŠ Ùˆ Ø§Ø·Ù…ÙŠÙ†Ø§Ù† ÙØ§ÙƒØªÙˆØ±Ù‡Ø§ÙŠ 
+Ù…Ù‡Ù…ÙŠ Ù‡Ø³ØªÙ†Ø¯ Ø¨Ø§ÙŠØ¯ Ø³Ø®Øª Ø§ÙØ²Ø§Ø± Ù…Ù†Ø§Ø³Ø¨ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø´ÙˆØ¯. 
+Ø¯Ø± Ú¯Ø±ÙˆÙ‡Ù‡Ø§ÙŠ Ù¾Ø³ØªÙŠ Ø¯Ø± Ù…ÙˆØ±Ø¯ Ø³Ø®Øª Ø§ÙØ²Ø§Ø± Ù…Ù†Ø§Ø³Ø¨  Ùˆ 
+Ø§Ù†ØªØ®Ø§Ø¨ Ø¢Ù† Ø¨Ø­Ø« Ø´Ø¯Ù‡ Ø§Ø³Øª. 
+
+
+
+Ø³ÙˆØ§Ù„Ø§Øª Ø¹Ù…Ù„ÙŠØ§ØªÙŠ
+4.1) ØªÙØ§ÙˆØª Ø¨ÙŠÙ† binary cursors Ùˆ Normal cursors Ú†ÙŠØ³ØªØŸ
+Ø±Ø§Ù‡Ù†Ù…Ø§ÙŠ Ø¯Ø³ØªÙˆØ± DECLAREâ€Œ Ø±Ø§ Ù…Ø·Ø§Ù„Ø¹Ù‡ ÙƒÙ†ÙŠØ¯.
+4.2) Ù…Ù† Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… ÙÙ‚Ø· Ø±ÙˆÙŠ Ú†Ù†Ø¯ Ø±Ø¯ÙŠÙ Ø§ÙˆÙ„ ÙŠØ§ 
+ÙŠÙƒ Ø±Ø¯ÙŠÙ ØªØµØ§Ø¯ÙÙŠ Ø¯Ø±Ø®ÙˆØ§Ø³Øª SELECTâ€Œ Ø¨Ø²Ù†Ù…ØŸ
+Ø±Ø§Ù‡Ù†Ù…Ø§ÙŠ Ø¯Ø³ØªÙˆØ± FETCH  ÙŠØ§ SELECT...LIMIT Ø±Ø§ Ø¨Ø¨ÙŠÙ†ÙŠØ¯.
+Ø¯Ø± ÙˆØ§Ù‚Ø¹ ÙƒÙ„ Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ø¨Ø§ÙŠØ¯ Ø¨Ø±Ø±Ø³ÙŠ Ùˆ Ø§Ø±Ø²ÙŠØ§Ø¨ÙŠ Ø´ÙˆØ¯ 
+Ø­ØªÙŠ Ø§Ú¯Ø± Ø´Ù…Ø§ ÙÙ‚Ø· Ú†Ù†Ø¯ Ø±Ø¯ÙŠÙ Ø§ÙˆÙ„ Ø±Ø§ Ø¨Ø®ÙˆØ§Ù‡ÙŠØ¯. Ø¨Ø±Ø§ÙŠ 
+Ù…Ø«Ø§Ù„ Ø¯Ø±Ø®ÙˆØ§Ø³Øª ORDER BY Ø±Ø§ Ø¯Ø± Ù†Ø¸Ø± Ø¨Ú¯ÙŠØ±ÙŠØ¯. Ø§Ú¯Ø± 
+Ø§Ù†Ø¯ÙŠØ³ ÙŠØ§ Ù†Ù…Ø§ÙŠÙ‡â€ŒØ§ÙŠ Ø¨Ø±Ø§ÙŠ ORDER BY ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø´ØªÙ‡ 
+Ø¨Ø§Ø´Ø¯ØŒâ€ŒpostgreSQLâ€Œ Ù…Ù…ÙƒÙ† Ø§Ø³Øª Ø¨ØªÙˆØ§Ù†Ø¯ ÙÙ‚Ø· Ú†Ù†Ø¯ Ø³Ø·Ø± 
+Ø§ÙˆÙ„ Ø¯Ø±Ø®ÙˆØ§Ø³ØªÙŠ Ø±Ø§ Ø§Ø±Ø²ÙŠØ§Ø¨ÙŠ ÙƒÙ†Ø¯ Ùˆ ÙŠØ§ Ø§ÙŠÙ†ÙƒÙ‡ ÙƒÙ„ 
+Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ù¾Ø±Ø¯Ø§Ø²Ø´ Ø´ÙˆØ¯ ØªØ§ ØªØ¹Ø¯Ø§Ø¯ Ø±Ø¯ÙŠÙâ€ŒÙ‡Ø§ÙŠ 
+Ø¯Ø±Ø®ÙˆØ§Ø³ØªÙŠ ØªÙˆÙ„ÙŠØ¯ Ø´ÙˆØ¯.
+Ø¨Ø±Ø§ÙŠ Ø§Ù†ØªØ®Ø§Ø¨ ÙŠÙƒ Ø³Ø·Ø± ØªØµØ§Ø¯ÙÙŠ Ø¨Ù‡ Ø±ÙˆØ´ Ø²ÙŠØ± Ø¹Ù…Ù„ 
+Ù…ÙŠâ€ŒÙƒÙ†ÙŠÙ…:
     SELECT col
     FROM tab
     ORDER BY random()
     LIMIT 1;
-4.3) من چگونه مي‌توانم ليستي از جداول يا ساير چيزهايي كه در psql‌ وجود دارد را 
-ببينم؟
-براي ديدن ليست جداول دستور  dt\ را در برنامه psql‌ استفاده كنيد. براي ديدن ليست 
-كامل فرمانها ?\ را اجرا كنيد. راه ديگر خواندن متن برنامه psql‌ است كه در شاخه 
-pgsql/src/bin/psql/describe.c ‌قرار دارد. اين فايل حاوي فرامين SQLيي است كه 
-خروجي را براي  دستوراتي كه با \‌در psql شروع مي‌شوند توليد مي‌كنند. راه ديگر 
-اجراي psql با گزينه E-‌است. اينكار باعث مي‌شود كه psql قبل از اجرا هر دستور 
-SQL‌متناظر آن را نشان دهد. PostgreSQL‌همچنين يك برنامه SQLi دارد كه مي‌توان با 
-استفاده از آن  اطلاعات داخلي پايگاه داده را استخراج كرد.
-4.4) چگونه يك ستون جدول را حذف مي‌كنيد؟ چگونه نوع داده آن را عوض كنيم؟
-حذف يك ستون در توزيع 7.3 با استفاده از دستور ALTER TABLE DROP COLUMN اضافه شده 
-است. در نسخه‌هاي قبلي به روش زير عمل كنيد:
+4.3) Ù…Ù† Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… Ù„ÙŠØ³ØªÙŠ Ø§Ø² Ø¬Ø¯Ø§ÙˆÙ„ ÙŠØ§ Ø³Ø§ÙŠØ± 
+Ú†ÙŠØ²Ù‡Ø§ÙŠÙŠ ÙƒÙ‡ Ø¯Ø± psqlâ€Œ ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯ Ø±Ø§ Ø¨Ø¨ÙŠÙ†Ù…ØŸ
+Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† Ù„ÙŠØ³Øª Ø¬Ø¯Ø§ÙˆÙ„ Ø¯Ø³ØªÙˆØ±  dt\ Ø±Ø§ Ø¯Ø± Ø¨Ø±Ù†Ø§Ù…Ù‡ 
+psqlâ€Œ Ø§Ø³ØªÙØ§Ø¯Ù‡ ÙƒÙ†ÙŠØ¯. Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† Ù„ÙŠØ³Øª ÙƒØ§Ù…Ù„ 
+ÙØ±Ù…Ø§Ù†Ù‡Ø§ ?\ Ø±Ø§ Ø§Ø¬Ø±Ø§ ÙƒÙ†ÙŠØ¯. Ø±Ø§Ù‡ Ø¯ÙŠÚ¯Ø± Ø®ÙˆØ§Ù†Ø¯Ù† Ù…ØªÙ† 
+Ø¨Ø±Ù†Ø§Ù…Ù‡ psqlâ€Œ Ø§Ø³Øª ÙƒÙ‡ Ø¯Ø± Ø´Ø§Ø®Ù‡ pgsql/src/bin/psql/describe.c 
+â€ŒÙ‚Ø±Ø§Ø± Ø¯Ø§Ø±Ø¯. Ø§ÙŠÙ† ÙØ§ÙŠÙ„ Ø­Ø§ÙˆÙŠ ÙØ±Ø§Ù…ÙŠÙ† SQLÙŠÙŠ Ø§Ø³Øª ÙƒÙ‡ 
+Ø®Ø±ÙˆØ¬ÙŠ Ø±Ø§ Ø¨Ø±Ø§ÙŠ  Ø¯Ø³ØªÙˆØ±Ø§ØªÙŠ ÙƒÙ‡ Ø¨Ø§ \â€ŒØ¯Ø± psql Ø´Ø±ÙˆØ¹ 
+Ù…ÙŠâ€ŒØ´ÙˆÙ†Ø¯ ØªÙˆÙ„ÙŠØ¯ Ù…ÙŠâ€ŒÙƒÙ†Ù†Ø¯. Ø±Ø§Ù‡ Ø¯ÙŠÚ¯Ø± Ø§Ø¬Ø±Ø§ÙŠ psql Ø¨Ø§ 
+Ú¯Ø²ÙŠÙ†Ù‡ E-â€ŒØ§Ø³Øª. Ø§ÙŠÙ†ÙƒØ§Ø± Ø¨Ø§Ø¹Ø« Ù…ÙŠâ€ŒØ´ÙˆØ¯ ÙƒÙ‡ psql Ù‚Ø¨Ù„ 
+Ø§Ø² Ø§Ø¬Ø±Ø§ Ù‡Ø± Ø¯Ø³ØªÙˆØ± SQLâ€ŒÙ…ØªÙ†Ø§Ø¸Ø± Ø¢Ù† Ø±Ø§ Ù†Ø´Ø§Ù† Ø¯Ù‡Ø¯. 
+PostgreSQLâ€ŒÙ‡Ù…Ú†Ù†ÙŠÙ† ÙŠÙƒ Ø¨Ø±Ù†Ø§Ù…Ù‡ SQLi Ø¯Ø§Ø±Ø¯ ÙƒÙ‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù† 
+Ø¨Ø§ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² Ø¢Ù†  Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ø¯Ø§Ø®Ù„ÙŠ Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ 
+Ø±Ø§ Ø§Ø³ØªØ®Ø±Ø§Ø¬ ÙƒØ±Ø¯.
+4.4) Ú†Ú¯ÙˆÙ†Ù‡ ÙŠÙƒ Ø³ØªÙˆÙ† Ø¬Ø¯ÙˆÙ„ Ø±Ø§ Ø­Ø°Ù Ù…ÙŠâ€ŒÙƒÙ†ÙŠØ¯ØŸ Ú†Ú¯ÙˆÙ†Ù‡ 
+Ù†ÙˆØ¹ Ø¯Ø§Ø¯Ù‡ Ø¢Ù† Ø±Ø§ Ø¹ÙˆØ¶ ÙƒÙ†ÙŠÙ…ØŸ
+Ø­Ø°Ù ÙŠÙƒ Ø³ØªÙˆÙ† Ø¯Ø± ØªÙˆØ²ÙŠØ¹ 7.3 Ø¨Ø§ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² Ø¯Ø³ØªÙˆØ± 
+ALTER TABLE DROP COLUMN Ø§Ø¶Ø§ÙÙ‡ Ø´Ø¯Ù‡ Ø§Ø³Øª. Ø¯Ø± Ù†Ø³Ø®Ù‡â€ŒÙ‡Ø§ÙŠ 
+Ù‚Ø¨Ù„ÙŠ Ø¨Ù‡ Ø±ÙˆØ´ Ø²ÙŠØ± Ø¹Ù…Ù„ ÙƒÙ†ÙŠØ¯:
     BEGIN;
     LOCK TABLE old_table;
-    SELECT ...  -- تمام ستونها غير از ستوني كه مي‌خواهيد آن را حذف كنيد را در اينجا بياوريد
+    SELECT ...  -- ØªÙ…Ø§Ù… Ø³ØªÙˆÙ†Ù‡Ø§ ØºÙŠØ± Ø§Ø² Ø³ØªÙˆÙ†ÙŠ ÙƒÙ‡ Ù…ÙŠâ€ŒØ®ÙˆØ§Ù‡ÙŠØ¯ Ø¢Ù† Ø±Ø§ Ø­Ø°Ù ÙƒÙ†ÙŠØ¯ Ø±Ø§ Ø¯Ø± Ø§ÙŠÙ†Ø¬Ø§ Ø¨ÙŠØ§ÙˆØ±ÙŠØ¯
     INTO TABLE new_table
     FROM old_table;
     DROP TABLE old_table;
     ALTER TABLE new_table RENAME TO old_table;
     COMMIT;
-براي عوض كردن نوع داده يك ستون به روش زير عمل كنيد:
+Ø¨Ø±Ø§ÙŠ Ø¹ÙˆØ¶ ÙƒØ±Ø¯Ù† Ù†ÙˆØ¹ Ø¯Ø§Ø¯Ù‡ ÙŠÙƒ Ø³ØªÙˆÙ† Ø¨Ù‡ Ø±ÙˆØ´ Ø²ÙŠØ± Ø¹Ù…Ù„ 
+ÙƒÙ†ÙŠØ¯:
     BEGIN;
     ALTER TABLE tab ADD COLUMN new_col new_data_type;
     UPDATE tab SET new_col = CAST(old_col AS new_data_type);
     ALTER TABLE tab DROP COLUMN old_col;
     COMMIT;
-4.5) حداكثر اندازه يك رديف،‌ جدول و خود پايگاه داده چقدر است؟
-محدوديتها عبارتند از:
-    حداكثر اندازه پايگاه داده             نامحدود (تا 32 ترابايت وجود دارد)
-    حداكثر اندازه يك جدول               32 ترابايت
-    حداكثر ا ندازه يك رديف              1.6 ترابايت
-    حداكثر اندازه يك فيلد                1 گيگا بايت
-    حداكثر اندازه رديفهاي يك جدول  نا محدود
-    حداكثر ستونهاي يك جدول 	بسته به نوع جدول بين 250 تا 6000 
-    حداكثر انديسهاي يك جدول	نا محدود
-البته در حالت نامحدود نيز ما محدود به حجم هاردديسك و فضاي حافظه خواهيم بود. در 
-صورتي که مقادير مشخص شده به عنوان نامحدود به صورت غير معمولي بزرك شوند كارايي 
-سيستم كاهش خواهد يافت.
-براي ذخيره كردن جداول با اندازه خيلي بزرگ نيازي نيست كه سيستم عامل امكان ايجاد 
-فايلهاي بزرگ را داشته باشد. بلكه جداول خيلي بزرگ به صورت فايلهايي به حجم يك گيگا 
-بايت نگاهداري مي‌شوند.
-اگر اندازه بلوكهاي داده را برابر 32 كيلو بايت قرار دهيم حداكثر اندازه جدول و 
-حداكثر تعداد ستونها 4 برابر خواهد شد.
-4.6) چقدر فضاي ديسك سخت براي ذخيره كردن داده‌‌هاي يك فايل متني مورد نياز است؟
-يك پايگاه داده PostgreSQL‌ تا 5 برابر فضايي روي هاردديسك براي نگاهداري يك فايل 
-متني نياز دارد.
-به عنوان مثال يك فايل با 100000 خط را در نظر بگيريد كه در هر خط يك عدد صحيح و يك 
-توضيح متني آمده است. فرض كنيد كه رشته متني به طور متوسط 20 بايت باشد. اندازه 
-فايل برابر 2.8 مگا بايت خواهد بود ولي PostgreSQL براي نگاهداري اين فايل به 6.4 
-مگا بايت اطلاعات نياز خواهد داشت.
-    32 bytes: اندازه سرايند هر خط به طور تقريبي
-    24 bytes: يك عدد صحيح و يك رشته 24 بايتي
-   + 4 bytes: اشاره گر روي صفحه به يك چندتايي
+4.5) Ø­Ø¯Ø§ÙƒØ«Ø± Ø§Ù†Ø¯Ø§Ø²Ù‡ ÙŠÙƒ Ø±Ø¯ÙŠÙØŒâ€Œ Ø¬Ø¯ÙˆÙ„ Ùˆ Ø®ÙˆØ¯ 
+Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ú†Ù‚Ø¯Ø± Ø§Ø³ØªØŸ
+Ù…Ø­Ø¯ÙˆØ¯ÙŠØªÙ‡Ø§ Ø¹Ø¨Ø§Ø±ØªÙ†Ø¯ Ø§Ø²:
+    Ø­Ø¯Ø§ÙƒØ«Ø± Ø§Ù†Ø¯Ø§Ø²Ù‡ Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡             Ù†Ø§Ù…Ø­Ø¯ÙˆØ¯ (ØªØ§ 32 ØªØ±Ø§Ø¨Ø§ÙŠØª ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯)
+    Ø­Ø¯Ø§ÙƒØ«Ø± Ø§Ù†Ø¯Ø§Ø²Ù‡ ÙŠÙƒ Ø¬Ø¯ÙˆÙ„               32 ØªØ±Ø§Ø¨Ø§ÙŠØª
+    Ø­Ø¯Ø§ÙƒØ«Ø± Ø§ Ù†Ø¯Ø§Ø²Ù‡ ÙŠÙƒ Ø±Ø¯ÙŠÙ              1.6 ØªØ±Ø§Ø¨Ø§ÙŠØª
+    Ø­Ø¯Ø§ÙƒØ«Ø± Ø§Ù†Ø¯Ø§Ø²Ù‡ ÙŠÙƒ ÙÙŠÙ„Ø¯                1 Ú¯ÙŠÚ¯Ø§ Ø¨Ø§ÙŠØª
+    Ø­Ø¯Ø§ÙƒØ«Ø± Ø§Ù†Ø¯Ø§Ø²Ù‡ Ø±Ø¯ÙŠÙÙ‡Ø§ÙŠ ÙŠÙƒ Ø¬Ø¯ÙˆÙ„  Ù†Ø§ Ù…Ø­Ø¯ÙˆØ¯
+    Ø­Ø¯Ø§ÙƒØ«Ø± Ø³ØªÙˆÙ†Ù‡Ø§ÙŠ ÙŠÙƒ Ø¬Ø¯ÙˆÙ„ 	Ø¨Ø³ØªÙ‡ Ø¨Ù‡ Ù†ÙˆØ¹ Ø¬Ø¯ÙˆÙ„ Ø¨ÙŠÙ† 250 ØªØ§ 6000 
+    Ø­Ø¯Ø§ÙƒØ«Ø± Ø§Ù†Ø¯ÙŠØ³Ù‡Ø§ÙŠ ÙŠÙƒ Ø¬Ø¯ÙˆÙ„	Ù†Ø§ Ù…Ø­Ø¯ÙˆØ¯
+Ø§Ù„Ø¨ØªÙ‡ Ø¯Ø± Ø­Ø§Ù„Øª Ù†Ø§Ù…Ø­Ø¯ÙˆØ¯ Ù†ÙŠØ² Ù…Ø§ Ù…Ø­Ø¯ÙˆØ¯ Ø¨Ù‡ Ø­Ø¬Ù… 
+Ù‡Ø§Ø±Ø¯Ø¯ÙŠØ³Ùƒ Ùˆ ÙØ¶Ø§ÙŠ Ø­Ø§ÙØ¸Ù‡ Ø®ÙˆØ§Ù‡ÙŠÙ… Ø¨ÙˆØ¯. Ø¯Ø± ØµÙˆØ±ØªÙŠ 
+Ú©Ù‡ Ù…Ù‚Ø§Ø¯ÙŠØ± Ù…Ø´Ø®Øµ Ø´Ø¯Ù‡ Ø¨Ù‡ Ø¹Ù†ÙˆØ§Ù† Ù†Ø§Ù…Ø­Ø¯ÙˆØ¯ Ø¨Ù‡ ØµÙˆØ±Øª 
+ØºÙŠØ± Ù…Ø¹Ù…ÙˆÙ„ÙŠ Ø¨Ø²Ø±Ùƒ Ø´ÙˆÙ†Ø¯ ÙƒØ§Ø±Ø§ÙŠÙŠ Ø³ÙŠØ³ØªÙ… ÙƒØ§Ù‡Ø´ 
+Ø®ÙˆØ§Ù‡Ø¯ ÙŠØ§ÙØª.
+Ø¨Ø±Ø§ÙŠ Ø°Ø®ÙŠØ±Ù‡ ÙƒØ±Ø¯Ù† Ø¬Ø¯Ø§ÙˆÙ„ Ø¨Ø§ Ø§Ù†Ø¯Ø§Ø²Ù‡ Ø®ÙŠÙ„ÙŠ Ø¨Ø²Ø±Ú¯ 
+Ù†ÙŠØ§Ø²ÙŠ Ù†ÙŠØ³Øª ÙƒÙ‡ Ø³ÙŠØ³ØªÙ… Ø¹Ø§Ù…Ù„ Ø§Ù…ÙƒØ§Ù† Ø§ÙŠØ¬Ø§Ø¯ 
+ÙØ§ÙŠÙ„Ù‡Ø§ÙŠ Ø¨Ø²Ø±Ú¯ Ø±Ø§ Ø¯Ø§Ø´ØªÙ‡ Ø¨Ø§Ø´Ø¯. Ø¨Ù„ÙƒÙ‡ Ø¬Ø¯Ø§ÙˆÙ„ Ø®ÙŠÙ„ÙŠ 
+Ø¨Ø²Ø±Ú¯ Ø¨Ù‡ ØµÙˆØ±Øª ÙØ§ÙŠÙ„Ù‡Ø§ÙŠÙŠ Ø¨Ù‡ Ø­Ø¬Ù… ÙŠÙƒ Ú¯ÙŠÚ¯Ø§ Ø¨Ø§ÙŠØª 
+Ù†Ú¯Ø§Ù‡Ø¯Ø§Ø±ÙŠ Ù…ÙŠâ€ŒØ´ÙˆÙ†Ø¯.
+Ø§Ú¯Ø± Ø§Ù†Ø¯Ø§Ø²Ù‡ Ø¨Ù„ÙˆÙƒÙ‡Ø§ÙŠ Ø¯Ø§Ø¯Ù‡ Ø±Ø§ Ø¨Ø±Ø§Ø¨Ø± 32 ÙƒÙŠÙ„Ùˆ Ø¨Ø§ÙŠØª 
+Ù‚Ø±Ø§Ø± Ø¯Ù‡ÙŠÙ… Ø­Ø¯Ø§ÙƒØ«Ø± Ø§Ù†Ø¯Ø§Ø²Ù‡ Ø¬Ø¯ÙˆÙ„ Ùˆ Ø­Ø¯Ø§ÙƒØ«Ø± ØªØ¹Ø¯Ø§Ø¯ 
+Ø³ØªÙˆÙ†Ù‡Ø§ 4 Ø¨Ø±Ø§Ø¨Ø± Ø®ÙˆØ§Ù‡Ø¯ Ø´Ø¯.
+4.6) Ú†Ù‚Ø¯Ø± ÙØ¶Ø§ÙŠ Ø¯ÙŠØ³Ùƒ Ø³Ø®Øª Ø¨Ø±Ø§ÙŠ Ø°Ø®ÙŠØ±Ù‡ ÙƒØ±Ø¯Ù† 
+Ø¯Ø§Ø¯Ù‡â€Œâ€ŒÙ‡Ø§ÙŠ ÙŠÙƒ ÙØ§ÙŠÙ„ Ù…ØªÙ†ÙŠ Ù…ÙˆØ±Ø¯ Ù†ÙŠØ§Ø² Ø§Ø³ØªØŸ
+ÙŠÙƒ Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ PostgreSQLâ€Œ ØªØ§ 5 Ø¨Ø±Ø§Ø¨Ø± ÙØ¶Ø§ÙŠÙŠ Ø±ÙˆÙŠ 
+Ù‡Ø§Ø±Ø¯Ø¯ÙŠØ³Ùƒ Ø¨Ø±Ø§ÙŠ Ù†Ú¯Ø§Ù‡Ø¯Ø§Ø±ÙŠ ÙŠÙƒ ÙØ§ÙŠÙ„ Ù…ØªÙ†ÙŠ Ù†ÙŠØ§Ø² 
+Ø¯Ø§Ø±Ø¯.
+Ø¨Ù‡ Ø¹Ù†ÙˆØ§Ù† Ù…Ø«Ø§Ù„ ÙŠÙƒ ÙØ§ÙŠÙ„ Ø¨Ø§ 100000 Ø®Ø· Ø±Ø§ Ø¯Ø± Ù†Ø¸Ø± 
+Ø¨Ú¯ÙŠØ±ÙŠØ¯ ÙƒÙ‡ Ø¯Ø± Ù‡Ø± Ø®Ø· ÙŠÙƒ Ø¹Ø¯Ø¯ ØµØ­ÙŠØ­ Ùˆ ÙŠÙƒ ØªÙˆØ¶ÙŠØ­ 
+Ù…ØªÙ†ÙŠ Ø¢Ù…Ø¯Ù‡ Ø§Ø³Øª. ÙØ±Ø¶ ÙƒÙ†ÙŠØ¯ ÙƒÙ‡ Ø±Ø´ØªÙ‡ Ù…ØªÙ†ÙŠ Ø¨Ù‡ Ø·ÙˆØ± 
+Ù…ØªÙˆØ³Ø· 20 Ø¨Ø§ÙŠØª Ø¨Ø§Ø´Ø¯. Ø§Ù†Ø¯Ø§Ø²Ù‡ ÙØ§ÙŠÙ„ Ø¨Ø±Ø§Ø¨Ø± 2.8 Ù…Ú¯Ø§ 
+Ø¨Ø§ÙŠØª Ø®ÙˆØ§Ù‡Ø¯ Ø¨ÙˆØ¯ ÙˆÙ„ÙŠ PostgreSQL Ø¨Ø±Ø§ÙŠ Ù†Ú¯Ø§Ù‡Ø¯Ø§Ø±ÙŠ Ø§ÙŠÙ† 
+ÙØ§ÙŠÙ„ Ø¨Ù‡ 6.4 Ù…Ú¯Ø§ Ø¨Ø§ÙŠØª Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ù†ÙŠØ§Ø² Ø®ÙˆØ§Ù‡Ø¯ Ø¯Ø§Ø´Øª.
+    32 bytes: Ø§Ù†Ø¯Ø§Ø²Ù‡ Ø³Ø±Ø§ÙŠÙ†Ø¯ Ù‡Ø± Ø®Ø· Ø¨Ù‡ Ø·ÙˆØ± ØªÙ‚Ø±ÙŠØ¨ÙŠ
+    24 bytes: ÙŠÙƒ Ø¹Ø¯Ø¯ ØµØ­ÙŠØ­ Ùˆ ÙŠÙƒ Ø±Ø´ØªÙ‡ 24 Ø¨Ø§ÙŠØªÙŠ
+   + 4 bytes: Ø§Ø´Ø§Ø±Ù‡ Ú¯Ø± Ø±ÙˆÙŠ ØµÙØ­Ù‡ Ø¨Ù‡ ÙŠÙƒ Ú†Ù†Ø¯ØªØ§ÙŠÙŠ
    ----------------------------------------
-    60 bytes در هر رديف
-
-اندازه صفحات داده در PostgreSQL برابر با 8 كيلو بايت است
-   8192 تعداد بايت‌ها در هر صفحه
-   -------------------   =  136 تعداد رديف‌ها در يك صفحه پايگاه داده
-     60  تعداد بايت‌هاي هر رديف
-
-   100000  تعداد رديفها
-   --------------------  = تعدادصفحات پايگاه داده
-      128 تعداد رديفها در هر صفحه
-
-735 تعداد صفحات * 8192 تعداد بايت‌هاي هر صفحه  =  6,021,120 مگا بايت
-سربار انديسها يا نمايه‌ها از اين مقدار كمتر است ولي چون شامل خود داده‌ها هم هست 
-ممکن است اندازه آنها هم بزرگ شود.
-NULLها به صورت bitmap ذخيره مي‌شوند و از اينرو فضاي بسيار كمي را اشغال مي‌كنند.
-4.7) چگونه مي‌توانم بفهمم كه چه كاربران،‌ پايگاه داده،‌ نمايه و جداولي در سيستم 
-تعريف شده است؟
-psql تعداد زيادي دستور دارد كه با \ شروع مي‌شوند و اين اطلاعات را در اختيار ما 
-قرار مي‌دهند. براي ديدن آنها دستور ?\  را اجرا كنيد.  همچنين جداول سيستمي كه نام 
-آنها با pg_ ‌شروع مي‌شود نيز اين اطلاعات را در خود دارند. اجراي برنامه psql با 
-گزينه l-  نيز باعث نشان دادن ليست تمام پايگاههاي داده مي‌شود.
-همچنين فايل pgsql/src/tutorial/syscat.source نيز فرمانهاي SELECT كه با استفاده 
-از آن مي‌توان اطلاعات پايگاه داده را استخراج كرد شرح داده است.
-4.8) چرا درخواستهاي من كند اجرا مي‌شوند يا چرا از نمايه ها استفاده نمي‌كنند؟
-به طور معمول براي درخواستها از نمايه‌ها استفاده نمي‌شود. تنها در صورتي از 
-نمايه‌ها استفاده مي‌شود كه اندازه جدول از يك اندازه حداقل بزرگتر باشد و درخواست 
-هم فقط قسمتي از رديف‌هاي جدول را انتخاب كرده باشد. دليل اين كار آن است كه 
-دسترسي‌هاي تصادفي به هاردديسك كه به خاطر نمايه‌ها ايجاد مي‌شود ممكن است از 
-خواندن مستقيم جدول يا خواندن ترتيبي ركوردها كندتر باشد.
-براي تعيين اينكه از نمايه استفاده شود يا خير، PostgreSQL بايد اطلاعات آماري را 
-در مورد يك جدول بداند. اين اطلاعات توسط دستور ANALYZE و VACUUM ANALYZE به دست 
-مي‌آيد. با استفاده از اين اطلاعات،‌ بهينه ساز از تعداد رديف‌هاي يك جدول اطلاع 
-پيدا مي‌كند و بهتر مي‌تواند تعيين كند كه آيا از نمايه استفاده شود يا خير. 
-اطلاعات آماري همچنين براي تعيين ترتيب الحاق و روشهاي الحاق به صورت بهينه نيز 
-كاربرد دارد. جمع آوري اطلاعات آماري بايد به صورت دوره‌اي همزمان با تغيير 
-داده‌هاي جدول انجام شود.
-نمايه‌ها به طور معمول همراه با دستور ORDER BY به كار برده نمي‌شوند. براي يك جدول 
-بزرگ يك پيمايش ترتيبي همراه با دستور مرتب سازي از به كار بردن نمايه‌ها سريعتر 
-خواهد بود.
-اما اگر همراه با ORDER BY‌ از LIMIT استفاده شود اغلب از نمايه‌ها استفاده مي‌شود 
-چون فقط قسمتي از جدول برگردانده مي‌شود. در حقيقت هر چند توابع ()MIN‌ و ()MAX از 
-نمايه‌ها استفاده نمي‌كنند ولي مي‌توانيم با استفاده از دستور زير با استفاده از 
-نمايه‌ها و دستور ORDER BY و LIMIT‌ ، آنها را به دست آوريم.
+    60 bytes Ø¯Ø± Ù‡Ø± Ø±Ø¯ÙŠÙ
+
+Ø§Ù†Ø¯Ø§Ø²Ù‡ ØµÙØ­Ø§Øª Ø¯Ø§Ø¯Ù‡ Ø¯Ø± PostgreSQL Ø¨Ø±Ø§Ø¨Ø± Ø¨Ø§ 8 ÙƒÙŠÙ„Ùˆ Ø¨Ø§ÙŠØª Ø§Ø³Øª
+   8192 ØªØ¹Ø¯Ø§Ø¯ Ø¨Ø§ÙŠØªâ€ŒÙ‡Ø§ Ø¯Ø± Ù‡Ø± ØµÙØ­Ù‡
+   -------------------   =  136 ØªØ¹Ø¯Ø§Ø¯ Ø±Ø¯ÙŠÙâ€ŒÙ‡Ø§ Ø¯Ø± ÙŠÙƒ ØµÙØ­Ù‡ Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡
+     60  ØªØ¹Ø¯Ø§Ø¯ Ø¨Ø§ÙŠØªâ€ŒÙ‡Ø§ÙŠ Ù‡Ø± Ø±Ø¯ÙŠÙ
+
+   100000  ØªØ¹Ø¯Ø§Ø¯ Ø±Ø¯ÙŠÙÙ‡Ø§
+   --------------------  = ØªØ¹Ø¯Ø§Ø¯ØµÙØ­Ø§Øª Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡
+      128 ØªØ¹Ø¯Ø§Ø¯ Ø±Ø¯ÙŠÙÙ‡Ø§ Ø¯Ø± Ù‡Ø± ØµÙØ­Ù‡
+
+735 ØªØ¹Ø¯Ø§Ø¯ ØµÙØ­Ø§Øª * 8192 ØªØ¹Ø¯Ø§Ø¯ Ø¨Ø§ÙŠØªâ€ŒÙ‡Ø§ÙŠ Ù‡Ø± ØµÙØ­Ù‡  =  6,021,120 Ù…Ú¯Ø§ Ø¨Ø§ÙŠØª
+Ø³Ø±Ø¨Ø§Ø± Ø§Ù†Ø¯ÙŠØ³Ù‡Ø§ ÙŠØ§ Ù†Ù…Ø§ÙŠÙ‡â€ŒÙ‡Ø§ Ø§Ø² Ø§ÙŠÙ† Ù…Ù‚Ø¯Ø§Ø± ÙƒÙ…ØªØ± 
+Ø§Ø³Øª ÙˆÙ„ÙŠ Ú†ÙˆÙ† Ø´Ø§Ù…Ù„ Ø®ÙˆØ¯ Ø¯Ø§Ø¯Ù‡â€ŒÙ‡Ø§ Ù‡Ù… Ù‡Ø³Øª Ù…Ù…Ú©Ù† Ø§Ø³Øª 
+Ø§Ù†Ø¯Ø§Ø²Ù‡ Ø¢Ù†Ù‡Ø§ Ù‡Ù… Ø¨Ø²Ø±Ú¯ Ø´ÙˆØ¯.
+NULLÙ‡Ø§ Ø¨Ù‡ ØµÙˆØ±Øª bitmap Ø°Ø®ÙŠØ±Ù‡ Ù…ÙŠâ€ŒØ´ÙˆÙ†Ø¯ Ùˆ Ø§Ø² Ø§ÙŠÙ†Ø±Ùˆ 
+ÙØ¶Ø§ÙŠ Ø¨Ø³ÙŠØ§Ø± ÙƒÙ…ÙŠ Ø±Ø§ Ø§Ø´ØºØ§Ù„ Ù…ÙŠâ€ŒÙƒÙ†Ù†Ø¯.
+4.7) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… Ø¨ÙÙ‡Ù…Ù… ÙƒÙ‡ Ú†Ù‡ ÙƒØ§Ø±Ø¨Ø±Ø§Ù†ØŒâ€Œ 
+Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ØŒâ€Œ Ù†Ù…Ø§ÙŠÙ‡ Ùˆ Ø¬Ø¯Ø§ÙˆÙ„ÙŠ Ø¯Ø± Ø³ÙŠØ³ØªÙ… ØªØ¹Ø±ÙŠÙ 
+Ø´Ø¯Ù‡ Ø§Ø³ØªØŸ
+psql ØªØ¹Ø¯Ø§Ø¯ Ø²ÙŠØ§Ø¯ÙŠ Ø¯Ø³ØªÙˆØ± Ø¯Ø§Ø±Ø¯ ÙƒÙ‡ Ø¨Ø§ \ Ø´Ø±ÙˆØ¹ 
+Ù…ÙŠâ€ŒØ´ÙˆÙ†Ø¯ Ùˆ Ø§ÙŠÙ† Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ø±Ø§ Ø¯Ø± Ø§Ø®ØªÙŠØ§Ø± Ù…Ø§ Ù‚Ø±Ø§Ø± 
+Ù…ÙŠâ€ŒØ¯Ù‡Ù†Ø¯. Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† Ø¢Ù†Ù‡Ø§ Ø¯Ø³ØªÙˆØ± ?\  Ø±Ø§ Ø§Ø¬Ø±Ø§ 
+ÙƒÙ†ÙŠØ¯.  Ù‡Ù…Ú†Ù†ÙŠÙ† Ø¬Ø¯Ø§ÙˆÙ„ Ø³ÙŠØ³ØªÙ…ÙŠ ÙƒÙ‡ Ø¨Ø§ Ù†Ø§Ù… Ø¢Ù†Ù‡Ø§ pg_ 
+â€ŒØ´Ø±ÙˆØ¹ Ù…ÙŠâ€ŒØ´ÙˆØ¯ Ù†ÙŠØ² Ø§ÙŠÙ† Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ø±Ø§ Ø¯Ø± Ø®ÙˆØ¯ 
+Ø¯Ø§Ø±Ù†Ø¯. Ø§Ø¬Ø±Ø§ÙŠ Ø¨Ø±Ù†Ø§Ù…Ù‡ psql Ø¨Ø§ Ú¯Ø²ÙŠÙ†Ù‡ l-  Ù†ÙŠØ² Ø¨Ø§Ø¹Ø« 
+Ù†Ø´Ø§Ù† Ø¯Ø§Ø¯Ù† Ù„ÙŠØ³Øª ØªÙ…Ø§Ù… Ù¾Ø§ÙŠÚ¯Ø§Ù‡Ù‡Ø§ÙŠ Ø¯Ø§Ø¯Ù‡ Ù…ÙŠâ€ŒØ´ÙˆØ¯.
+Ù‡Ù…Ú†Ù†ÙŠÙ† ÙØ§ÙŠÙ„ pgsql/src/tutorial/syscat.source Ù†ÙŠØ² ÙØ±Ù…Ø§Ù†Ù‡Ø§ÙŠ 
+SELECT ÙƒÙ‡ Ø¨Ø§ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² Ø¢Ù† Ù…ÙŠâ€ŒØªÙˆØ§Ù† Ø§Ø·Ù„Ø§Ø¹Ø§Øª 
+Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ø±Ø§ Ø§Ø³ØªØ®Ø±Ø§Ø¬ ÙƒØ±Ø¯ Ø´Ø±Ø­ Ø¯Ø§Ø¯Ù‡ Ø§Ø³Øª.
+4.8) Ú†Ø±Ø§ Ø¯Ø±Ø®ÙˆØ§Ø³ØªÙ‡Ø§ÙŠ Ù…Ù† ÙƒÙ†Ø¯ Ø§Ø¬Ø±Ø§ Ù…ÙŠâ€ŒØ´ÙˆÙ†Ø¯ ÙŠØ§ 
+Ú†Ø±Ø§ Ø§Ø² Ù†Ù…Ø§ÙŠÙ‡ Ù‡Ø§ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù†Ù…ÙŠâ€ŒÙƒÙ†Ù†Ø¯ØŸ
+Ø¨Ù‡ Ø·ÙˆØ± Ù…Ø¹Ù…ÙˆÙ„ Ø¨Ø±Ø§ÙŠ Ø¯Ø±Ø®ÙˆØ§Ø³ØªÙ‡Ø§ Ø§Ø² Ù†Ù…Ø§ÙŠÙ‡â€ŒÙ‡Ø§ 
+Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù†Ù…ÙŠâ€ŒØ´ÙˆØ¯. ØªÙ†Ù‡Ø§ Ø¯Ø± ØµÙˆØ±ØªÙŠ Ø§Ø² Ù†Ù…Ø§ÙŠÙ‡â€ŒÙ‡Ø§ 
+Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÙŠâ€ŒØ´ÙˆØ¯ ÙƒÙ‡ Ø§Ù†Ø¯Ø§Ø²Ù‡ Ø¬Ø¯ÙˆÙ„ Ø§Ø² ÙŠÙƒ Ø§Ù†Ø¯Ø§Ø²Ù‡ 
+Ø­Ø¯Ø§Ù‚Ù„ Ø¨Ø²Ø±Ú¯ØªØ± Ø¨Ø§Ø´Ø¯ Ùˆ Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ù‡Ù… ÙÙ‚Ø· Ù‚Ø³Ù…ØªÙŠ Ø§Ø² 
+Ø±Ø¯ÙŠÙâ€ŒÙ‡Ø§ÙŠ Ø¬Ø¯ÙˆÙ„ Ø±Ø§ Ø§Ù†ØªØ®Ø§Ø¨ ÙƒØ±Ø¯Ù‡ Ø¨Ø§Ø´Ø¯. Ø¯Ù„ÙŠÙ„ Ø§ÙŠÙ† 
+ÙƒØ§Ø± Ø¢Ù† Ø§Ø³Øª ÙƒÙ‡ Ø¯Ø³ØªØ±Ø³ÙŠâ€ŒÙ‡Ø§ÙŠ ØªØµØ§Ø¯ÙÙŠ Ø¨Ù‡ Ù‡Ø§Ø±Ø¯Ø¯ÙŠØ³Ùƒ 
+ÙƒÙ‡ Ø¨Ù‡ Ø®Ø§Ø·Ø± Ù†Ù…Ø§ÙŠÙ‡â€ŒÙ‡Ø§ Ø§ÙŠØ¬Ø§Ø¯ Ù…ÙŠâ€ŒØ´ÙˆØ¯ Ù…Ù…ÙƒÙ† Ø§Ø³Øª 
+Ø§Ø² Ø®ÙˆØ§Ù†Ø¯Ù† Ù…Ø³ØªÙ‚ÙŠÙ… Ø¬Ø¯ÙˆÙ„ ÙŠØ§ Ø®ÙˆØ§Ù†Ø¯Ù† ØªØ±ØªÙŠØ¨ÙŠ 
+Ø±ÙƒÙˆØ±Ø¯Ù‡Ø§ ÙƒÙ†Ø¯ØªØ± Ø¨Ø§Ø´Ø¯.
+Ø¨Ø±Ø§ÙŠ ØªØ¹ÙŠÙŠÙ† Ø§ÙŠÙ†ÙƒÙ‡ Ø§Ø² Ù†Ù…Ø§ÙŠÙ‡ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø´ÙˆØ¯ ÙŠØ§ 
+Ø®ÙŠØ±ØŒ PostgreSQL Ø¨Ø§ÙŠØ¯ Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ø¢Ù…Ø§Ø±ÙŠ Ø±Ø§ Ø¯Ø± Ù…ÙˆØ±Ø¯ ÙŠÙƒ 
+Ø¬Ø¯ÙˆÙ„ Ø¨Ø¯Ø§Ù†Ø¯. Ø§ÙŠÙ† Ø§Ø·Ù„Ø§Ø¹Ø§Øª ØªÙˆØ³Ø· Ø¯Ø³ØªÙˆØ± ANALYZE Ùˆ VACUUM 
+ANALYZE Ø¨Ù‡ Ø¯Ø³Øª Ù…ÙŠâ€ŒØ¢ÙŠØ¯. Ø¨Ø§ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² Ø§ÙŠÙ† 
+Ø§Ø·Ù„Ø§Ø¹Ø§ØªØŒâ€Œ Ø¨Ù‡ÙŠÙ†Ù‡ Ø³Ø§Ø² Ø§Ø² ØªØ¹Ø¯Ø§Ø¯ Ø±Ø¯ÙŠÙâ€ŒÙ‡Ø§ÙŠ ÙŠÙƒ 
+Ø¬Ø¯ÙˆÙ„ Ø§Ø·Ù„Ø§Ø¹ Ù¾ÙŠØ¯Ø§ Ù…ÙŠâ€ŒÙƒÙ†Ø¯ Ùˆ Ø¨Ù‡ØªØ± Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ø¯ 
+ØªØ¹ÙŠÙŠÙ† ÙƒÙ†Ø¯ ÙƒÙ‡ Ø¢ÙŠØ§ Ø§Ø² Ù†Ù…Ø§ÙŠÙ‡ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø´ÙˆØ¯ ÙŠØ§ Ø®ÙŠØ±. 
+Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ø¢Ù…Ø§Ø±ÙŠ Ù‡Ù…Ú†Ù†ÙŠÙ† Ø¨Ø±Ø§ÙŠ ØªØ¹ÙŠÙŠÙ† ØªØ±ØªÙŠØ¨ Ø§Ù„Ø­Ø§Ù‚ 
+Ùˆ Ø±ÙˆØ´Ù‡Ø§ÙŠ Ø§Ù„Ø­Ø§Ù‚ Ø¨Ù‡ ØµÙˆØ±Øª Ø¨Ù‡ÙŠÙ†Ù‡ Ù†ÙŠØ² ÙƒØ§Ø±Ø¨Ø± Ø¯Ø§Ø±Ø¯. 
+Ø¬Ù…Ø¹ Ø¢ÙˆØ±ÙŠ Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ø¢Ù…Ø§Ø±ÙŠ Ø¨Ø§ÙŠØ¯ Ø¨Ù‡ ØµÙˆØ±Øª Ø¯ÙˆØ±Ù‡â€ŒØ§ÙŠ 
+Ù‡Ù…Ø²Ù…Ø§Ù† Ø¨Ø§ ØªØºÙŠÙŠØ± Ø¯Ø§Ø¯Ù‡â€ŒÙ‡Ø§ÙŠ Ø¬Ø¯ÙˆÙ„ Ø§Ù†Ø¬Ø§Ù… Ø´ÙˆØ¯.
+Ù†Ù…Ø§ÙŠÙ‡â€ŒÙ‡Ø§ Ø¨Ù‡ Ø·ÙˆØ± Ù…Ø¹Ù…ÙˆÙ„ Ù‡Ù…Ø±Ø§Ù‡ Ø¨Ø§ Ø¯Ø³ØªÙˆØ± ORDER BY 
+Ø¨Ù‡ ÙƒØ§Ø± Ø¨Ø±Ø¯Ù‡ Ù†Ù…ÙŠâ€ŒØ´ÙˆÙ†Ø¯. Ø¨Ø±Ø§ÙŠ ÙŠÙƒ Ø¬Ø¯ÙˆÙ„ Ø¨Ø²Ø±Ú¯ ÙŠÙƒ 
+Ù¾ÙŠÙ…Ø§ÙŠØ´ ØªØ±ØªÙŠØ¨ÙŠ Ù‡Ù…Ø±Ø§Ù‡ Ø¨Ø§ Ø¯Ø³ØªÙˆØ± Ù…Ø±ØªØ¨ Ø³Ø§Ø²ÙŠ Ø§Ø² Ø¨Ù‡ 
+ÙƒØ§Ø± Ø¨Ø±Ø¯Ù† Ù†Ù…Ø§ÙŠÙ‡â€ŒÙ‡Ø§ Ø³Ø±ÙŠØ¹ØªØ± Ø®ÙˆØ§Ù‡Ø¯ Ø¨ÙˆØ¯.
+Ø§Ù…Ø§ Ø§Ú¯Ø± Ù‡Ù…Ø±Ø§Ù‡ Ø¨Ø§ ORDER BYâ€Œ Ø§Ø² LIMIT Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø´ÙˆØ¯ 
+Ø§ØºÙ„Ø¨ Ø§Ø² Ù†Ù…Ø§ÙŠÙ‡â€ŒÙ‡Ø§ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÙŠâ€ŒØ´ÙˆØ¯ Ú†ÙˆÙ† ÙÙ‚Ø· 
+Ù‚Ø³Ù…ØªÙŠ Ø§Ø² Ø¬Ø¯ÙˆÙ„ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÙŠâ€ŒØ´ÙˆØ¯. Ø¯Ø± Ø­Ù‚ÙŠÙ‚Øª Ù‡Ø± 
+Ú†Ù†Ø¯ ØªÙˆØ§Ø¨Ø¹ ()MINâ€Œ Ùˆ ()MAX Ø§Ø² Ù†Ù…Ø§ÙŠÙ‡â€ŒÙ‡Ø§ Ø§Ø³ØªÙØ§Ø¯Ù‡ 
+Ù†Ù…ÙŠâ€ŒÙƒÙ†Ù†Ø¯ ÙˆÙ„ÙŠ Ù…ÙŠâ€ŒØªÙˆØ§Ù†ÙŠÙ… Ø¨Ø§ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² Ø¯Ø³ØªÙˆØ± 
+Ø²ÙŠØ± Ø¨Ø§ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² Ù†Ù…Ø§ÙŠÙ‡â€ŒÙ‡Ø§ Ùˆ Ø¯Ø³ØªÙˆØ± ORDER BY Ùˆ 
+LIMITâ€Œ Ø¢Ù†Ù‡Ø§ Ø±Ø§ Ø¨Ù‡ Ø¯Ø³Øª Ø¢ÙˆØ±ÙŠÙ….
     SELECT col
     FROM tab
     ORDER BY col [ DESC ]
     LIMIT 1;
-اگر شما فكر مي‌كنيد كه بهينه ساز سيستم در انتخاب پيمايش ترتيبي اشتباه كرده است 
-با دستور 'SET enable_seqscan TO 'off'  مي‌توانيد ببينيد آيا استفاده از نمايه‌ها 
-باعث افزايش سرعت درخواست‌ها خواهد شد يا خير.
-استفاده از نمايه‌ها هنگامي كه از علائم ويژه نظير LIKE و ~ استفاده مي‌كنيد فقط در 
-بعضي شرايط خاص كه در اينجا ذكر شده است ممكن است:
-  ابتداي رشته جستجو بايد به طور صريح مشخص باشد براي مثال: 
-- دستورات LIKE نبايد با علامت % شروع شوند
-- الگوهاي منظمي كه با ~ مي‌آيد حتماً بايد با علامت ^ شروع شود
-  رشته جستجو نبايد با يك مجموعه از كاراكتر‌ها  مثل [a-e] شروع شود 
-  جستجوهاي غيرحساس به متن مثل  ILIKE‌ و *~ از نمايه‌ها استفاده نمي‌كنند. در عوض 
-  از توابع نمايه‌اي كه در قسمت 4.12 توضيح داده شد استفاده مي‌كنند. 
-  مقدار پيش فرض locale‌ بايد در initdb استفاده شود. 
-4.9) چگونه مي‌توانم نحوه بررسي درخواست را توسط بهينه‌ساز درخواستها مشاهده كنم؟
-راهنماي دستور EXPLAIN را نگاه كنيد.
-4.10) نمايه R-tree‌ چيست؟
-از نمايه R-Tree  براي انديس كردن داده‌هاي فاصله‌اي استفاده مي‌شود. يك نمايه hash 
-نمي‌تواند جستجوهاي محدوده‌اي را انجام دهد. نمايه "B-tree" نيز براي انجام جستجوي 
-محدوده‌اي در يك جهت قابل استفاده است. اما R-Tree مي‌تواند داده‌هاي چند بعدي را 
-نيز پشتيباني كند. براي مثال اگر از نمايه R-tree‌ براي گونه Point استفاده شود 
-سرعت درخواست‌هايي نظير "select all points within a bounding rectangle" به مراتب 
-افزايش مي‌يابد.
-مقاله‌اي كه طراحي R-tree را توضيح داده است 
+Ø§Ú¯Ø± Ø´Ù…Ø§ ÙÙƒØ± Ù…ÙŠâ€ŒÙƒÙ†ÙŠØ¯ ÙƒÙ‡ Ø¨Ù‡ÙŠÙ†Ù‡ Ø³Ø§Ø² Ø³ÙŠØ³ØªÙ… Ø¯Ø± 
+Ø§Ù†ØªØ®Ø§Ø¨ Ù¾ÙŠÙ…Ø§ÙŠØ´ ØªØ±ØªÙŠØ¨ÙŠ Ø§Ø´ØªØ¨Ø§Ù‡ ÙƒØ±Ø¯Ù‡ Ø§Ø³Øª Ø¨Ø§ 
+Ø¯Ø³ØªÙˆØ± 'SET enable_seqscan TO 'off'  Ù…ÙŠâ€ŒØªÙˆØ§Ù†ÙŠØ¯ Ø¨Ø¨ÙŠÙ†ÙŠØ¯ Ø¢ÙŠØ§ 
+Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² Ù†Ù…Ø§ÙŠÙ‡â€ŒÙ‡Ø§ Ø¨Ø§Ø¹Ø« Ø§ÙØ²Ø§ÙŠØ´ Ø³Ø±Ø¹Øª 
+Ø¯Ø±Ø®ÙˆØ§Ø³Øªâ€ŒÙ‡Ø§ Ø®ÙˆØ§Ù‡Ø¯ Ø´Ø¯.
+Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² Ù†Ù…Ø§ÙŠÙ‡â€ŒÙ‡Ø§ Ù‡Ù†Ú¯Ø§Ù…ÙŠ ÙƒÙ‡ Ø§Ø² Ø¹Ù„Ø§Ø¦Ù… ÙˆÙŠÚ˜Ù‡ 
+Ù†Ø¸ÙŠØ± LIKE Ùˆ ~ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÙŠâ€ŒÙƒÙ†ÙŠØ¯ ÙÙ‚Ø· Ø¯Ø± Ø¨Ø¹Ø¶ÙŠ 
+Ø´Ø±Ø§ÙŠØ· Ø®Ø§ØµÙŠ ÙƒÙ‡ Ø¯Ø± Ø§ÙŠÙ†Ø¬Ø§ Ø°ÙƒØ± Ø´Ø¯Ù‡ Ø§Ø³Øª Ù…Ù…ÙƒÙ† Ø§Ø³Øª:
+  Ø§Ø¨ØªØ¯Ø§ÙŠ Ø±Ø´ØªÙ‡ Ø¬Ø³ØªØ¬Ùˆ Ø¨Ø§ÙŠØ¯ Ø¨Ù‡ Ø·ÙˆØ± ØµØ±ÙŠØ­ Ù…Ø´Ø®Øµ 
+  Ø¨Ø§Ø´Ø¯ Ø¨Ø±Ø§ÙŠ Ù…Ø«Ø§Ù„: 
+  Ø¯Ø³ØªÙˆØ±Ø§Øª LIKE Ù†Ø¨Ø§ÙŠØ¯ Ø¨Ø§ Ø¹Ù„Ø§Ù…Øª % Ø´Ø±ÙˆØ¹ Ø´ÙˆÙ†Ø¯ 
+  Ø§Ù„Ú¯ÙˆÙ‡Ø§ÙŠ Ù…Ù†Ø¸Ù…ÙŠ ÙƒÙ‡ Ø¨Ø§ ~ Ù…ÙŠâ€ŒØ§ÙŠØ¯ Ø­ØªÙ…Ø§Ù‹ Ø¨Ø§ÙŠØ¯ Ø¨Ø§ 
+  Ø¹Ù„Ø§Ù…Øª ^ Ø´Ø±ÙˆØ¹ Ø´ÙˆØ¯ 
+  Ø±Ø´ØªÙ‡ Ø¬Ø³ØªØ¬Ùˆ Ù†Ø¨Ø§ÙŠØ¯ Ø¨Ø§ ÙŠÙƒ Ù…Ø¬Ù…ÙˆØ¹Ù‡ Ø§Ø² 
+  ÙƒØ§Ø±Ø§ÙƒØªØ±â€ŒÙ‡Ø§  Ù…Ø«Ù„ [a-e] Ø´Ø±ÙˆØ¹ Ø´ÙˆØ¯ 
+  Ø¬Ø³ØªØ¬ÙˆÙ‡Ø§ÙŠ ØºÙŠØ±Ø­Ø³Ø§Ø³ Ø¨Ù‡ Ù…ØªÙ† Ù…Ø«Ù„  ILIKEâ€Œ Ùˆ *~ Ø§Ø² 
+  Ù†Ù…Ø§ÙŠÙ‡â€ŒÙ‡Ø§ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù†Ù…ÙŠâ€ŒÙƒÙ†Ù†Ø¯. Ø¯Ø± Ø¹ÙˆØ¶ Ø§Ø² 
+  ØªÙˆØ§Ø¨Ø¹ Ù†Ù…Ø§ÙŠÙ‡â€ŒØ§ÙŠ ÙƒÙ‡ Ø¯Ø± Ù‚Ø³Ù…Øª 4.12 ØªÙˆØ¶ÙŠØ­ Ø¯Ø§Ø¯Ù‡ Ø´Ø¯ 
+  Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÙŠâ€ŒÙƒÙ†Ù†Ø¯. 
+  Ù…Ù‚Ø¯Ø§Ø± Ù¾ÙŠØ´ ÙØ±Ø¶ localeâ€Œ Ø¨Ø§ÙŠØ¯ Ø¯Ø± initdb Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø´ÙˆØ¯. 
+
+4.9) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… Ù†Ø­ÙˆÙ‡ Ø¨Ø±Ø±Ø³ÙŠ Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ø±Ø§ 
+ØªÙˆØ³Ø· Ø¨Ù‡ÙŠÙ†Ù‡â€ŒØ³Ø§Ø² Ø¯Ø±Ø®ÙˆØ§Ø³ØªÙ‡Ø§ Ù…Ø´Ø§Ù‡Ø¯Ù‡ ÙƒÙ†Ù…ØŸ
+Ø±Ø§Ù‡Ù†Ù…Ø§ÙŠ Ø¯Ø³ØªÙˆØ± EXPLAIN Ø±Ø§ Ù†Ú¯Ø§Ù‡ ÙƒÙ†ÙŠØ¯.
+4.10) Ù†Ù…Ø§ÙŠÙ‡ R-treeâ€Œ Ú†ÙŠØ³ØªØŸ
+Ø§Ø² Ù†Ù…Ø§ÙŠÙ‡ R-Tree  Ø¨Ø±Ø§ÙŠ Ø§Ù†Ø¯ÙŠØ³ ÙƒØ±Ø¯Ù† Ø¯Ø§Ø¯Ù‡â€ŒÙ‡Ø§ÙŠ 
+ÙØ§ØµÙ„Ù‡â€ŒØ§ÙŠ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÙŠâ€ŒØ´ÙˆØ¯. ÙŠÙƒ Ù†Ù…Ø§ÙŠÙ‡ hash 
+Ù†Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù†Ø¯ Ø¬Ø³ØªØ¬ÙˆÙ‡Ø§ÙŠ Ù…Ø­Ø¯ÙˆØ¯Ù‡â€ŒØ§ÙŠ Ø±Ø§ Ø§Ù†Ø¬Ø§Ù… 
+Ø¯Ù‡Ø¯. Ù†Ù…Ø§ÙŠÙ‡ "B-tree" Ù†ÙŠØ² Ø¨Ø±Ø§ÙŠ Ø§Ù†Ø¬Ø§Ù… Ø¬Ø³ØªØ¬ÙˆÙŠ 
+Ù…Ø­Ø¯ÙˆØ¯Ù‡â€ŒØ§ÙŠ Ø¯Ø± ÙŠÙƒ Ø¬Ù‡Øª Ù‚Ø§Ø¨Ù„ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø³Øª. Ø§Ù…Ø§ 
+R-Tree Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ø¯ Ø¯Ø§Ø¯Ù‡â€ŒÙ‡Ø§ÙŠ Ú†Ù†Ø¯ Ø¨Ø¹Ø¯ÙŠ Ø±Ø§ Ù†ÙŠØ² 
+Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ ÙƒÙ†Ø¯. Ø¨Ø±Ø§ÙŠ Ù…Ø«Ø§Ù„ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ú¯Ø± Ø§Ø² Ù†Ù…Ø§ÙŠÙ‡ 
+R-treeâ€Œ Ø¨Ø±Ø§ÙŠ Ú¯ÙˆÙ†Ù‡ Point Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø´ÙˆØ¯ Ø³Ø±Ø¹Øª 
+Ø¯Ø±Ø®ÙˆØ§Ø³Øªâ€ŒÙ‡Ø§ÙŠÙŠ Ù†Ø¸ÙŠØ± "select all points within a bounding 
+rectangle" Ø¨Ù‡ Ù…Ø±Ø§ØªØ¨ Ø§ÙØ²Ø§ÙŠØ´ Ù…ÙŠâ€ŒÙŠØ§Ø¨Ø¯.
+Ù…Ù‚Ø§Ù„Ù‡â€ŒØ§ÙŠ ÙƒÙ‡ Ø·Ø±Ø§Ø­ÙŠ R-tree Ø±Ø§ ØªÙˆØ¶ÙŠØ­ Ø¯Ø§Ø¯Ù‡ Ø§Ø³Øª 
 Guttman, A. "R-trees: A Dynamic Index Structure for Spatial Searching." 
 Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57.
-R-tree‌ مي‌تواند چندضلعيها و چند وجهي را پشتيباني كند. در تئوري، R-tree مي‌تواند 
-تعداد  بعدهاي  بالاتري را نيز  پشتيباني كند. در  عمل  توسعه R-tree‌ نياز به كار 
-بيشتري دارد.
-4.11) بهينه ساز تكويني درخواست چيست؟ (Genetic Query Optimizer)
-استفاده از GEQO سرعت بهينه سازي درخواست را هنگاميكه تعداد زيادي جدول را با 
-استفاده از الگوريتم ژنتيك الحاق مي‌كنيم افزايش مي‌دهد.
-4.12) چگونه از عبارات منظم براي جستجو استفاده كنم؟ چگونه جستجويي انجام دهم كه 
-حساس به متن نباشد؟ چگونه براي يك جستجوي غير حساس به متن از نمايه استفاده كنم؟
-براي جستجوي عبارت منظم از عملگر ~‌ استفاده مي‌كنيم. براي جستجوي غير حساس به متن 
-از عملگر *~ و يا ILIKE‌ استفاده مي‌كنيم.
-روش ديگر انجام جستجوي غير حساس به متن در زير نشان داده شده است.
+R-treeâ€Œ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ø¯ Ú†Ù†Ø¯Ø¶Ù„Ø¹ÙŠÙ‡Ø§ Ùˆ Ú†Ù†Ø¯ ÙˆØ¬Ù‡ÙŠ Ø±Ø§ 
+Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ ÙƒÙ†Ø¯. Ø¯Ø± ØªØ¦ÙˆØ±ÙŠ R-tree Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ø¯ ØªØ¹Ø¯Ø§Ø¯ 
+Ø¨Ø¹Ø¯Ù‡Ø§ÙŠ Ø¨Ø§Ù„Ø§ØªØ± Ø±ÙŠ Ù†ÙŠØ² Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ ÙƒÙ†Ø¯. Ø¯Ø± Ø¹Ù…Ù„ 
+ØªÙˆØ³Ø¹Ù‡ R-treeâ€Œ Ù†ÙŠØ§Ø² Ø¨Ù‡ ÙƒØ§Ø± Ø¨ÙŠØ´ØªØ±ÙŠ Ø¯Ø§Ø±Ø¯.
+4.11) Ø¨Ù‡ÙŠÙ†Ù‡ Ø³Ø§Ø² ØªÙƒÙˆÙŠÙ†ÙŠ Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ú†ÙŠØ³ØªØŸ (Genetic Query 
+Optimizer)
+Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² GEQO Ø³Ø±Ø¹Øª Ø¨Ù‡ÙŠÙ†Ù‡ Ø³Ø§Ø²ÙŠ Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ø±Ø§ 
+Ù‡Ù†Ú¯Ø§Ù…ÙŠÙƒÙ‡ ØªØ¹Ø¯Ø§Ø¯ Ø²ÙŠØ§Ø¯ÙŠ Ø¬Ø¯ÙˆÙ„ Ø±Ø§ Ø¨Ø§ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² 
+Ø§Ù„Ú¯ÙˆØ±ÙŠØªÙ… Ú˜Ù†ØªÙŠÙƒ Ø§Ù„Ø­Ø§Ù‚ Ù…ÙŠâ€ŒÙƒÙ†ÙŠÙ… Ø§ÙØ²Ø§ÙŠØ´ 
+Ù…ÙŠâ€ŒØ¯Ù‡Ø¯.
+4.12) Ú†Ú¯ÙˆÙ†Ù‡ Ø§Ø² Ø¹Ø¨Ø§Ø±Ø§Øª Ù…Ù†Ø¸Ù… Ø¨Ø±Ø§ÙŠ Ø¬Ø³ØªØ¬Ùˆ Ø§Ø³ØªÙØ§Ø¯Ù‡ 
+ÙƒÙ†Ù…ØŸ Ú†Ú¯ÙˆÙ†Ù‡ Ø¬Ø³ØªØ¬ÙˆÙŠÙŠ Ø§Ù†Ø¬Ø§Ù… Ø¯Ù‡Ù… ÙƒÙ‡ Ø­Ø³Ø§Ø³ Ø¨Ù‡ Ù…ØªÙ† 
+Ù†Ø¨Ø§Ø´Ø¯ØŸ Ú†Ú¯ÙˆÙ†Ù‡ Ø¨Ø±Ø§ÙŠ ÙŠÙƒ Ø¬Ø³ØªØ¬ÙˆÙŠ ØºÙŠØ± Ø­Ø³Ø§Ø³ Ø¨Ù‡ Ù…ØªÙ† 
+Ø§Ø² Ù†Ù…Ø§ÙŠÙ‡ Ø§Ø³ØªÙØ§Ø¯Ù‡ ÙƒÙ†Ù…ØŸ
+Ø¨Ø±Ø§ÙŠ Ø¬Ø³ØªØ¬ÙˆÙŠ Ø¹Ø¨Ø§Ø±Øª Ù…Ù†Ø¸Ù… Ø§Ø² Ø¹Ù…Ù„Ú¯Ø± ~â€Œ Ø§Ø³ØªÙØ§Ø¯Ù‡ 
+Ù…ÙŠâ€ŒÙƒÙ†ÙŠÙ…. Ø¨Ø±Ø§ÙŠ Ø¬Ø³ØªØ¬ÙˆÙŠ ØºÙŠØ± Ø­Ø³Ø§Ø³ Ø¨Ù‡ Ù…ØªÙ† Ø§Ø² 
+Ø¹Ù…Ù„Ú¯Ø± *~ Ùˆ ÙŠØ§ ILIKEâ€Œ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÙŠâ€ŒÙƒÙ†ÙŠÙ….
+Ø±ÙˆØ´ Ø¯ÙŠÚ¯Ø± Ø§Ù†Ø¬Ø§Ù… Ø¬Ø³ØªØ¬ÙˆÙŠ ØºÙŠØ± Ø­Ø³Ø§Ø³ Ø¨Ù‡ Ù…ØªÙ† Ø¯Ø± Ø²ÙŠØ± 
+Ù†Ø´Ø§Ù† Ø¯Ø§Ø¯Ù‡ Ø´Ø¯Ù‡ Ø§Ø³Øª.
     SELECT *
     FROM tab
     WHERE lower(col) = 'abc';
-اين از نمايه‌هاي استاندارد استفاده نمي‌كند. ولي شما مي توانيد با دستور زير يك 
-نمايه ايجاد كنيد و از آن استفاده كنيد.
+Ø§ÙŠÙ† Ø§Ø² Ù†Ù…Ø§ÙŠÙ‡â€ŒÙ‡Ø§ÙŠ Ø§Ø³ØªØ§Ù†Ø¯Ø§Ø±Ø¯ Ø§Ø³ØªÙØ§Ø¯Ù‡ 
+Ù†Ù…ÙŠâ€ŒÙƒÙ†Ø¯. ÙˆÙ„ÙŠ Ø´Ù…Ø§ Ù…ÙŠ ØªÙˆØ§Ù†ÙŠØ¯ Ø¨Ø§ Ø¯Ø³ØªÙˆØ± Ø²ÙŠØ± ÙŠÙƒ 
+Ù†Ù…Ø§ÙŠÙ‡ Ø§ÙŠØ¬Ø§Ø¯ ÙƒÙ†ÙŠØ¯ Ùˆ Ø§Ø² Ø¢Ù† Ø§Ø³ØªÙØ§Ø¯Ù‡ ÙƒÙ†ÙŠØ¯.
     CREATE INDEX tabindex ON tab (lower(col));
-4.13) چگونه مي‌توانم در يك درخواست تشخيص دهم كه يك فيلد NULL‌ است؟
-با استفاده از توابع IS NULL و IS NOT NULL مي‌توانيم NULL بودن يك فيلد را تست 
-كنيم.
-4.14) تفاوت بين گونه‌هاي مختلف character چيست؟
+4.13) IÚ†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… Ø¯Ø± ÙŠÙƒ Ø¯Ø±Ø®ÙˆØ§Ø³Øª ØªØ´Ø®ÙŠØµ Ø¯Ù‡Ù… 
+ÙƒÙ‡ ÙŠÙƒ ÙÙŠÙ„Ø¯ NULLâ€Œ Ø§Ø³ØªØŸ
+Ø¨Ø§ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² ØªÙˆØ§Ø¨Ø¹ IS NULL Ùˆ IS NOT NULL Ù…ÙŠâ€ŒØªÙˆØ§Ù†ÙŠÙ… 
+NULL Ø¨ÙˆØ¯Ù† ÙŠÙƒ ÙÙŠÙ„Ø¯ Ø±Ø§ ØªØ³Øª ÙƒÙ†ÙŠÙ….
+4.14) ØªÙØ§ÙˆØª Ø¨ÙŠÙ† Ú¯ÙˆÙ†Ù‡â€ŒÙ‡Ø§ÙŠ Ù…Ø®ØªÙ„Ù character Ú†ÙŠØ³ØªØŸ
 Type            Internal Name   Notes
 --------------------------------------------------
-VARCHAR(n)      varchar      اندازه، حداكثر طول را نشان مي دهد بدون اضافه شدن كاراكتر اضافه
-CHAR(n)            bpchar       كاراكترهاي بلانك براي پر شدن طول مشخص شده استفاده مي‌شود
-TEXT                text            حداكثر طول را مشخص نمي‌كند
-BYTEA               bytea         آرايه‌اي از بايت با طول متغير
-"char"               char           يك كاراكتر
-نام داخلي گونه‌ها را در system catalogue ‌و بعضي از پيغامهاي خطا مي‌توان ديد.
-چهار گونه اول همگي از نوع varlena هستند (4 بايت اول روي ديسك طول را مشخص مي‌كند 
-كه به دنبال آن داده‌ها قرار دارند.)‌بنابراين فضاي واقعي استفاده شده روي ديسك از 
-اندازه تعريف شده بيشتر است. اما اين گونه‌ها را مي‌توان فشرده كرد كه اينكار باعث 
-مي‌شود فضاي كمتري روي ديسك اشغال كنند.
-براي ذخيره رشته‌هاي با طول متغير(VARCHAR(n‌ بهترين انتخاب است. در اين گونه 
-حداكثر طول رشته محدود است بر خلاف text كه هيچ محدوديتي روي حداكثر اندازه رشته 
-نمي‌گذارد.(در اين گونه حداكثر طول يك رشته يك گيگا بايت خواهد بود)
-گونه (CHAR(n  براي ذخيره داده‌هاي با طول يكسان است.يك گونه‌ي (CHAR(n با 
-كاراكترهاي بلانك (خالي) پر مي‌شود تا به طول مشخص شده برسد در حاليكه گونه VARCHAR 
-كاراكترها را به همان صورت كه هستند ذخيره مي‌كند. گونه BYTEA براي ذخيره داده‌هاي 
-باينري است به خصوص داده‌هاي باينري كه شامل بايت‌هاي NULL هستند. از نظر كارايي 
-تمام اين گونه‌ها يكسان هستند.
-4.15.1) چگونه مي‌توانم يك فيلد سريال يا افزايشي ايجاد كنم؟
-PostgreSQL از داده‌هاي سريال پشتيباني مي‌كند. براي ايجاد يك فيلد سريال (براي 
-داشتن يك فيلد منحصر به فرد براي هر رديف )به روش زير عمل كنيد:
+VARCHAR(n)      varchar      Ø§Ù†Ø¯Ø§Ø²Ù‡ØŒ Ø­Ø¯Ø§ÙƒØ«Ø± Ø·ÙˆÙ„ Ø±Ø§ Ù†Ø´Ø§Ù† Ù…ÙŠ Ø¯Ù‡Ø¯ Ø¨Ø¯ÙˆÙ† Ø§Ø¶Ø§ÙÙ‡ Ø´Ø¯Ù† ÙƒØ§Ø±Ø§ÙƒØªØ± Ø§Ø¶Ø§ÙÙ‡
+CHAR(n)            bpchar       ÙƒØ§Ø±Ø§ÙƒØªØ±Ù‡Ø§ÙŠ Ø¨Ù„Ø§Ù†Ùƒ Ø¨Ø±Ø§ÙŠ Ù¾Ø± Ø´Ø¯Ù† Ø·ÙˆÙ„ Ù…Ø´Ø®Øµ Ø´Ø¯Ù‡ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÙŠâ€ŒØ´ÙˆØ¯
+TEXT                text            Ø­Ø¯Ø§ÙƒØ«Ø± Ø·ÙˆÙ„ Ø±Ø§ Ù…Ø´Ø®Øµ Ù†Ù…ÙŠâ€ŒÙƒÙ†Ø¯
+BYTEA               bytea         Ø¢Ø±Ø§ÙŠÙ‡â€ŒØ§ÙŠ Ø§Ø² Ø¨Ø§ÙŠØª Ø¨Ø§ Ø·ÙˆÙ„ Ù…ØªØºÙŠØ±
+"char"               char           ÙŠÙƒ ÙƒØ§Ø±Ø§ÙƒØªØ±
+Ù†Ø§Ù… Ø¯Ø§Ø®Ù„ÙŠ Ú¯ÙˆÙ†Ù‡â€ŒÙ‡Ø§ Ø±Ø§ Ø¯Ø± system catalogue â€ŒÙˆ Ø¨Ø¹Ø¶ÙŠ Ø§Ø² 
+Ù¾ÙŠØºØ§Ù…Ù‡Ø§ÙŠ Ø®Ø·Ø§ Ù…ÙŠâ€ŒØªÙˆØ§Ù† Ø¯ÙŠØ¯.
+Ú†Ù‡Ø§Ø± Ú¯ÙˆÙ†Ù‡ Ø§ÙˆÙ„ Ù‡Ù…Ú¯ÙŠ Ø§Ø² Ù†ÙˆØ¹ varlena Ù‡Ø³ØªÙ†Ø¯ (4 Ø¨Ø§ÙŠØª 
+Ø§ÙˆÙ„ Ø±ÙˆÙŠ Ø¯ÙŠØ³Ùƒ Ø·ÙˆÙ„ Ø±Ø§ Ù…Ø´Ø®Øµ Ù…ÙŠâ€ŒÙƒÙ†Ø¯ ÙƒÙ‡ Ø¨Ù‡ Ø¯Ù†Ø¨Ø§Ù„ 
+Ø¢Ù† Ø¯Ø§Ø¯Ù‡â€ŒÙ‡Ø§ Ù‚Ø±Ø§Ø± Ø¯Ø§Ø±Ù†Ø¯.)â€ŒØ¨Ù†Ø§Ø¨Ø±Ø§ÙŠÙ† ÙØ¶Ø§ÙŠ 
+ÙˆØ§Ù‚Ø¹ÙŠ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø´Ø¯Ù‡ Ø±ÙˆÙŠ Ø¯ÙŠØ³Ùƒ Ø§Ø² Ø§Ù†Ø¯Ø§Ø²Ù‡ ØªØ¹Ø±ÙŠÙ 
+Ø´Ø¯Ù‡ Ø¨ÙŠØ´ØªØ± Ø§Ø³Øª. Ø§Ù…Ø§ Ø§ÙŠÙ† Ú¯ÙˆÙ†Ù‡â€ŒÙ‡Ø§ Ø±Ø§ Ù…ÙŠâ€ŒØªÙˆØ§Ù† 
+ÙØ´Ø±Ø¯Ù‡ ÙƒØ±Ø¯ ÙƒÙ‡ Ø§ÙŠÙ†ÙƒØ§Ø± Ø¨Ø§Ø¹Ø« Ù…ÙŠâ€ŒØ´ÙˆØ¯ ÙØ¶Ø§ÙŠ ÙƒÙ…ØªØ±ÙŠ 
+Ø±ÙˆÙŠ Ø¯ÙŠØ³Ùƒ Ø§Ø´ØºØ§Ù„ ÙƒÙ†Ù†Ø¯.
+Ø¨Ø±Ø§ÙŠ Ø°Ø®ÙŠØ±Ù‡ Ø±Ø´ØªÙ‡â€ŒÙ‡Ø§ÙŠ Ø¨Ø§ Ø·ÙˆÙ„ Ù…ØªØºÙŠØ±(VARCHAR(nâ€Œ 
+Ø¨Ù‡ØªØ±ÙŠÙ† Ø§Ù†ØªØ®Ø§Ø¨ Ø§Ø³Øª. Ø¯Ø± Ø§ÙŠÙ† Ú¯ÙˆÙ†Ù‡ Ø­Ø¯Ø§ÙƒØ«Ø± Ø·ÙˆÙ„ 
+Ø±Ø´ØªÙ‡ Ù…Ø­Ø¯ÙˆØ¯ Ø§Ø³Øª Ø¨Ø± Ø®Ù„Ø§Ù text ÙƒÙ‡ Ù‡ÙŠÚ† Ù…Ø­Ø¯ÙˆØ¯ÙŠØªÙŠ 
+Ø±ÙˆÙŠ Ø­Ø¯Ø§ÙƒØ«Ø± Ø§Ù†Ø¯Ø§Ø²Ù‡ Ø±Ø´ØªÙ‡ Ù†Ù…ÙŠâ€ŒÚ¯Ø°Ø§Ø±Ø¯.(Ø¯Ø± Ø§ÙŠÙ† 
+Ú¯ÙˆÙ†Ù‡ Ø­Ø¯Ø§ÙƒØ«Ø± Ø·ÙˆÙ„ ÙŠÙƒ Ø±Ø´ØªÙ‡ ÙŠÙƒ Ú¯ÙŠÚ¯Ø§ Ø¨Ø§ÙŠØª Ø®ÙˆØ§Ù‡Ø¯ 
+Ø¨ÙˆØ¯)
+Ú¯ÙˆÙ†Ù‡ (CHAR(n  Ø¨Ø±Ø§ÙŠ Ø°Ø®ÙŠØ±Ù‡ Ø¯Ø§Ø¯Ù‡â€ŒÙ‡Ø§ÙŠ Ø¨Ø§ Ø·ÙˆÙ„ ÙŠÙƒØ³Ø§Ù† 
+Ø§Ø³Øª.ÙŠÙƒ Ú¯ÙˆÙ†Ù‡â€ŒÙŠ (CHAR(n Ø¨Ø§ ÙƒØ§Ø±Ø§ÙƒØªØ±Ù‡Ø§ÙŠ Ø¨Ù„Ø§Ù†Ùƒ 
+(Ø®Ø§Ù„ÙŠ) Ù¾Ø± Ù…ÙŠâ€ŒØ´ÙˆØ¯ ØªØ§ Ø¨Ù‡ Ø·ÙˆÙ„ Ù…Ø´Ø®Øµ Ø´Ø¯Ù‡ Ø¨Ø±Ø³Ø¯ Ø¯Ø± 
+Ø­Ø§Ù„ÙŠÙƒÙ‡ Ú¯ÙˆÙ†Ù‡ VARCHAR ÙƒØ§Ø±Ø§ÙƒØªØ±Ù‡Ø§ Ø±Ø§ Ø¨Ù‡ Ù‡Ù…Ø§Ù† ØµÙˆØ±Øª 
+ÙƒÙ‡ Ù‡Ø³ØªÙ†Ø¯ Ø°Ø®ÙŠØ±Ù‡ Ù…ÙŠâ€ŒÙƒÙ†Ø¯. Ú¯ÙˆÙ†Ù‡ BYTEA Ø¨Ø±Ø§ÙŠ Ø°Ø®ÙŠØ±Ù‡ 
+Ø¯Ø§Ø¯Ù‡â€ŒÙ‡Ø§ÙŠ Ø¨Ø§ÙŠÙ†Ø±ÙŠ Ø§Ø³Øª Ø¨Ù‡ Ø®ØµÙˆØµ Ø¯Ø§Ø¯Ù‡â€ŒÙ‡Ø§ÙŠ 
+Ø¨Ø§ÙŠÙ†ØªØ±ÙŠ ÙƒÙ‡ Ø´Ø§Ù…Ù„ Ø¨Ø§ÙŠØªâ€ŒÙ‡Ø§ÙŠ NULL Ù‡Ø³ØªÙ†Ø¯. Ø§Ø² Ù†Ø¸Ø± 
+ÙƒØ§Ø±Ø§ÙŠÙŠ ØªÙ…Ø§Ù… Ø§ÙŠÙ† Ú¯ÙˆÙ†Ù‡â€ŒÙ‡Ø§ ÙŠÙƒØ³Ø§Ù† Ù‡Ø³ØªÙ†Ø¯.
+4.15.1) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… ÙŠÙƒ ÙÙŠÙ„Ø¯ Ø³Ø±ÙŠØ§Ù„ ÙŠØ§ 
+Ø§ÙØ²Ø§ÙŠØ´ÙŠ Ø§ÙŠØ¬Ø§Ø¯ ÙƒÙ†Ù…ØŸ
+PostgreSQL Ø§Ø² Ø¯Ø§Ø¯Ù‡â€ŒÙ‡Ø§ÙŠ Ø³Ø±ÙŠØ§Ù„ Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ Ù…ÙŠâ€ŒÙƒÙ†Ø¯. 
+Ø¨Ø±Ø§ÙŠ Ø§ÙŠØ¬Ø§Ø¯ ÙŠÙƒ ÙÙŠÙ„Ø¯ Ø³Ø±ÙŠØ§Ù„ (Ø¨Ø±Ø§ÙŠ Ø¯Ø§Ø´ØªÙ† ÙŠÙƒ ÙÙŠÙ„Ø¯ 
+Ù…Ù†Ø­ØµØ± Ø¨Ù‡ ÙØ±Ø¯ Ø¨Ø±Ø§ÙŠ Ù‡Ø± Ø±Ø¯ÙŠÙ )Ø¨Ù‡ Ø±ÙˆØ´ Ø²ÙŠØ± Ø¹Ù…Ù„ 
+ÙƒÙ†ÙŠØ¯:
     CREATE TABLE person ( 
         id   SERIAL, 
         name TEXT 
     );
-دستور بالا به طور اتوماتيک به دستور زير تبديل مي‌شود:
+Ø¯Ø³ØªÙˆØ± Ø¨Ø§Ù„Ø§ Ø¨Ù‡ Ø·ÙˆØ± Ø§ØªÙˆÙ…Ø§ØªÙŠÚ© Ø¨Ù‡ Ø¯Ø³ØªÙˆØ± Ø²ÙŠØ± 
+ØªØ¨Ø¯ÙŠÙ„ Ù…ÙŠâ€ŒØ´ÙˆØ¯:
     CREATE SEQUENCE person_id_seq;
     CREATE TABLE person ( 
         id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),
         name TEXT 
     );
-براي ديدن اطلاعات بيشتر به راهنماي دستور create_sequence  مراجعه كنيد. همچنين 
-مي‌توان از OID‌هر رديف به عنوان يك مقدار منحصر به فرد استفاده كرد. اما در اين 
-حالت براي dump كردن و reload‌كردن پايگاه داده بايد دستور pg_dumps‌ را با گزينه 
-o-‌ اجرا كنيد.
-4.15.2) چگونه مي‌توانم مقدار يك درج سريالي را بدانم؟
-يك روش براي گرفتن مقدار بعدي يك فيلد سريال استفاده از تابع ()nextval است. در شبه 
-كُدي كه در ادامه آمده است روش انجام اين كار نشان داده شده است:
+Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ø¨ÙŠØ´ØªØ± Ø¨Ù‡ Ø±Ø§Ù‡Ù†Ù…Ø§ÙŠ Ø¯Ø³ØªÙˆØ± 
+create_sequence  Ù…Ø±Ø§Ø¬Ø¹Ù‡ ÙƒÙ†ÙŠØ¯. Ù‡Ù…Ú†Ù†ÙŠÙ† Ù…ÙŠâ€ŒØªÙˆØ§Ù† Ø§Ø² 
+OIDâ€ŒÙ‡Ø± Ø±Ø¯ÙŠÙ Ø¨Ù‡ Ø¹Ù†ÙˆØ§Ù† ÙŠÙƒ Ù…Ù‚Ø¯Ø§Ø± Ù…Ù†Ø­ØµØ± Ø¨Ù‡ ÙØ±Ø¯ 
+Ø§Ø³ØªÙØ§Ø¯Ù‡ ÙƒØ±Ø¯. Ø§Ù…Ø§ Ø¯Ø± Ø§ÙŠÙ† Ø­Ø§Ù„Øª Ø¨Ø±Ø§ÙŠ dump ÙƒØ±Ø¯Ù† Ùˆ 
+reloadâ€ŒÙƒØ±Ø¯Ù† Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ø¨Ø§ÙŠØ¯ Ø¯Ø³ØªÙˆØ± pg_dumpsâ€Œ Ø±Ø§ 
+Ø¨Ø§ Ú¯Ø²ÙŠÙ†Ù‡ o-â€Œ Ø§Ø¬Ø±Ø§ ÙƒÙ†ÙŠØ¯.
+4.15.2) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… Ù…Ù‚Ø¯Ø§Ø± ÙŠÙƒ Ø¯Ø±Ø¬ Ø³Ø±ÙŠØ§Ù„ÙŠ Ø±Ø§ 
+Ø¨Ø¯Ø§Ù†Ù…ØŸ
+ÙŠÙƒ Ø±ÙˆØ´ Ø¨Ø±Ø§ÙŠ Ú¯Ø±ÙØªÙ† Ù…Ù‚Ø¯Ø§Ø± Ø¨Ø¹Ø¯ÙŠ ÙŠÙƒ ÙÙŠÙ„Ø¯ Ø³Ø±ÙŠØ§Ù„ 
+Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² ØªØ§Ø¨Ø¹ ()nextval Ø§Ø³Øª. Ø¯Ø± Ø´Ø¨Ù‡ ÙƒÙØ¯ÙŠ ÙƒÙ‡ Ø¯Ø± 
+Ø§Ø¯Ø§Ù…Ù‡ Ø¢Ù…Ø¯Ù‡ Ø§Ø³Øª Ø±ÙˆØ´ Ø§Ù†Ø¬Ø§Ù… Ø§ÙŠÙ† ÙƒØ§Ø± Ù†Ø´Ø§Ù† Ø¯Ø§Ø¯Ù‡ 
+Ø´Ø¯Ù‡ Ø§Ø³Øª:
     new_id = execute("SELECT nextval('person_id_seq')");
     execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
-با اجراي دستور فوق مقدار جديد را در متغير new_id نيز خواهيدداشت كه مي‌توانيد آن 
-را در بقيه درخواست‌ها نيز استفاده كنيد. توجه داشته باشيد كه نام SEQUENCEيي كه به 
-طور اتوماتيك ايجاد شده است به صورت table_serialcolumn_seq‌ خواهد بود. كه در آن 
-table‌ نام جدول و serialcolumn نام فيلد سريال جدول مي‌باشد.
-براي ديدن مقدار نسبت داده شده به فيلد سريال نيز مي‌توان از تابع () currval به 
-صورت زير استفاده كرد. 
+Ø¨Ø§ Ø§Ø¬Ø±Ø§ Ø¯Ø³ØªÙˆØ± ÙÙˆÙ‚ Ù…Ù‚Ø¯Ø§Ø± Ø¬Ø¯ÙŠØ¯ Ø±Ø§ Ø¯Ø± Ù…ØªØºÙŠØ± new_id 
+Ù†ÙŠØ² Ø®ÙˆØ§Ù‡ÙŠØ¯Ø¯Ø§Ø´Øª ÙƒÙ‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†ÙŠØ¯ Ø¢Ù† Ø±Ø§ Ø¯Ø± Ø¨Ù‚ÙŠÙ‡ 
+Ø¯Ø±Ø®ÙˆØ§Ø³Øªâ€ŒÙ‡Ø§ÙŠ Ù†ÙŠØ² Ø§Ø³ØªÙØ§Ø¯Ù‡ ÙƒÙ†ÙŠØ¯. ØªÙˆØ¬Ù‡ Ø¯Ø§Ø´ØªÙ‡ 
+Ø¨Ø§Ø´ÙŠØ¯ ÙƒÙ‡ Ù†Ø§Ù… SEQUENCEÙŠÙŠ ÙƒÙ‡ Ø¨Ù‡ Ø·ÙˆØ± Ø§ØªÙˆÙ…Ø§ØªÙŠÙƒ Ø§ÙŠØ¬Ø§Ø¯ 
+Ø´Ø¯Ù‡ Ø§Ø³Øª Ø¨Ù‡ ØµÙˆØ±Øª table_serialcolumn_seqâ€Œ Ø®ÙˆØ§Ù‡Ø¯ Ø¨ÙˆØ¯. ÙƒÙ‡ 
+Ø¯Ø± Ø¢Ù† tableâ€Œ Ù†Ø§Ù… Ø¬Ø¯ÙˆÙ„ Ùˆ serialcolumn Ù†Ø§Ù… ÙÙŠÙ„Ø¯ Ø³Ø±ÙŠØ§Ù„ 
+Ø¬Ø¯ÙˆÙ„ Ù…ÙŠâ€ŒØ¨Ø§Ø´Ø¯.
+Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† Ù…Ù‚Ø¯Ø§Ø± Ù†Ø³Ø¨Øª Ø¯Ø§Ø¯Ù‡ Ø´Ø¯Ù‡ Ø¨Ù‡ ÙÙŠÙ„Ø¯ Ø³Ø±ÙŠØ§Ù„ 
+Ù†ÙŠØ² Ù…ÙŠâ€ŒØªÙˆØ§Ù† Ø§Ø² ØªØ§Ø¨Ø¹ () currval Ø¨Ù‡ ØµÙˆØ±Øª Ø²ÙŠØ± 
+Ø§Ø³ØªÙØ§Ø¯Ù‡ ÙƒØ±Ø¯. 
     execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
     new_id = execute("SELECT currval('person_id_seq')");
-و سرانجام شما مي‌توانيد از مقدار OID كه خروجي دستور INSERT  است براي ديدن مقدار 
-پيش فرض استفاده كنيد. هر چند اين روش در همه پلتفرمها قابل استفاده نيست و ضمن 
-اينكه فيلد oid‌ بعد از عدد 4 ميليارد دوباره صفر مي‌شود. در زبان perl با استفاده 
-از DBI و DBD::Pg مقدار oid‌را مي‌توانيد به اين شكل استخراج كنيد: بعد از اجراي 
-()st->execute$ مقدار oid‌ در متغير  sth->pg_oid_status$ ذخيره خواهد شد.
-4.15.3) آیا توابع ()nextval و ()currval منجر به ایجاد شرایط race برای سایر 
-کاربران می شوند؟
-خیر، استفاده از این توابع شرایط race را به وجود نمی آورد.
-4.15.4) چرا اعداد سریالی مربوط به تراکنشهای abort شده مجدداً استفاده نمی شود؟ 
-چرا بین اعداد سریالی یک فاصله خالی ایجاد می شود؟
-برای بالا بردن امکان اجرای همزمان تراکنشها، اعداد سریالی به محض اجرای تراکنش به 
-آنها تخصیص می یابد در این حالت اگر بعضی از تراکنشها abort شوند بین اعداد سریالی 
-استفاده شده یک فاصله خالی به وجود می آید.
-4.16) OID و TID چه هستند؟
-OID راه حل PostgreSQL برای داشتن یک شناسه منحصر به فرد برای هر ردیف است. هر ردیف 
-جدیدی که ایجاد می شود یک OID منحصر به فرد به آن اختصاص می یابد. تمام OIDهایی که 
-در حین initdb ایجاد می شوند از 16384 کمتر هستند و OIDهایی بعداً تولید می شود از 
-این عدد بزرگتر خواهد بود. نکته مهم آن است که OIDها نه تنها در یک جدول شبیه 
-نیستند بلکه در کل پایگاه داده هیچ دو ردیفی دارای OID یکسان نخواهد بود.
-PostgreSQL از OID در سیستم داخلی خود برای ایجاد ارتباط بین ردیفهای جداول مختلف 
-استفاده می کند. توصیه می شود که یک ستون از نوع OID برای ذخیره این فیلد در جدول 
-ایجاد کنید. ساختن یک نمایه برای این فیلد باعث دسترسی سریعتر به آن خواهد شد.
-تمام پایگاههای داده در PostgreSQL برای گرفتن OID جدید از یک ناحیه مرکزی استفاده 
-می کند. ولی اگر بخواهیم OID را به روش دیگری بگیریم و یا اینکه در حین کپی کردن یک 
-جدول بخواهیم OIDهای اصلی آن تغییر نکند به روش زیر می توانیم عمل کنیم:
+Ùˆ Ø³Ø±Ø§Ù†Ø¬Ø§Ù… Ø´Ù…Ø§ Ù…ÙŠâ€ŒØªÙˆØ§Ù†ÙŠØ¯ Ø§Ø² Ù…Ù‚Ø¯Ø§Ø± OID ÙƒÙ‡ Ø®Ø±ÙˆØ¬ÙŠ 
+Ø¯Ø³ØªÙˆØ± INSERT  Ø§Ø³Øª Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† Ù…Ù‚Ø¯Ø§Ø± Ù¾ÙŠØ´ ÙØ±Ø¶ 
+Ø§Ø³ØªÙØ§Ø¯Ù‡ ÙƒÙ†ÙŠØ¯. Ù‡Ø± Ú†Ù†Ø¯ Ø§ÙŠÙ† Ø±ÙˆØ´ Ø¯Ø± Ù‡Ù…Ù‡ Ù¾Ù„ØªÙØ±Ù…Ù‡Ø§ 
+Ù‚Ø§Ø¨Ù„ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù†ÙŠØ³Øª Ùˆ Ø¶Ù…Ù† Ø§ÙŠÙ†ÙƒÙ‡ ÙÙŠÙ„Ø¯ oidâ€Œ Ø¨Ø¹Ø¯ 
+Ø§Ø² Ø¹Ø¯Ø¯ 4 Ù…ÙŠÙ„ÙŠØ§Ø±Ø¯ Ø¯ÙˆØ¨Ø§Ø±Ù‡ ØµÙØ± Ù…ÙŠâ€ŒØ´ÙˆØ¯. Ø¯Ø± Ø²Ø¨Ø§Ù† 
+perl Ø¨Ø§ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² DBI Ùˆ DBD::Pg Ù…Ù‚Ø¯Ø§Ø± oidâ€ŒØ±Ø§ 
+Ù…ÙŠâ€ŒØªÙˆØ§Ù†ÙŠØ¯ Ø¨Ù‡ Ø´ÙƒÙ„ Ø²ÙŠØ± Ø§Ø³ØªØ®Ø±Ø§Ø¬ ÙƒÙ†ÙŠØ¯: Ø¨Ø¹Ø¯ Ø§Ø² 
+Ø§Ø¬Ø±Ø§ÙŠ ()st->execute$ Ù…Ù‚Ø¯Ø§Ø± oidâ€Œ Ø¯Ø± Ù…ØªØºÙŠØ±  sth->pg_oid_status$ 
+Ø°Ø®ÙŠØ±Ù‡ Ø®ÙˆØ§Ù‡Ø¯ Ø´Ø¯.
+4.15.3) Ø¢ÛŒØ§ ØªÙˆØ§Ø¨Ø¹ ()nextval Ùˆ ()currval Ù…Ù†Ø¬Ø± Ø¨Ù‡ Ø§ÛŒØ¬Ø§Ø¯ 
+Ø´Ø±Ø§ÛŒØ· race Ø¨Ø±Ø§ÛŒ Ø³Ø§ÛŒØ± Ú©Ø§Ø±Ø¨Ø±Ø§Ù† Ù…ÛŒ Ø´ÙˆÙ†Ø¯ØŸ
+Ø®ÛŒØ±ØŒ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² Ø§ÛŒÙ† ØªÙˆØ§Ø¨Ø¹ Ø´Ø±Ø§ÛŒØ· race Ø±Ø§ Ø¨Ù‡ 
+ÙˆØ¬ÙˆØ¯ Ù†Ù…ÛŒ Ø¢ÙˆØ±Ø¯.
+4.15.4) Ú†Ø±Ø§ Ø§Ø¹Ø¯Ø§Ø¯ Ø³Ø±ÛŒØ§Ù„ÛŒ Ù…Ø±Ø¨ÙˆØ· Ø¨Ù‡ ØªØ±Ø§Ú©Ù†Ø´Ù‡Ø§ÛŒ abort 
+Ø´Ø¯Ù‡ Ù…Ø¬Ø¯Ø¯Ø§Ù‹ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù†Ù…ÛŒ Ø´ÙˆØ¯ØŸ Ú†Ø±Ø§ Ø¨ÛŒÙ† Ø§Ø¹Ø¯Ø§Ø¯ 
+Ø³Ø±ÛŒØ§Ù„ÛŒ ÛŒÚ© ÙØ§ØµÙ„Ù‡ Ø®Ø§Ù„ÛŒ Ø§ÛŒØ¬Ø§Ø¯ Ù…ÛŒ Ø´ÙˆØ¯ØŸ
+Ø¨Ø±Ø§ÛŒ Ø¨Ø§Ù„Ø§ Ø¨Ø±Ø¯Ù† Ø§Ù…Ú©Ø§Ù† Ø§Ø¬Ø±Ø§ÛŒ Ù‡Ù…Ø²Ù…Ø§Ù† ØªØ±Ø§Ú©Ù†Ø´Ù‡Ø§ØŒ 
+Ø§Ø¹Ø¯Ø§Ø¯ Ø³Ø±ÛŒØ§Ù„ÛŒ Ø¨Ù‡ Ù…Ø­Ø¶ Ø§Ø¬Ø±Ø§ÛŒ ØªØ±Ø§Ú©Ù†Ø´ Ø¨Ù‡ Ø¢Ù†Ù‡Ø§ 
+ØªØ®ØµÛŒØµ Ù…ÛŒ ÛŒØ§Ø¨Ø¯ Ø¯Ø± Ø§ÛŒÙ† Ø­Ø§Ù„Øª Ø§Ú¯Ø± Ø¨Ø¹Ø¶ÛŒ Ø§Ø² 
+ØªØ±Ø§Ú©Ù†Ø´Ù‡Ø§ abort Ø´ÙˆÙ†Ø¯ Ø¨ÛŒÙ† Ø§Ø¹Ø¯Ø§Ø¯ Ø³Ø±ÛŒØ§Ù„ÛŒ Ø§Ø³ØªÙØ§Ø¯Ù‡ 
+Ø´Ø¯Ù‡ ÛŒÚ© ÙØ§ØµÙ„Ù‡ Ø®Ø§Ù„ÛŒ Ø¨Ù‡ ÙˆØ¬ÙˆØ¯ Ù…ÛŒ Ø¢ÛŒØ¯.
+4.16) OID Ùˆ TID Ú†Ù‡ Ù‡Ø³ØªÙ†Ø¯ØŸ
+OID Ø±Ø§Ù‡ Ø­Ù„ PostgreSQL Ø¨Ø±Ø§ÛŒ Ø¯Ø§Ø´ØªÙ† ÛŒÚ© Ø´Ù†Ø§Ø³Ù‡ Ù…Ù†Ø­ØµØ± Ø¨Ù‡ 
+ÙØ±Ø¯ Ø¨Ø±Ø§ÛŒ Ù‡Ø± Ø±Ø¯ÛŒÙ Ø§Ø³Øª. Ù‡Ø± Ø±Ø¯ÛŒÙ Ø¬Ø¯ÛŒØ¯ÛŒ Ú©Ù‡ Ø§ÛŒØ¬Ø§Ø¯ 
+Ù…ÛŒ Ø´ÙˆØ¯ ÛŒÚ© OID Ù…Ù†Ø­ØµØ± Ø¨Ù‡ ÙØ±Ø¯ Ø¨Ù‡ Ø¢Ù† Ø§Ø®ØªØµØ§Øµ Ù…ÛŒ 
+ÛŒØ§Ø¨Ø¯. ØªÙ…Ø§Ù… OIDÙ‡Ø§ÛŒÛŒ Ú©Ù‡ Ø¯Ø± Ø­ÛŒÙ† initdb Ø§ÛŒØ¬Ø§Ø¯ Ù…ÛŒ Ø´ÙˆÙ†Ø¯ 
+Ø§Ø² 16384 Ú©Ù…ØªØ± Ù‡Ø³ØªÙ†Ø¯ Ùˆ OIDÙ‡Ø§ÛŒÛŒ Ø¨Ø¹Ø¯Ø§Ù‹ ØªÙˆÙ„ÛŒØ¯ Ù…ÛŒ Ø´ÙˆØ¯ 
+Ø§Ø² Ø§ÛŒÙ† Ø¹Ø¯Ø¯ Ø¨Ø²Ø±Ú¯ØªØ± Ø®ÙˆØ§Ù‡Ø¯ Ø¨ÙˆØ¯. Ù†Ú©ØªÙ‡ Ù…Ù‡Ù… Ø¢Ù† Ø§Ø³Øª 
+Ú©Ù‡ OIDÙ‡Ø§ Ù†Ù‡ ØªÙ†Ù‡Ø§ Ø¯Ø± ÛŒÚ© Ø¬Ø¯ÙˆÙ„ Ø´Ø¨ÛŒÙ‡ Ù†ÛŒØ³ØªÙ†Ø¯ Ø¨Ù„Ú©Ù‡ 
+Ø¯Ø± Ú©Ù„ Ù¾Ø§ÛŒÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ù‡ÛŒÚ† Ø¯Ùˆ Ø±Ø¯ÛŒÙÛŒ Ø¯Ø§Ø±Ø§ÛŒ OID ÛŒÚ©Ø³Ø§Ù† 
+Ù†Ø®ÙˆØ§Ù‡Ø¯ Ø¨ÙˆØ¯.
+PostgreSQL Ø§Ø² OID Ø¯Ø± Ø³ÛŒØ³ØªÙ… Ø¯Ø§Ø®Ù„ÛŒ Ø®ÙˆØ¯ Ø¨Ø±Ø§ÛŒ Ø§ÛŒØ¬Ø§Ø¯ 
+Ø§Ø±ØªØ¨Ø§Ø· Ø¨ÛŒÙ† Ø±Ø¯ÛŒÙÙ‡Ø§ÛŒ Ø¬Ø¯Ø§ÙˆÙ„ Ù…Ø®ØªÙ„Ù Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÛŒ 
+Ú©Ù†Ø¯. ØªÙˆØµÛŒÙ‡ Ù…ÛŒ Ø´ÙˆØ¯ Ú©Ù‡ ÛŒÚ© Ø³ØªÙˆÙ† Ø§Ø² Ù†ÙˆØ¹ OID Ø¨Ø±Ø§ÛŒ 
+Ø°Ø®ÛŒØ±Ù‡ Ø§ÛŒÙ† ÙÛŒÙ„Ø¯ Ø¯Ø± Ø¬Ø¯ÙˆÙ„ Ø§ÛŒØ¬Ø§Ø¯ Ú©Ù†ÛŒØ¯. Ø³Ø§Ø®ØªÙ† ÛŒÚ© 
+Ù†Ù…Ø§ÛŒÙ‡ Ø¨Ø±Ø§ÛŒ Ø§ÛŒÙ† ÙÛŒÙ„Ø¯ Ø¨Ø§Ø¹Ø« Ø¯Ø³ØªØ±Ø³ÛŒ Ø³Ø±ÛŒØ¹ØªØ± Ø¨Ù‡ Ø¢Ù† 
+Ø®ÙˆØ§Ù‡Ø¯ Ø´Ø¯.
+ØªÙ…Ø§Ù… Ù¾Ø§ÛŒÚ¯Ø§Ù‡Ù‡Ø§ÛŒ Ø¯Ø§Ø¯Ù‡ Ø¯Ø± PostgreSQL Ø¨Ø±Ø§ÛŒ Ú¯Ø±ÙØªÙ† OID 
+Ø¬Ø¯ÛŒØ¯ Ø§Ø² ÛŒÚ© Ù†Ø§Ø­ÛŒÙ‡ Ù…Ø±Ú©Ø²ÛŒ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÛŒ Ú©Ù†Ø¯. ÙˆÙ„ÛŒ 
+Ø§Ú¯Ø± Ø¨Ø®ÙˆØ§Ù‡ÛŒÙ… OID Ø±Ø§ Ø¨Ù‡ Ø±ÙˆØ´ Ø¯ÛŒÚ¯Ø±ÛŒ Ø¨Ú¯ÛŒØ±ÛŒÙ… Ùˆ ÛŒØ§ 
+Ø§ÛŒÙ†Ú©Ù‡ Ø¯Ø± Ø­ÛŒÙ† Ú©Ù¾ÛŒ Ú©Ø±Ø¯Ù† ÛŒÚ© Ø¬Ø¯ÙˆÙ„ Ø¨Ø®ÙˆØ§Ù‡ÛŒÙ… OIDÙ‡Ø§ÛŒ 
+Ø§ØµÙ„ÛŒ Ø¢Ù† ØªØºÛŒÛŒØ± Ù†Ú©Ù†Ø¯ Ø¨Ù‡ Ø±ÙˆØ´ Ø²ÛŒØ± Ù…ÛŒ ØªÙˆØ§Ù†ÛŒÙ… Ø¹Ù…Ù„ 
+Ú©Ù†ÛŒÙ…:
 
         CREATE TABLE new_table(mycol int);
         SELECT oid AS old_oid, mycol INTO tmp_table FROM old_table;
         COPY tmp_table TO '/tmp/pgtable';
         COPY new_table WITH OIDS FROM '/tmp/pgtable';
         DROP TABLE tmp_table;
-OID یک عدد صحیح 4 بایتی است و بنابراین حداکثر مقدار آن 4 میلیارد خواهد بود و بعد 
-از آن مقدار آن سرریز خواهد شد.  البته تا کنون برای  کسی  این اتفاق نیفتاده است و 
-تصمیم گرداندگان PostgreSQL آن است که قبل از آنکه این اتفاق رخ دهد این مشکل را 
-برطرف کنند.
-TIDها برای شناسایی محل فیزیکی یک ردیف بر اساس بلوک و آفست می باشد. TIDها بعد از 
-تغییر پیدا کردن یک  ردیف و یا  بازخوانی  آن  عوض  می شوند. TIDها توسط نمایه ها 
-استفاده می شوند.
-4.17) معني بعضي از ترمها و كلماتي كه در PostgreSQL‌ استفاده مي‌شود چيست؟
-لیست برخی از ترمها و کلماتی که استفاده می شوند:
-  table, relation, class :کلاس، رابطه، جدول
-  row, record, tuple چندتایی، رکورد، ردیف
-  column, field, attribute صفت، فیلد، ستون
-  retrieve, select انتخاب، خواندن
-  replace, updateبه روز کردن، جایگزینی 
-  append, insert درج، اضافه کردن
-  OID, serial value مقدار سریال
+OID ÛŒÚ© Ø¹Ø¯Ø¯ ØµØ­ÛŒØ­ 4 Ø¨Ø§ÛŒØªÛŒ Ø§Ø³Øª Ùˆ Ø¨Ù†Ø§Ø¨Ø±Ø§ÛŒÙ† Ø­Ø¯Ø§Ú©Ø«Ø± 
+Ù…Ù‚Ø¯Ø§Ø± Ø¢Ù† 4 Ù…ÛŒÙ„ÛŒØ§Ø±Ø¯ Ø®ÙˆØ§Ù‡Ø¯ Ø¨ÙˆØ¯ Ùˆ Ø¨Ø¹Ø¯ Ø§Ø² Ø¢Ù† 
+Ù…Ù‚Ø¯Ø§Ø± Ø¢Ù† Ø³Ø±Ø±ÛŒØ² Ø®ÙˆØ§Ù‡Ø¯ Ø´Ø¯.  Ø§Ù„Ø¨ØªÙ‡ ØªØ§ Ú©Ù†ÙˆÙ† Ø¨Ø±Ø§ÛŒ  
+Ú©Ø³ÛŒ  Ø§ÛŒÙ† Ø§ØªÙØ§Ù‚ Ù†ÛŒÙØªØ§Ø¯Ù‡ Ø§Ø³Øª Ùˆ ØªØµÙ…ÛŒÙ… Ú¯Ø±Ø¯Ø§Ù†Ø¯Ú¯Ø§Ù† 
+PostgreSQL Ø¢Ù† Ø§Ø³Øª Ú©Ù‡ Ù‚Ø¨Ù„ Ø§Ø² Ø¢Ù†Ú©Ù‡ Ø§ÛŒÙ† Ø§ØªÙØ§Ù‚ Ø±Ø® Ø¯Ù‡Ø¯ 
+Ø§ÛŒÙ† Ù…Ø´Ú©Ù„ Ø±Ø§ Ø¨Ø±Ø·Ø±Ù Ú©Ù†Ù†Ø¯.
+TIDÙ‡Ø§ Ø¨Ø±Ø§ÛŒ Ø´Ù†Ø§Ø³Ø§ÛŒÛŒ Ù…Ø­Ù„ ÙÛŒØ²ÛŒÚ©ÛŒ ÛŒÚ© Ø±Ø¯ÛŒÙ Ø¨Ø± Ø§Ø³Ø§Ø³ 
+Ø¨Ù„ÙˆÚ© Ùˆ Ø¢ÙØ³Øª Ù…ÛŒ Ø¨Ø§Ø´Ø¯. TIDÙ‡Ø§ Ø¨Ø¹Ø¯ Ø§Ø² ØªØºÛŒÛŒØ± Ù¾ÛŒØ¯Ø§ 
+Ú©Ø±Ø¯Ù† ÛŒÚ© Ø±Ø¯ÛŒÙ Ùˆ ÛŒØ§ Ø¨Ø§Ø²Ø®ÙˆØ§Ù†ÛŒ Ø¢Ù† Ø¹ÙˆØ¶ Ù…ÛŒ Ø´ÙˆÙ†Ø¯. 
+TIDÙ‡Ø§ ØªÙˆØ³Ø· Ù†Ù…Ø§ÛŒÙ‡ Ù‡Ø§ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÛŒ Ø´ÙˆÙ†Ø¯.
+4.17) Ù…Ø¹Ù†ÙŠ Ø¨Ø¹Ø¶ÙŠ Ø§Ø² ØªØ±Ù…Ù‡Ø§ Ùˆ ÙƒÙ„Ù…Ø§ØªÙŠ ÙƒÙ‡ Ø¯Ø± PostgreSQLâ€Œ 
+Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÙŠâ€ŒØ´ÙˆØ¯ Ú†ÙŠØ³ØªØŸ
+Ù„ÛŒØ³Øª Ø¨Ø±Ø®ÛŒ Ø§Ø² ØªØ±Ù…Ù‡Ø§ Ùˆ Ú©Ù„Ù…Ø§ØªÛŒ Ú©Ù‡ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÛŒ 
+Ø´ÙˆÙ†Ø¯:
+  table, relation, class :Ú©Ù„Ø§Ø³ØŒ Ø±Ø§Ø¨Ø·Ù‡ØŒ Ø¬Ø¯ÙˆÙ„
+  row, record, tuple Ú†Ù†Ø¯ØªØ§ÛŒÛŒØŒ Ø±Ú©ÙˆØ±Ø¯ØŒ Ø±Ø¯ÛŒÙ
+  column, field, attribute ØµÙØªØŒ ÙÛŒÙ„Ø¯ØŒ Ø³ØªÙˆÙ†
+  retrieve, select Ø§Ù†ØªØ®Ø§Ø¨ØŒ Ø®ÙˆØ§Ù†Ø¯Ù†
+  replace, updateØ¨Ù‡ Ø±ÙˆØ² Ú©Ø±Ø¯Ù†ØŒ Ø¬Ø§ÛŒÚ¯Ø²ÛŒÙ†ÛŒ 
+  append, insert Ø¯Ø±Ø¬ØŒ Ø§Ø¶Ø§ÙÙ‡ Ú©Ø±Ø¯Ù†
+  OID, serial value Ù…Ù‚Ø¯Ø§Ø± Ø³Ø±ÛŒØ§Ù„
   portal, cursor 
   range variable, table name, table alias 
-یک لیست عمومی از ترمهای مورد استفاده در پایگاه داده در آدرس  
+ÛŒÚ© Ù„ÛŒØ³Øª Ø¹Ù…ÙˆÙ…ÛŒ Ø§Ø² ØªØ±Ù…Ù‡Ø§ÛŒ Ù…ÙˆØ±Ø¯ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø¯Ø± 
+Ù¾Ø§ÛŒÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ø¯Ø± Ø¢Ø¯Ø±Ø³  
 http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.htm 
-وجود دارد.
-4.18) چرا من خطاي "ERROR: Memory exhausted in AllocSetAlloc" مي‌گيرم؟
-این خطا احتمالاً یا به خاطر تمام شدن حافظه مجازی سیستم شماست و یا اینکه کرنل 
-برای برنامه ها در مورد میزان استفاده از حافظه مجازی محدودیت اعمال کرده است. قبل 
-از اجرای برنامه اصلی یکی از دستورات زیر را اجرا کنید.
+ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯.
+4.18) Ú†Ø±Ø§ Ù…Ù† Ø®Ø·Ø§ÙŠ "ERROR: Memory exhausted in AllocSetAlloc" 
+Ù…ÙŠâ€ŒÚ¯ÙŠØ±Ù…ØŸ
+Ø§ÛŒÙ† Ø®Ø·Ø§ Ø§Ø­ØªÙ…Ø§Ù„Ø§Ù‹ ÛŒØ§ Ø¨Ù‡ Ø®Ø§Ø·Ø± ØªÙ…Ø§Ù… Ø´Ø¯Ù† Ø­Ø§ÙØ¸Ù‡ 
+Ù…Ø¬Ø§Ø²ÛŒ Ø³ÛŒØ³ØªÙ… Ø´Ù…Ø§Ø³Øª Ùˆ ÛŒØ§ Ø§ÛŒÙ†Ú©Ù‡ Ú©Ø±Ù†Ù„ Ø¨Ø±Ø§ÛŒ 
+Ø¨Ø±Ù†Ø§Ù…Ù‡ Ù‡Ø§ Ø¯Ø± Ù…ÙˆØ±Ø¯ Ù…ÛŒØ²Ø§Ù† Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² Ø­Ø§ÙØ¸Ù‡ 
+Ù…Ø¬Ø§Ø²ÛŒ Ù…Ø­Ø¯ÙˆØ¯ÛŒØª Ø§Ø¹Ù…Ø§Ù„ Ú©Ø±Ø¯Ù‡ Ø§Ø³Øª. Ù‚Ø¨Ù„ Ø§Ø² Ø§Ø¬Ø±Ø§ÛŒ 
+Ø¨Ø±Ù†Ø§Ù…Ù‡ Ø§ØµÙ„ÛŒ ÛŒÚ©ÛŒ Ø§Ø² Ø¯Ø³ØªÙˆØ±Ø§Øª Ø²ÛŒØ± Ø±Ø§ Ø§Ø¬Ø±Ø§ Ú©Ù†ÛŒØ¯.
     ulimit -d 262144
     limit datasize 256m
-بسته به نوع شل یکی از این دستورات ممکن است با موفقیت اجرا شود. با اجرای آن دستور 
-محدودیت حافظه مجازی برای برنامه ها برداشته شده و با این کار احتمالاً درخواستی که 
-قبلاً خطا می داده است اجرا خواهد شد.
-4.19) از كجا تشخيص دهم كه ويرايش يا نسخه PostgreSQLيي كه من استفاده مي‌كنم چيست؟
-با اجرای دستور ()SELECT version
-4.20) چرا حین اجرای عملیات روی large-objectها خطای "invalid large obj 
-descriptor"به وجود می آید؟
-شما باید قبل از شروع دستوراتی که با large-objectها کار می کنند BEGIN  و بعد از 
-آنها هم یک END بگذارید. در حال حاضر PostgreSQL هندل large-objectها را در زمان 
-نهایی شدن تراکنش (commitشدن) می بندد. به همین دلیل اولین تلاش برای انجام هر کاری 
-با هندل منجر به خطای invalid large obj descriptor خواهد شد. برای جلوگیری از این 
-خطا حتماً باید از یک تراکنش استفاده کنید. این کار همانطور که قبلاً گفته شد با 
-استفاده از قرار دادن BEGIN و END در ابتدا و انتهای دستورات انجام می شود.
-اگر این خطا را در حین استفاده از یک درایور ODBC دریافت کردید احتمالاً باید این 
-دستور را اجرا کنید: set auto-commit off
-4.21) چگونه يك ستون ايجاد كنم كه مقدار زمان جاري را به عنوان مقدار پيش‌فرض داشته 
-باشد؟
-از CURRENT_TIMESTAMP  استفاده کنید در مثال زیر نحوه انجام این کار نشان داده شده 
-است:
+Ø¨Ø³ØªÙ‡ Ø¨Ù‡ Ù†ÙˆØ¹ Ø´Ù„ ÛŒÚ©ÛŒ Ø§Ø² Ø§ÛŒÙ† Ø¯Ø³ØªÙˆØ±Ø§Øª Ù…Ù…Ú©Ù† Ø§Ø³Øª Ø¨Ø§ 
+Ù…ÙˆÙÙ‚ÛŒØª Ø§Ø¬Ø±Ø§ Ø´ÙˆØ¯. Ø¨Ø§ Ø§Ø¬Ø±Ø§ÛŒ Ø¢Ù† Ø¯Ø³ØªÙˆØ± Ù…Ø­Ø¯ÙˆØ¯ÛŒØª 
+Ø­Ø§ÙØ¸Ù‡ Ù…Ø¬Ø§Ø²ÛŒ Ø¨Ø±Ø§ÛŒ Ø¨Ø±Ù†Ø§Ù…Ù‡ Ù‡Ø§ Ø¨Ø±Ø¯Ø§Ø´ØªÙ‡ Ø´Ø¯Ù‡ Ùˆ Ø¨Ø§ 
+Ø§ÛŒÙ† Ú©Ø§Ø± Ø§Ø­ØªÙ…Ø§Ù„Ø§Ù‹ Ø¯Ø±Ø®ÙˆØ§Ø³ØªÛŒ Ú©Ù‡ Ù‚Ø¨Ù„Ø§Ù‹ Ø®Ø·Ø§ Ù…ÛŒ 
+Ø¯Ø§Ø¯Ù‡ Ø§Ø³Øª Ø§Ø¬Ø±Ø§ Ø®ÙˆØ§Ù‡Ø¯ Ø´Ø¯.
+4.19) Ø§Ø² ÙƒØ¬Ø§ ØªØ´Ø®ÙŠØµ Ø¯Ù‡Ù… ÙƒÙ‡ ÙˆÙŠØ±Ø§ÙŠØ´ ÙŠØ§ Ù†Ø³Ø®Ù‡ 
+PostgreSQLÙŠÙŠ ÙƒÙ‡ Ù…Ù† Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÙŠâ€ŒÙƒÙ†Ù… Ú†ÙŠØ³ØªØŸ
+Ø¨Ø§ Ø§Ø¬Ø±Ø§ÛŒ Ø¯Ø³ØªÙˆØ± ()SELECT version
+4.20) Ú†Ø±Ø§ Ø¯Ø± Ø­ÛŒÙ† Ø§Ø¬Ø±Ø§ÛŒ Ø¹Ù…Ù„ÛŒØ§Øª Ø±ÙˆÛŒ large-objectÙ‡Ø§ 
+Ø®Ø·Ø§ÛŒ "invalid large obj descriptor"Ø¨Ù‡ ÙˆØ¬ÙˆØ¯ Ù…ÛŒ Ø¢ÛŒØ¯ØŸ
+Ø´Ù…Ø§ Ø¨Ø§ÛŒØ¯ Ù‚Ø¨Ù„ Ø§Ø² Ø´Ø±ÙˆØ¹ Ø¯Ø³ØªÙˆØ±Ø§ØªÛŒ Ú©Ù‡ Ø¨Ø§ large-objectÙ‡Ø§ 
+Ú©Ø§Ø± Ù…ÛŒ Ú©Ù†Ù†Ø¯ Ø§Ø² BEGIN  Ùˆ Ø¨Ø¹Ø¯ Ø§Ø² Ø¢Ù†Ù‡Ø§ Ù‡Ù… ÛŒÚ© END 
+Ø¨Ú¯Ø°Ø§Ø±ÛŒØ¯. Ø¯Ø± Ø­Ø§Ù„ Ø­Ø§Ø¶Ø± PostgreSQL Ù‡Ù†Ø¯Ù„ large-objectÙ‡Ø§ Ø±Ø§ 
+Ø¯Ø± Ø²Ù…Ø§Ù† Ù†Ù‡Ø§ÛŒÛŒ Ø´Ø¯Ù† ØªØ±Ø§Ú©Ù†Ø´ (commitØ´Ø¯Ù†) Ù…ÛŒ Ø¨Ù†Ø¯Ø¯. Ø¨Ù‡ 
+Ù‡Ù…ÛŒÙ† Ø¯Ù„ÛŒÙ„ Ø§ÙˆÙ„ÛŒÙ† ØªÙ„Ø§Ø´ Ø¨Ø±Ø§ÛŒ Ø§Ù†Ø¬Ø§Ù… Ù‡Ø± Ú©Ø§Ø±ÛŒ Ø¨Ø§ 
+Ù‡Ù†Ø¯Ù„ Ù…Ù†Ø¬Ø± Ø¨Ù‡ Ø®Ø·Ø§ÛŒ invalid large obj descriptor Ø®ÙˆØ§Ù‡Ø¯ Ø´Ø¯. 
+Ø¨Ø±Ø§ÛŒ Ø¬Ù„ÙˆÚ¯ÛŒØ±ÛŒ Ø§Ø² Ø§ÛŒÙ† Ø®Ø·Ø§ Ø­ØªÙ…Ø§Ù‹ Ø¨Ø§ÛŒØ¯ Ø§Ø² ÛŒÚ© 
+ØªØ±Ø§Ú©Ù†Ø´ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ú©Ù†ÛŒØ¯. Ø§ÛŒÙ† Ú©Ø§Ø± Ù‡Ù…Ø§Ù†Ø·ÙˆØ± Ú©Ù‡ 
+Ù‚Ø¨Ù„Ø§Ù‹ Ú¯ÙØªÙ‡ Ø´Ø¯ Ø¨Ø§ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² Ù‚Ø±Ø§Ø± Ø¯Ø§Ø¯Ù† BEGIN Ùˆ END 
+Ø¯Ø± Ø§Ø¨ØªØ¯Ø§ Ùˆ Ø§Ù†ØªÙ‡Ø§ÛŒ Ø¯Ø³ØªÙˆØ±Ø§Øª Ø§Ù†Ø¬Ø§Ù… Ù…ÛŒ Ø´ÙˆØ¯.
+Ø§Ú¯Ø± Ø§ÛŒÙ† Ø®Ø·Ø§ Ø±Ø§ Ø¯Ø± Ø­ÛŒÙ† Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² ÛŒÚ© Ø¯Ø±Ø§ÛŒÙˆØ± ODBC 
+Ø¯Ø±ÛŒØ§ÙØª Ú©Ø±Ø¯ÛŒØ¯ Ø§Ø­ØªÙ…Ø§Ù„Ø§Ù‹ Ø¨Ø§ÛŒØ¯ Ø§ÛŒÙ† Ø¯Ø³ØªÙˆØ± Ø±Ø§ 
+Ø§Ø¬Ø±Ø§ Ú©Ù†ÛŒØ¯: set auto-commit off
+4.21) Ú†Ú¯ÙˆÙ†Ù‡ ÙŠÙƒ Ø³ØªÙˆÙ† Ø§ÙŠØ¬Ø§Ø¯ ÙƒÙ†Ù… ÙƒÙ‡ Ù…Ù‚Ø¯Ø§Ø± Ø²Ù…Ø§Ù† 
+Ø¬Ø§Ø±ÙŠ Ø±Ø§ Ø¨Ù‡ Ø¹Ù†ÙˆØ§Ù† Ù…Ù‚Ø¯Ø§Ø± Ù¾ÙŠØ´â€ŒÙØ±Ø¶ Ø¯Ø§Ø´ØªÙ‡ Ø¨Ø§Ø´Ø¯ØŸ
+Ø§Ø² CURRENT_TIMESTAMP  Ø§Ø³ØªÙØ§Ø¯Ù‡ Ú©Ù†ÛŒØ¯ Ø¯Ø± Ù…Ø«Ø§Ù„ Ø²ÛŒØ± Ù†Ø­ÙˆÙ‡ 
+Ø§Ù†Ø¬Ø§Ù… Ø§ÛŒÙ† Ú©Ø§Ø± Ù†Ø´Ø§Ù† Ø¯Ø§Ø¯Ù‡ Ø´Ø¯Ù‡ Ø§Ø³Øª:
 CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
 
-4.22) چرا "زير درخواستهايي" كه از IN استفاده مي‌كنند كند هستند؟
-در نسخه های قبل از 7.4 عمل الحاق زیر درخواست و درخواست اصلی به این صورت انجام می 
-شود که نتایج به دست آمده از زیر درخواست به صورت ترتیبی برای هر ردیف اعمال می 
-شود. اگر زیردرخواست ردیف های کمی را به عنوان خروجی برگرداند و درخواست بیرونی 
-ردیف های زیادی را شامل شود استفاده از IN بهترین روش است در غیر اینصورت بهتر است 
-از EXISTS استفاده شود
+4.22) Ú†Ø±Ø§ "Ø²ÙŠØ± Ø¯Ø±Ø®ÙˆØ§Ø³ØªÙ‡Ø§ÙŠÙŠ" ÙƒÙ‡ Ø§Ø² IN Ø§Ø³ØªÙØ§Ø¯Ù‡ 
+Ù…ÙŠâ€ŒÙƒÙ†Ù†Ø¯ ÙƒÙ†Ø¯ Ù‡Ø³ØªÙ†Ø¯ØŸ
+Ø¯Ø± Ù†Ø³Ø®Ù‡ Ù‡Ø§ÛŒ Ù‚Ø¨Ù„ Ø§Ø² 7.4 Ø¹Ù…Ù„ Ø§Ù„Ø­Ø§Ù‚ Ø²ÛŒØ± Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ùˆ 
+Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ø§ØµÙ„ÛŒ Ø¨Ù‡ Ø§ÛŒÙ† ØµÙˆØ±Øª Ø§Ù†Ø¬Ø§Ù… Ù…ÛŒ Ø´ÙˆØ¯ Ú©Ù‡ 
+Ù†ØªØ§ÛŒØ¬ Ø¨Ù‡ Ø¯Ø³Øª Ø¢Ù…Ø¯Ù‡ Ø§Ø² Ø²ÛŒØ± Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ø¨Ù‡ ØµÙˆØ±Øª 
+ØªØ±ØªÛŒØ¨ÛŒ Ø¨Ø±Ø§ÛŒ Ù‡Ø± Ø±Ø¯ÛŒÙ Ø§Ø¹Ù…Ø§Ù„ Ù…ÛŒ Ø´ÙˆØ¯. Ø§Ú¯Ø± 
+Ø²ÛŒØ±Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ø±Ø¯ÛŒÙ Ù‡Ø§ÛŒ Ú©Ù…ÛŒ Ø±Ø§ Ø¨Ù‡ Ø¹Ù†ÙˆØ§Ù† Ø®Ø±ÙˆØ¬ÛŒ 
+Ø¨Ø±Ú¯Ø±Ø¯Ø§Ù†Ø¯ Ùˆ Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ø¨ÛŒØ±ÙˆÙ†ÛŒ Ø±Ø¯ÛŒÙ Ù‡Ø§ÛŒ Ø²ÛŒØ§Ø¯ÛŒ Ø±Ø§ 
+Ø´Ø§Ù…Ù„ Ø´ÙˆØ¯ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² IN Ø¨Ù‡ØªØ±ÛŒÙ† Ø±ÙˆØ´ Ø§Ø³Øª Ø¯Ø± ØºÛŒØ± 
+Ø§ÛŒÙ†ØµÙˆØ±Øª Ø¨Ù‡ØªØ± Ø§Ø³Øª Ø§Ø² EXISTS Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø´ÙˆØ¯
     SELECT *
     FROM tab
     WHERE col IN (SELECT subcol FROM subtab);
-به:
+Ø¨Ù‡:
     SELECT *
     FROM tab
     WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
-برای اجرای سریع این درخواست باید برای ستون subcol نمایه ایجاد شده باشد.
-در نسخه های بعد از 7.4 IN برای الحاق از همان تکنیک پیچیده مورد استفاده در 
-دستورات معمولی استفاده می کند و بنابراین استفاده از آن نسبت به EXISTS ارجحیت 
-دارد.
-4.23) چگونه مي‌توانم يك الحاق خارجي (outer join) انجام دهم؟
-برای انجام الحاق خارجی به روش زیر عمل کنید:
+Ø¨Ø±Ø§ÛŒ Ø§Ø¬Ø±Ø§ÛŒ Ø³Ø±ÛŒØ¹ Ø§ÛŒÙ† Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ø¨Ø§ÛŒØ¯ Ø¨Ø±Ø§ÛŒ Ø³ØªÙˆÙ† 
+subcol Ù†Ù…Ø§ÛŒÙ‡ Ø§ÛŒØ¬Ø§Ø¯ Ø´Ø¯Ù‡ Ø¨Ø§Ø´Ø¯.
+Ø¯Ø± Ù†Ø³Ø®Ù‡ Ù‡Ø§ÛŒ Ø¨Ø¹Ø¯ Ø§Ø² 7.4 IN Ø¨Ø±Ø§ÛŒ Ø§Ù„Ø­Ø§Ù‚ Ø§Ø² Ù‡Ù…Ø§Ù† 
+ØªÚ©Ù†ÛŒÚ© Ù¾ÛŒÚ†ÛŒØ¯Ù‡ Ù…ÙˆØ±Ø¯ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø¯Ø± Ø¯Ø³ØªÙˆØ±Ø§Øª Ù…Ø¹Ù…ÙˆÙ„ÛŒ 
+Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÛŒ Ú©Ù†Ø¯ Ùˆ Ø¨Ù†Ø§Ø¨Ø±Ø§ÛŒÙ† Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² Ø¢Ù† Ù†Ø³Ø¨Øª 
+Ø¨Ù‡ EXISTS Ø§Ø±Ø¬Ø­ÛŒØª Ø¯Ø§Ø±Ø¯.
+4.23) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… ÙŠÙƒ Ø§Ù„Ø­Ø§Ù‚ Ø®Ø§Ø±Ø¬ÙŠ (outer join) 
+Ø§Ù†Ø¬Ø§Ù… Ø¯Ù‡Ù…ØŸ
+Ø¨Ø±Ø§ÛŒ Ø§Ù†Ø¬Ø§Ù… Ø§Ù„Ø­Ø§Ù‚ Ø®Ø§Ø±Ø¬ÛŒ Ø¨Ù‡ Ø±ÙˆØ´ Ø²ÛŒØ± Ø¹Ù…Ù„ Ú©Ù†ÛŒØ¯:
     SELECT *
     FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-یا
+ÛŒØ§
     SELECT *
     FROM t1 LEFT OUTER JOIN t2 USING (col);
-درخواستهای بالا t1.col , t2.col را به هم الحاق می کند و همچنین ردیفهای t1 که 
-نظیر آنها در t2 نبوده است را نیز برمی گرداند. اگر از RIGHT استفاده شود نتیجه بر 
-عکس است. یعنی ردیفهای t2 که نظیر آنها در t1 نباشد را نشان می دهد و اگر از FULL 
-استفاده شود نتیجه هم شامل ردیفهای t1 است  و هم شامل ردیفهای t2. استفاده از کلمه 
-OUTER اختیاری است چرا که این کلمه به طور ضمنی در دستورهای LEFT, RIGHT, FULL وجود 
-دارد.
-در نسخه های قبلی پایگاه داده می توانیم الحاق خارجی را به کمک دستورهای UNION, NOT 
-IN شبیه سازی کنیم. این کار در مثال زیر نشان داده شده است:
+Ø¯Ø±Ø®ÙˆØ§Ø³ØªÙ‡Ø§ÛŒ Ø¨Ø§Ù„Ø§ t1.col , t2.col Ø±Ø§ Ø¨Ù‡ Ù‡Ù… Ø§Ù„Ø­Ø§Ù‚ Ù…ÛŒ 
+Ú©Ù†Ø¯ Ùˆ Ù‡Ù…Ú†Ù†ÛŒÙ† Ø±Ø¯ÛŒÙÙ‡Ø§ÛŒ t1 Ú©Ù‡ Ù†Ø¸ÛŒØ± Ø¢Ù†Ù‡Ø§ Ø¯Ø± t2 
+Ù†Ø¨ÙˆØ¯Ù‡ Ø§Ø³Øª Ø±Ø§ Ù†ÛŒØ² Ø¨Ø±Ù…ÛŒ Ú¯Ø±Ø¯Ø§Ù†Ø¯. Ø§Ú¯Ø± Ø§Ø² RIGHT 
+Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø´ÙˆØ¯ Ù†ØªÛŒØ¬Ù‡ Ø¨Ø± Ø¹Ú©Ø³ Ø§Ø³Øª. ÛŒØ¹Ù†ÛŒ Ø±Ø¯ÛŒÙÙ‡Ø§ÛŒ t2 
+Ú©Ù‡ Ù†Ø¸ÛŒØ± Ø¢Ù†Ù‡Ø§ Ø¯Ø± t1 Ù†Ø¨Ø§Ø´Ø¯ Ø±Ø§ Ù†Ø´Ø§Ù† Ù…ÛŒ Ø¯Ù‡Ø¯ Ùˆ Ø§Ú¯Ø± 
+Ø§Ø² FULL Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø´ÙˆØ¯ Ù†ØªÛŒØ¬Ù‡ Ù‡Ù… Ø´Ø§Ù…Ù„ Ø±Ø¯ÛŒÙÙ‡Ø§ÛŒ t1 
+Ø§Ø³Øª  Ùˆ Ù‡Ù… Ø´Ø§Ù…Ù„ Ø±Ø¯ÛŒÙÙ‡Ø§ÛŒ t2. Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø§Ø² Ú©Ù„Ù…Ù‡ OUTER 
+Ø§Ø®ØªÛŒØ§Ø±ÛŒ Ø§Ø³Øª Ú†Ø±Ø§ Ú©Ù‡ Ø§ÛŒÙ† Ú©Ù„Ù…Ù‡ Ø¨Ù‡ Ø·ÙˆØ± Ø¶Ù…Ù†ÛŒ 
+Ø¯Ø³ØªÙˆØ±Ù‡Ø§ÛŒ LEFT, RIGHT, FULL ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯.
+Ø¯Ø± Ù†Ø³Ø®Ù‡ Ù‡Ø§ÛŒ Ù‚Ø¨Ù„ÛŒ Ù¾Ø§ÛŒÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ù…ÛŒ ØªÙˆØ§Ù†ÛŒÙ… Ø§Ù„Ø­Ø§Ù‚ 
+Ø®Ø§Ø±Ø¬ÛŒ Ø±Ø§ Ø¨Ù‡ Ú©Ù…Ú© Ø¯Ø³ØªÙˆØ±Ù‡Ø§ÛŒ UNION, NOT IN Ø´Ø¨ÛŒÙ‡ Ø³Ø§Ø²ÛŒ 
+Ú©Ù†ÛŒÙ…. Ø§ÛŒÙ† Ú©Ø§Ø± Ø¯Ø± Ù…Ø«Ø§Ù„ Ø²ÛŒØ± Ù†Ø´Ø§Ù† Ø¯Ø§Ø¯Ù‡ Ø´Ø¯Ù‡ Ø§Ø³Øª:
 
     SELECT tab1.col1, tab2.col2
     FROM tab1, tab2
@@ -819,59 +1174,83 @@ IN شبیه سازی کنیم. این کار در مثال زیر نشان دا
     FROM tab1
     WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
     ORDER BY col1
-4.24) چگونه مي‌توان درخواستهايي از چند پايگاه داده توليد كرد؟
-در حال حاضر این کار امکان پذیر نیست. PostgreSQL فقط امکان درخواست از پایگاه داده 
-ای را می دهد که در حال حاضر به آن متصل باشید و نمی‌توان به طور همزمان از دو 
-پایگاه داده استفاده کرد. البته یک برنامه کاربردی خود می تواند به طور همزمان دو  
-پایگاه داده را مورد استفاده قرار داده و نتایج را با هم ترکیب کند ولی نمی تواند 
-در یک درخواست به هر  دو پایگاه داده رجوع کند.
-4.25) چگونه خروجي يك تابع مي‌تواند  چند رديف يا ستون باشد؟
-در نسخه 7.3 خروجی یک تابع می تواند چند ردیف یا چند ستون باشد. برای دیدن  اطلاعات 
-بیشتر به سایت زیر مراجعه 
-کنید:http://techdocs.postgresql.org/guides/SetReturningFunctions  
-4.26) در توابع PL/PgSQL چرا نمي‌توان با اطمينان جداول موقت را ايجاد يا حذف كرد؟
-PL/PgSQL محتوای توابع را ذخیره (cache) می کند. یک اثر بد جانبی این کار آن است که 
-اگر در تابع از یک جدول موقت استفاده شود و بعداً آن جدول حذف و یک جدول جدید به 
-جای آن ایجاد شود، در فراخوانی مجدد  آن تابع، محتوای ذخیره شده تابع  هنوز به جدول 
-قدیمی اشاره می کند و بنابراین اجرای تابع با اشکال مواجه می شود. راه حل این مشکل 
-آن است که برای جداول موقت از دستور EXECUTE استفاده شود که این کار سبب می شود که 
-درخواست برای هر بار اجرا مجدداً پیمایش و تفسیر شود.
-4.27) چه گزينه‌هايي براي تكرار (replication) وجود دارد؟ 
+4.24) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù† Ø¯Ø±Ø®ÙˆØ§Ø³ØªÙ‡Ø§ÙŠÙŠ Ø§Ø² Ú†Ù†Ø¯ Ù¾Ø§ÙŠÚ¯Ø§Ù‡ 
+Ø¯Ø§Ø¯Ù‡ ØªÙˆÙ„ÙŠØ¯ ÙƒØ±Ø¯ØŸ
+Ø¯Ø± Ø­Ø§Ù„ Ø­Ø§Ø¶Ø± Ø§ÛŒÙ† Ú©Ø§Ø± Ø§Ù…Ú©Ø§Ù† Ù¾Ø°ÛŒØ± Ù†ÛŒØ³Øª. PostgreSQL 
+ÙÙ‚Ø· Ø§Ù…Ú©Ø§Ù† Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ø§Ø² Ù¾Ø§ÛŒÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ø§ÛŒ Ø±Ø§ Ù…ÛŒ 
+Ø¯Ù‡Ø¯ Ú©Ù‡ Ø¯Ø± Ø­Ø§Ù„ Ø­Ø§Ø¶Ø± Ø¨Ù‡ Ø¢Ù† Ù…ØªØµÙ„ Ø¨Ø§Ø´ÛŒØ¯ Ùˆ Ù†Ù…ÛŒ 
+ØªÙˆØ§Ù† Ø¨Ù‡ Ø·ÙˆØ± Ù‡Ù…Ø²Ù…Ø§Ù† Ø§Ø² Ø¯Ùˆ Ù¾Ø§ÛŒÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ø§Ø³ØªÙØ§Ø¯Ù‡ 
+Ú©Ø±Ø¯. Ø§Ù„Ø¨ØªÙ‡ ÛŒÚ© Ø¨Ø±Ù†Ø§Ù…Ù‡ Ú©Ø§Ø±Ø¨Ø±Ø¯ÛŒ Ø®ÙˆØ¯ Ù…ÛŒ ØªÙˆØ§Ù†Ø¯ Ø¨Ù‡ 
+Ø·ÙˆØ± Ù‡Ù…Ø²Ù…Ø§Ù† Ø¯Ùˆ  Ù¾Ø§ÛŒÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ø±Ø§ Ù…ÙˆØ±Ø¯ Ø§Ø³ØªÙØ§Ø¯Ù‡ 
+Ù‚Ø±Ø§Ø± Ø¯Ø§Ø¯Ù‡ Ùˆ Ù†ØªØ§ÛŒØ¬ Ø±Ø§ Ø¨Ø§ Ù‡Ù… ØªØ±Ú©ÛŒØ¨ Ú©Ù†Ø¯ ÙˆÙ„ÛŒ Ù†Ù…ÛŒ 
+ØªÙˆØ§Ù†Ø¯ Ø¯Ø± ÛŒÚ© Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ø¨Ù‡ Ù‡Ø±  Ø¯Ùˆ Ù¾Ø§ÛŒÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ 
+Ø±Ø¬ÙˆØ¹ Ú©Ù†Ø¯.
+4.25) Ú†Ú¯ÙˆÙ†Ù‡ Ø®Ø±ÙˆØ¬ÙŠ ÙŠÙƒ ØªØ§Ø¨Ø¹ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ø¯  Ú†Ù†Ø¯ Ø±Ø¯ÙŠÙ 
+ÙŠØ§ Ø³ØªÙˆÙ† Ø¨Ø§Ø´Ø¯ØŸ
+Ø¯Ø± Ù†Ø³Ø®Ù‡ 7.3 Ø®Ø±ÙˆØ¬ÛŒ ÛŒÚ© ØªØ§Ø¨Ø¹ Ù…ÛŒ ØªÙˆØ§Ù†Ø¯ Ú†Ù†Ø¯ Ø±Ø¯ÛŒÙ ÛŒØ§ 
+Ú†Ù†Ø¯ Ø³ØªÙˆÙ† Ø¨Ø§Ø´Ø¯. Ø¨Ø±Ø§ÛŒ Ø¯ÛŒØ¯Ù†  Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ø¨ÛŒØ´ØªØ± Ø¨Ù‡ 
+Ø³Ø§ÛŒØª Ø²ÛŒØ± Ù…Ø±Ø§Ø¬Ø¹Ù‡ 
+Ú©Ù†ÛŒØ¯:http://techdocs.postgresql.org/guides/SetReturningFunctions  
+4.26) Ø¯Ø± ØªÙˆØ§Ø¨Ø¹ PL/PgSQL Ú†Ø±Ø§ Ù†Ù…ÙŠâ€ŒØªÙˆØ§Ù† Ø¨Ø§ Ø§Ø·Ù…ÙŠÙ†Ø§Ù† 
+Ø¬Ø¯Ø§ÙˆÙ„ Ù…ÙˆÙ‚Øª Ø±Ø§ Ø§ÙŠØ¬Ø§Ø¯ ÙŠØ§ Ø­Ø°Ù ÙƒØ±Ø¯ØŸ
+PL/PgSQL Ù…Ø­ØªÙˆØ§ÛŒ ØªÙˆØ§Ø¨Ø¹ Ø±Ø§ Ø°Ø®ÛŒØ±Ù‡ (cache) Ù…ÛŒ Ú©Ù†Ø¯. ÛŒÚ© 
+Ø§Ø«Ø± Ø¨Ø¯ Ø¬Ø§Ù†Ø¨ÛŒ Ø§ÛŒÙ† Ú©Ø§Ø± Ø¢Ù† Ø§Ø³Øª Ú©Ù‡ Ø§Ú¯Ø± Ø¯Ø± ØªØ§Ø¨Ø¹ Ø§Ø² 
+ÛŒÚ© Ø¬Ø¯ÙˆÙ„ Ù…ÙˆÙ‚Øª Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø´ÙˆØ¯ Ùˆ Ø¨Ø¹Ø¯Ø§Ù‹ Ø¢Ù† Ø¬Ø¯ÙˆÙ„ Ø­Ø°Ù 
+Ùˆ ÛŒÚ© Ø¬Ø¯ÙˆÙ„ Ø¬Ø¯ÛŒØ¯ Ø¨Ù‡ Ø¬Ø§ÛŒ Ø¢Ù† Ø§ÛŒØ¬Ø§Ø¯ Ø´ÙˆØ¯ØŒ Ø¯Ø± 
+ÙØ±Ø§Ø®ÙˆØ§Ù†ÛŒ Ù…Ø¬Ø¯Ø¯  Ø¢Ù† ØªØ§Ø¨Ø¹ØŒ Ù…Ø­ØªÙˆØ§ÛŒ Ø°Ø®ÛŒØ±Ù‡ Ø´Ø¯Ù‡ 
+ØªØ§Ø¨Ø¹  Ù‡Ù†ÙˆØ² Ø¨Ù‡ Ø¬Ø¯ÙˆÙ„ Ù‚Ø¯ÛŒÙ…ÛŒ Ø§Ø´Ø§Ø±Ù‡ Ù…ÛŒ Ú©Ù†Ø¯ Ùˆ 
+Ø¨Ù†Ø§Ø¨Ø±Ø§ÛŒÙ† Ø§Ø¬Ø±Ø§ÛŒ ØªØ§Ø¨Ø¹ Ø¨Ø§ Ø§Ø´Ú©Ø§Ù„ Ù…ÙˆØ§Ø¬Ù‡ Ù…ÛŒ Ø´ÙˆØ¯. 
+Ø±Ø§Ù‡ Ø­Ù„ Ø§ÛŒÙ† Ù…Ø´Ú©Ù„ Ø¢Ù† Ø§Ø³Øª Ú©Ù‡ Ø¨Ø±Ø§ÛŒ Ø¬Ø¯Ø§ÙˆÙ„ Ù…ÙˆÙ‚Øª Ø§Ø² 
+Ø¯Ø³ØªÙˆØ± EXECUTE Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø´ÙˆØ¯ Ú©Ù‡ Ø§ÛŒÙ† Ú©Ø§Ø± Ø³Ø¨Ø¨ Ù…ÛŒ Ø´ÙˆØ¯ 
+Ú©Ù‡ Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ø¨Ø±Ø§ÛŒ Ù‡Ø± Ø¨Ø§Ø± Ø§Ø¬Ø±Ø§ Ù…Ø¬Ø¯Ø¯Ø§Ù‹ Ù¾ÛŒÙ…Ø§ÛŒØ´ Ùˆ 
+ØªÙØ³ÛŒØ± Ø´ÙˆØ¯.
+4.27) Ú†Ù‡ Ú¯Ø²ÙŠÙ†Ù‡â€ŒÙ‡Ø§ÙŠÙŠ Ø¨Ø±Ø§ÙŠ ØªÙƒØ±Ø§Ø± (replication) ÙˆØ¬ÙˆØ¯ 
+Ø¯Ø§Ø±Ø¯ØŸ 
 There are several master/slave replication options available. These allow only 
 the master to make database changes and the slave can only do database reads. 
 The bottom of http://gborg.PostgreSQL.org/genpage?replication_research lists 
 them. A multi-master replication solution is being worked on at 
 http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
-4.28) چه گزينه‌هايي براي رمزنگاري وجود دارد؟ 
-  contrib/pgcrypto شامل توابع رمزنگاری زیادی است که می توان از آنها در دستورات 
-  SQL استفاده کرد.
-  برای رمز کردن ارتباط بین client و server  پایگاه داده حتماً گزینه SSL را بر 
-  روی پایگاه داده فعال کنیم.
-  در نسخه 7.3 به بعد کلمات عبور کاربران به طور اتوماتیک به صورت رمز شده ذخیره می 
-  شود ولی در نسخه های قبلی باید گزینه PASSWORD_ENCRYPTION را در 
-  فایلpostgresql.conf فعال کنیم. 
-  می توان پایگاههای داده را روی یک فایل سیستم رمزشده نگاهداری کرد
+4.28) Ú†Ù‡ Ú¯Ø²ÙŠÙ†Ù‡â€ŒÙ‡Ø§ÙŠÙŠ Ø¨Ø±Ø§ÙŠ Ø±Ù…Ø²Ù†Ú¯Ø§Ø±ÙŠ ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯ØŸ 
+  contrib/pgcrypto Ø´Ø§Ù…Ù„ ØªÙˆØ§Ø¨Ø¹ Ø±Ù…Ø²Ù†Ú¯Ø§Ø±ÛŒ Ø²ÛŒØ§Ø¯ÛŒ Ø§Ø³Øª Ú©Ù‡ 
+  Ù…ÛŒ ØªÙˆØ§Ù† Ø§Ø² Ø¢Ù†Ù‡Ø§ Ø¯Ø± Ø¯Ø³ØªÙˆØ±Ø§Øª SQL Ø§Ø³ØªÙØ§Ø¯Ù‡ Ú©Ø±Ø¯.
+  Ø¨Ø±Ø§ÛŒ Ø±Ù…Ø² Ú©Ø±Ø¯Ù† Ø§Ø±ØªØ¨Ø§Ø· Ø¨ÛŒÙ† client Ùˆ server ØŒ Ù¾Ø§ÛŒÚ¯Ø§Ù‡ 
+  Ø¯Ø§Ø¯Ù‡ Ø­ØªÙ…Ø§Ù‹ Ú¯Ø²ÛŒÙ†Ù‡ SSL Ø±Ø§ Ø¨Ø± Ø±ÙˆÛŒ Ù¾Ø§ÛŒÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ 
+  ÙØ¹Ø§Ù„ Ú©Ù†ÛŒÙ….
+  Ø¯Ø± Ù†Ø³Ø®Ù‡ 7.3 Ø¨Ù‡ Ø¨Ø¹Ø¯ Ú©Ù„Ù…Ø§Øª Ø¹Ø¨ÙˆØ± Ú©Ø§Ø±Ø¨Ø±Ø§Ù† Ø¨Ù‡ Ø·ÙˆØ± 
+  Ø§ØªÙˆÙ…Ø§ØªÛŒÚ© Ø¨Ù‡ ØµÙˆØ±Øª Ø±Ù…Ø² Ø´Ø¯Ù‡ Ø°Ø®ÛŒØ±Ù‡ Ù…ÛŒ Ø´ÙˆØ¯ ÙˆÙ„ÛŒ 
+  Ø¯Ø± Ù†Ø³Ø®Ù‡ Ù‡Ø§ÛŒ Ù‚Ø¨Ù„ÛŒ Ø¨Ø§ÛŒØ¯ Ú¯Ø²ÛŒÙ†Ù‡ PASSWORD_ENCRYPTION  Ø¯Ø± 
+  ÙØ§ÛŒÙ„postgresql.conf ÙØ¹Ø§Ù„ Ú©Ù†ÛŒÙ…. 
+  Ù…ÛŒ ØªÙˆØ§Ù† Ù¾Ø§ÛŒÚ¯Ø§Ù‡Ù‡Ø§ÛŒ Ø¯Ø§Ø¯Ù‡ Ø±Ø§ Ø±ÙˆÛŒ ÛŒÚ© ÙØ§ÛŒÙ„ Ø³ÛŒØ³ØªÙ… 
+  Ø±Ù…Ø²Ø´Ø¯Ù‡ Ù†Ú¯Ø§Ù‡Ø¯Ø§Ø±ÛŒ Ú©Ø±Ø¯
 
 
 
 Extending PostgreSQL
-5.1) من يك تابع نوشته‌ام. چگونه آن را در psql اجرا كنم؟ چرا با اجراي آن core 
-dump مي‌گيرم؟
-دلایل مختلفی می تواند باعث بروز این مشکل شود. اما قبل از همه، تابع خود را به 
-صورت جدا تست کنید.
-5.2) چگونه مي‌توانم در توليد نوع‌ها و توابع جديد و جالب براي PostgreSQL‌ همكاري 
-و مشاركت داشته باشم؟
-کد خود را به گروه پستی pgsql-hackers   ارسال کنید.
-5.3)  چگونه مي‌توانم يك تابع به زبان C بنويسم كه خروجي آن يك ‌tuple  (چند تايي) 
-باشد؟
-در نسخه های 7.3 به بعد یک تابع می تواند یک جدول را به عنوان خروجی برگرداند. این 
-ویژگی در توابعی که به زبانهای C و PL/PgSQL نوشته می‌شوند به طور کامل وجود دارد. 
-راهنما برنامه نویسان را مطالعه کنید. یک مثال از نحوه برگرداندن یک جدول به عنوان 
-خروجی در contrib/tablefunc آمده است.
-5.4) من يك فايل منبع را عوض كرده ام چرا در عمليات كامپيل مجدد آن، تغيير ديده 
-نمي‌شود؟
-Makefile برای فایلهای include شده وابستگیها را به درستی نشان نمی دهد. برای 
-اطمینان از اینکه فایلی که عوض کرده اید حتماً دوباره کامپیل می‌شود دستور make 
-clean را اجرا کنید. اگر از کامپیلر gcc استفاده می کنید می توانید از گزینه 
-enable-depend-- در موقع اجرای برنامه configure استفاده کنید این گزینه باعث می 
-شود که وابستگیها به طور اتوماتیک تولید شود.
\ No newline at end of file
+5.1) Ù…Ù† ÙŠÙƒ ØªØ§Ø¨Ø¹ Ù†ÙˆØ´ØªÙ‡â€ŒØ§Ù…. Ú†Ú¯ÙˆÙ†Ù‡ Ø¢Ù† Ø±Ø§ Ø¯Ø± psql 
+Ø§Ø¬Ø±Ø§ ÙƒÙ†Ù…ØŸ Ú†Ø±Ø§ Ø¨Ø§ Ø§Ø¬Ø±Ø§ÙŠ Ø¢Ù† core dump Ù…ÙŠâ€ŒÚ¯ÙŠØ±Ù…ØŸ
+Ø¯Ù„Ø§ÛŒÙ„ Ù…Ø®ØªÙ„ÙÛŒ Ù…ÛŒ ØªÙˆØ§Ù†Ø¯ Ø¨Ø§Ø¹Ø« Ø¨Ø±ÙˆØ² Ø§ÛŒÙ† Ù…Ø´Ú©Ù„ 
+Ø´ÙˆØ¯. Ø§Ù…Ø§ Ù‚Ø¨Ù„ Ø§Ø² Ù‡Ù…Ù‡ ØªØ§Ø¨Ø¹ Ø®ÙˆØ¯ Ø±Ø§ Ø¨Ù‡ ØµÙˆØ±Øª Ø¬Ø¯Ø§ 
+ØªØ³Øª Ú©Ù†ÛŒØ¯.
+5.2) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… Ø¯Ø± ØªÙˆÙ„ÙŠØ¯ Ù†ÙˆØ¹â€ŒÙ‡Ø§ Ùˆ ØªÙˆØ§Ø¨Ø¹ 
+Ø¬Ø¯ÙŠØ¯ Ùˆ Ø¬Ø§Ù„Ø¨ Ø¨Ø±Ø§ÙŠ PostgreSQLâ€Œ Ù‡Ù…ÙƒØ§Ø±ÙŠ Ùˆ Ù…Ø´Ø§Ø±ÙƒØª 
+Ø¯Ø§Ø´ØªÙ‡ Ø¨Ø§Ø´Ù…ØŸ
+Ú©Ø¯ Ø®ÙˆØ¯ Ø±Ø§ Ø¨Ù‡ Ú¯Ø±ÙˆÙ‡ Ù¾Ø³ØªÛŒ pgsql-hackers   Ø§Ø±Ø³Ø§Ù„ Ú©Ù†ÛŒØ¯.
+5.3)  Ú†Ú¯ÙˆÙ†Ù‡ Ù…ÙŠâ€ŒØªÙˆØ§Ù†Ù… ÙŠÙƒ ØªØ§Ø¨Ø¹ Ø¨Ù‡ Ø²Ø¨Ø§Ù† C Ø¨Ù†ÙˆÙŠØ³Ù… 
+ÙƒÙ‡ Ø®Ø±ÙˆØ¬ÙŠ Ø¢Ù† ÙŠÙƒ â€Œtuple  (Ú†Ù†Ø¯ ØªØ§ÙŠÙŠ) Ø¨Ø§Ø´Ø¯ØŸ
+Ø¯Ø± Ù†Ø³Ø®Ù‡ Ù‡Ø§ÛŒ 7.3 Ø¨Ù‡ Ø¨Ø¹Ø¯ ÛŒÚ© ØªØ§Ø¨Ø¹ Ù…ÛŒ ØªÙˆØ§Ù†Ø¯ ÛŒÚ© Ø¬Ø¯ÙˆÙ„ 
+Ø±Ø§ Ø¨Ù‡ Ø¹Ù†ÙˆØ§Ù† Ø®Ø±ÙˆØ¬ÛŒ Ø¨Ø±Ú¯Ø±Ø¯Ø§Ù†Ø¯. Ø§ÛŒÙ† ÙˆÛŒÚ˜Ú¯ÛŒ Ø¯Ø± 
+ØªÙˆØ§Ø¨Ø¹ÛŒ Ú©Ù‡ Ø¨Ù‡ Ø²Ø¨Ø§Ù†Ù‡Ø§ÛŒ C Ùˆ PL/PgSQL Ù†ÙˆØ´ØªÙ‡ Ù…ÛŒ Ø´ÙˆÙ†Ø¯ 
+Ø¨Ù‡ Ø·ÙˆØ± Ú©Ø§Ù…Ù„ ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯. Ø±Ø§Ù‡Ù†Ù…Ø§ Ø¨Ø±Ù†Ø§Ù…Ù‡ Ù†ÙˆÛŒØ³Ø§Ù† 
+Ø±Ø§ Ù…Ø·Ø§Ù„Ø¹Ù‡ Ú©Ù†ÛŒØ¯. ÛŒÚ© Ù…Ø«Ø§Ù„ Ø§Ø² Ù†Ø­ÙˆÙ‡ Ø¨Ø±Ú¯Ø±Ø¯Ø§Ù†Ø¯Ù† ÛŒÚ© 
+Ø¬Ø¯ÙˆÙ„ Ø¨Ù‡ Ø¹Ù†ÙˆØ§Ù† Ø®Ø±ÙˆØ¬ÛŒ Ø¯Ø± contrib/tablefunc Ø¢Ù…Ø¯Ù‡ Ø§Ø³Øª.
+5.4) Ù…Ù† ÙŠÙƒ ÙØ§ÙŠÙ„ Ù…Ù†Ø¨Ø¹ Ø±Ø§ Ø¹ÙˆØ¶ ÙƒØ±Ø¯Ù‡ Ø§Ù… Ú†Ø±Ø§ Ø¯Ø± 
+Ø¹Ù…Ù„ÙŠØ§Øª ÙƒØ§Ù…Ù¾ÙŠÙ„ Ù…Ø¬Ø¯Ø¯ Ø¢Ù† ØªØºÙŠÙŠØ± Ø¯ÙŠØ¯Ù‡ Ù†Ù…ÙŠâ€ŒØ´ÙˆØ¯ØŸ
+Makefile Ø¨Ø±Ø§ÛŒ ÙØ§ÛŒÙ„Ù‡Ø§ÛŒ include Ø´Ø¯Ù‡ ÙˆØ§Ø¨Ø³ØªÚ¯ÛŒÙ‡Ø§ Ø±Ø§ Ø¨Ù‡ 
+Ø¯Ø±Ø³ØªÛŒ Ù†Ø´Ø§Ù† Ù†Ù…ÛŒ Ø¯Ù‡Ø¯. Ø¨Ø±Ø§ÛŒ Ø§Ø·Ù…ÛŒÙ†Ø§Ù† Ø§Ø² Ø§ÛŒÙ†Ú©Ù‡ 
+ÙØ§ÛŒÙ„ÛŒ Ú©Ù‡ Ø¹ÙˆØ¶ Ú©Ø±Ø¯Ù‡ Ø§ÛŒØ¯ Ø­ØªÙ…Ø§Ù‹ Ø¯ÙˆØ¨Ø§Ø±Ù‡ Ú©Ø§Ù…Ù¾ÛŒÙ„ Ù…ÛŒ 
+Ø´ÙˆØ¯ Ø¯Ø³ØªÙˆØ± make clean Ø±Ø§ Ø§Ø¬Ø±Ø§ Ú©Ù†ÛŒØ¯. Ø§Ú¯Ø± Ø§Ø² Ú©Ø§Ù…Ù¾ÛŒÙ„Ø± 
+gcc Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÛŒ Ú©Ù†ÛŒØ¯ Ù…ÛŒ ØªÙˆØ§Ù†ÛŒØ¯ Ø§Ø² Ú¯Ø²ÛŒÙ†Ù‡ 
+enable-depend-- Ø¯Ø± Ù…ÙˆÙ‚Ø¹ Ø§Ø¬Ø±Ø§ÛŒ Ø¨Ø±Ù†Ø§Ù…Ù‡ configure Ø§Ø³ØªÙØ§Ø¯Ù‡ 
+Ú©Ù†ÛŒØ¯ Ø§ÛŒÙ† Ú¯Ø²ÛŒÙ†Ù‡ Ø¨Ø§Ø¹Ø« Ù…ÛŒ Ø´ÙˆØ¯ Ú©Ù‡ ÙˆØ§Ø¨Ø³ØªÚ¯ÛŒÙ‡Ø§ Ø¨Ù‡ 
+Ø·ÙˆØ± Ø§ØªÙˆÙ…Ø§ØªÛŒÚ© ØªÙˆÙ„ÛŒØ¯ Ø´ÙˆØ¯.
\ No newline at end of file
diff --git a/doc/FAQ_french b/doc/FAQ_french
index 1423aee..1b224e8 100644
--- a/doc/FAQ_french
+++ b/doc/FAQ_french
@@ -171,7 +171,7 @@
    
    PostgreSQL Data Base Management System
    
-   Portions copyright (c) 1996-2004, PostgreSQL Global Development Group
+   Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
    Portions Copyright (c) 1994-6 Regents of the University of California
    
    Permission to use, copy, modify, and distribute this software and its
@@ -760,8 +760,7 @@
    Pour changer le type de donn�es d'une colonne, faites :
     BEGIN;
     ALTER TABLE table ADD COLUMN nouvelle_colonne nouveau_type_de_donnees;
-    UPDATE table SET nouvelle_colonne = CAST(ancienne_colonne AS nouveau_type_d
-e_donnees);
+    UPDATE table SET nouvelle_colonne = CAST(ancienne_colonne AS nouveau_type_de_donnees);
     ALTER TABLE table DROP COLUMN ancienne_colonne;
     COMMIT;
 
@@ -772,14 +771,12 @@ e_donnees);
     donn�es ?
     
    Les limites sont :
-    Taille maximum pour une base de donn�es     illimit�e (il existe des bases
-de 32 To)
+    Taille maximum pour une base de donn�es     illimit�e (il existe des basesde 32 To)
     Taille maximum pour une table               32 To
     Taille maximum pour une ligne               1,6 To
     Taille maximum pour un champ                1 Go
     Nombre maximum de lignes dans une table     illimit�
-    Nombre maximum de colonnes dans une table   250-1600, selon le type de colo
-nnes
+    Nombre maximum de colonnes dans une table   250-1600, selon le type de colonnes
     Nombre maximum d'index sur une table        illimit�
 
    Bien s�r, ces valeurs ne sont pas vraiment illimit�e, elles sont
@@ -813,21 +810,17 @@ nnes
    ----------------------------------------
     60 octets par ligne
 
-   La taille des pages de donn�es dans PostgreSQL est de 8192 octets (8 KO), do
-nc :
+   La taille des pages de donn�es dans PostgreSQL est de 8192 octets (8 KO), donc :
 
    8192 octets par page
-   ----------------------   = 136 lignes par page de base de donn�es (arrondi �
- l'entier inf�rieur)
+   ----------------------   = 136 lignes par page de base de donn�es (arrondi � l'entier inf�rieur)
      60 octets par ligne
 
    100000 lignes de donn�es
-   -------------------------  =  735 pages de base de donn�es (arrondi � l'enti
-er sup�rieur)
+   -------------------------  =  735 pages de base de donn�es (arrondi � l'entier sup�rieur)
       128 lignes par page
 
-735 pages de base de donn�es * 8192 octets par page  =  6 021 120 octets (6,4 M
-o)
+735 pages de base de donn�es * 8192 octets par page  =  6 021 120 octets (6,4 Mo)
 
    Les index utilisent moins d'espace, mais ils contiennent les donn�es
    index�es, ils peuvent donc �galement �tre grands.
@@ -1025,8 +1018,7 @@ BYTEA           bytea           tableau d'octets (accepte les octets nuls)
    table d'exemple de la section 4.15.1, un exemple dans un
    pseudo-langage ressemblerait � ceci :
     nouvelle_id = execute("SELECT nextval('personne_id_seq')");
-    execute("INSERT INTO personne (id, nom) VALUES (nouvelle_id, 'Blaise Pascal
-')");
+    execute("INSERT INTO personne (id, nom) VALUES (nouvelle_id, 'Blaise Pascal')");
 
    Vous pourriez ensuite utiliser la nouvelle valeur stock�e dans
    nouvelle_id avec d'autres requ�tes (c'est-�-dire en tant que cl�
@@ -1085,8 +1077,7 @@ BYTEA           bytea           tableau d'octets (accepte les octets nuls)
    en quelque chose d'autre ou si vous voulez faire une copie de la table
    avec les OID originaux, il n'y a pas de raisons pour ne pas le faire :
     CREATE TABLE nouvelle_table (macolonne int);
-    SELECT oid AS ancienne_oid, macolonne INTO table_temporaire FROM ancienne_t
-able;
+    SELECT oid AS ancienne_oid, macolonne INTO table_temporaire FROM ancienne_table;
     COPY table_temporaire FROM '/tmp/tablepg';
     COPY nouvelle_table WITH OIDS FROM '/tmp/tablepg';
     DROP TABLE table_temporaire;
@@ -1178,8 +1169,7 @@ CREATE TABLE test (x int, heuremodif timestamp DEFAULT CURRENT_TIMESTAMP );
    to:
     SELECT *
     FROM table
-    WHERE EXISTS (SELECT souscolonne FROM soustable WHERE souscolonne = colonne
-);
+    WHERE EXISTS (SELECT souscolonne FROM soustable WHERE souscolonne = colonne);
 
    Pour que ceci soit rapide, souscolonne doit �tre une colonne index�e.
    
diff --git a/doc/FAQ_german b/doc/FAQ_german
index 4937522..a650444 100644
--- a/doc/FAQ_german
+++ b/doc/FAQ_german
@@ -313,9 +313,9 @@
     1.9) Wie erfahre ich von bekannten Bugs oder fehlenden Features?
     
    PostgreSQL unterst�tzt eine erweiterte Teilmenge von SQL-92. Siehe
-   unsere TODO-Liste unter http://developer.postgresql.org/todo.php f�r
-   eine Auflistung der bekannten Bugs, fehlenden Features und zuk�nftigen
-   Pl�ne.
+   unsere TODO-Liste unter http://www.postgresql.org/docs/faqs.TODO.html
+   f�r eine Auflistung der bekannten Bugs, fehlenden Features und
+   zuk�nftigen Pl�ne.
    
     1.10) Wie kann ich SQL lernen?
     
@@ -643,14 +643,12 @@
    
    Wenn der postmaster hingegen l�uft, f�hren Sie psql in einem Fenster
    aus, ermitteln Sie die Prozessnummer (PID) des postgres-Prozesses, der
-   von psql verwendet wird (mit
-SELECT pg_backend_pid()
-
-   ). Binden Sie einen Debugger an diese PID und f�hren Sie Abfragen von
-   psql aus. Wenn Sie den postgres-Serverstart analysieren wollen, setzen
-   Sie die Umgebungsvariable PGOPTIONS="-W n", und starten Sie dann psql.
-   Dies verz�gert den Start um n Sekunden, damit Sie einen Debugger an
-   den Prozess binden und ggf. Breakpoints setzen k�nnen, bevor die
+   von psql verwendet wird (mit SELECT pg_backend_pid()). Binden Sie
+   einen Debugger an diese PID und f�hren Sie Abfragen von psql aus. Wenn
+   Sie den postgres-Serverstart analysieren wollen, setzen Sie die
+   Umgebungsvariable PGOPTIONS="-W n", und starten Sie dann psql. Dies
+   verz�gert den Start um n Sekunden, damit Sie einen Debugger an den
+   Prozess binden und ggf. Breakpoints setzen k�nnen, bevor die
    Startsequenz begonnen wird.
    
    Es gibt verschiedene Einstellungen (die log_*-Gruppe), die diverse
diff --git a/doc/FAQ_polish b/doc/FAQ_polish
index f989020..b2be9d9 100644
--- a/doc/FAQ_polish
+++ b/doc/FAQ_polish
@@ -165,7 +165,7 @@
    
    PostgreSQL Data Base Management System
    
-   Portions copyright (c) 1996-2002, PostgreSQL Global Development Group
+   Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
    Portions Copyright (c) 1994-6 Regents of the University of California
    
    Permission to use, copy, modify, and distribute this software and its
@@ -747,8 +747,7 @@
    DROP COLUMN. We wczesniejszych wersjach mozesz zrobic tak:
          BEGIN;
          LOCAL TABLE old_table;
-    SELECT ...  -- wybierz wszystkie kolumny poza ta jedna kt�rej chcesz sie po
-zbyc
+    SELECT ...  -- wybierz wszystkie kolumny poza ta jedna kt�rej chcesz sie pozbyc
     INTO TABLE new_table
     FROM old_table;
     DROP TABLE old_table;
@@ -770,8 +769,7 @@ zbyc
     Maksymalny rozmiar dla rzedu?            1.6 TB
     Maksymalny rozmiar pola?                 1 GB
     Maksymalna liczba rzed�w w tabeli?       nieograniczona
-    Maksymalna liczba kolumn w tabeli?       250-1600 w zalezonosci od typ�w ko
-lumn
+    Maksymalna liczba kolumn w tabeli?       250-1600 w zalezonosci od typ�w kolumn
     Makasymalna liczba indeks�w na tabeli?   nieograniczona
 
    Oczywiscie "nieograniczony" nie jest prawda tak do konca, istnieja
@@ -807,8 +805,7 @@ lumn
         Strona danych w PostgreSQL zajmuje 8192 bajt�w (8 KB), wiec:
 
    8192 bajt�w na strone
-   ---------------------   =  128 rzed�w na jedna strone w bazie (zaokraglone w
- d�l/)
+   ---------------------   =  128 rzed�w na jedna strone w bazie (zaokraglone w d�l/)
      64 bajt�w na rzad
 
    100000 rzed�w danych
@@ -858,6 +855,7 @@ lumn
    zl/aczen (join). Sekwencyjne przeszukiwanie po kt�rym nastepuje
    sortowanie jest zazwyczaj szybsze nie wyszukiwanie za pomoca indeksu
    na duzej tabeli.
+   
    Jakkolwiek LIMIT w pol/aczeniu z ORDER BY czesto bedzie wykorzystywal/
    indeksy poniewaz jedynie mal/a czesc z tabeli jest zwracana. W
    rzeczywistosci, chociaz MAX() i MIN() nie uzywaja indeks�w, mozliwe
@@ -952,13 +950,10 @@ lumn
     
 Type            Nazwa wewnetrzna   Uwagi
 --------------------------------------------------
-VARCHAR(n)      varchar            rozmiar okresla maksymalna dl/ugosc, nie ma
-tutaj wypel/niania
-CHAR(n)         bpchar             wypel/niane pustymi znakami do podanej dl/ug
-osci
+VARCHAR(n)      varchar            rozmiar okresla maksymalna dl/ugosc, nie matutaj wypel/niania
+CHAR(n)         bpchar             wypel/niane pustymi znakami do podanej dl/ugosci
 TEXT            text               bez limitu na dl/ugosc l/ancucha
-BYTEA           bytea              zmiennej dl/ugosci tablica bajt�w (null-byte
- safe)
+BYTEA           bytea              zmiennej dl/ugosci tablica bajt�w (null-byte safe)
 "char"          char                      1 znak
 
    Jesli bedziesz przegladac katalogi systemowe lub komunikaty o bl/edach
@@ -970,6 +965,7 @@ BYTEA           bytea              zmiennej dl/ugosci tablica bajt
    zadeklarowany rozmiar. Te typy takze podlegaja kompresji lub moga byc
    przechowywane out-of-line jako TOAST, wiec faktyczne zuzycie miejsca
    na dysku moze byc mniejsze niz oczekiwane.
+   
    VARCHAR(n) jest najodpowiedniejszy do przechowywania l/ancuch�w o
    r�znej dl/ugosci ale okresla on maksymalna jego dl/ugosc. TEXT jest
    najlepszy dla l/ancuch�w o dowolnej dl/ugosci, nie przekraczajacej
@@ -1229,13 +1225,14 @@ SELECT *
    
     4.27) Jakie sa mozliwosci replikacji w PostgreSQL?
     
-    Jest kilka opcji aby stosowac replikacje typu master/slave. Ten typ pozwala
-    jedynie masterowi na dokonywanie zmian w bazie danych, a slave moze jedynie
-    te zmiany odczytywac. Na stronie
-    http://gborg.PostgreSQL.org/genpage?replication_research znajduje sie ich
-    lista. Replikacja typu multi-master jest w trakcie prac, opis projektu
-    znajduje sie pod adresem:
-    http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
+   Jest kilka opcji aby stosowac replikacje typu master/slave. Ten typ
+   pozwala jedynie masterowi na dokonywanie zmian w bazie danych, a slave
+   moze jedynie te zmiany odczytywac. Na stronie
+   http://gborg.PostgreSQL.org/genpage?replication_research znajduje sie
+   ich lista. Replikacja typu multi-master jest w trakcie prac, opis
+   projektu znajduje sie pod adresem:
+   http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
+   
     4.28) Jakie mozliwosci szyfrowania oferuje PostgreSQL?
     
      * contrib/pgcrypto zawiera wiele funkcji za pomoca, kt�rych mozemy
@@ -1257,22 +1254,26 @@ SELECT *
     5.1) Napisal/em wl/asna funkcje. Kiedy uzyje jej w psql, program zrzuca
     pamiec (dump core)?
     
-    Problem moze byc spowodowany przez bardzo wiele rzeczy. Spr�buj najpierw
-    przetestowac Twoja funkcje w samodzielnie dzial/ajacym programie.
+   Problem moze byc spowodowany przez bardzo wiele rzeczy. Spr�buj
+   najpierw przetestowac Twoja funkcje w samodzielnie dzial/ajacym
+   programie.
+   
     5.2) Jak moge dodac/zgl/osic nowe typy czy funkcje do PostgreSQL?
     
-    Wyslij Twoje propozycje na liste mailowa pgsql-hackers, wtedy
-    prawdopodobnie Tw�j kod znajdzie sie w katalogu contrib/.
+   Wyslij Twoje propozycje na liste mailowa pgsql-hackers, wtedy
+   prawdopodobnie Tw�j kod znajdzie sie w katalogu contrib/.
+   
     5.3) Jak napisac funkcje C zwracajaca krotke (tuple)?
     
-    W wersjach PostgreSQL od numeru 7.3, funckje zwracajace tabele sa w pelni
-    wspierane w C, PL/PgSQL i SQL. Sprawdz w Programmer's Guide aby uzyskac
-    wiecej informacji. Przykl/ad funkcji napisanej w C zwracajacej tabele
-    zostal/ umieszczony w contrib/tablefunc.
+   W wersjach PostgreSQL od numeru 7.3, funckje zwracajace tabele sa w
+   pelni wspierane w C, PL/PgSQL i SQL. Sprawdz w Programmer's Guide aby
+   uzyskac wiecej informacji. Przykl/ad funkcji napisanej w C zwracajacej
+   tabele zostal/ umieszczony w contrib/tablefunc.
+   
     5.4) Zmienil/em plik zr�dl/owy. Dlaczego po rekompilacji nie widac zmiany?
     
-    Pliki Makefiles nie maja dorzuconych odpowiednich zaleznosci dla plik�w
-    nagl/�wkowych (include files). Wykonaj najpierw make clean, a nastepnie
-    ponownie make. Jesli uzywasz GCC mozesz uzyc opcji --enable-depend przy
-    wykonywaniu configure aby kompilator m�gl/ okreslic zaleznosci
-    samodzielnie.
+   Pliki Makefiles nie maja dorzuconych odpowiednich zaleznosci dla
+   plik�w nagl/�wkowych (include files). Wykonaj najpierw make clean, a
+   nastepnie ponownie make. Jesli uzywasz GCC mozesz uzyc opcji
+   --enable-depend przy wykonywaniu configure aby kompilator m�gl/
+   okreslic zaleznosci samodzielnie.
diff --git a/doc/FAQ_turkish b/doc/FAQ_turkish
index 47a3188..50634d0 100644
--- a/doc/FAQ_turkish
+++ b/doc/FAQ_turkish
@@ -1,480 +1,690 @@
-PostgreSQL i�in S�k�a Sorulan Sorular (SSS)
-
-Son g�ncelleme : 15 Kas�m 2004 Pazartesi - 14:47:20
-
-Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
-
-�evirenler : Devrim G�nd�z (devrim@tdmsoft.com)
-Nicolai Tufar (ntufar@tdmsoft.com)
-Volkan YAZICI (volkany@phreaker.net)
-
-Bu belgenin en g�ncel hali, http://www.PostgreSQL.org/docs/faqs/FAQ_turkish.html ve 
-http://www.gunduz.org/seminer/pg/FAQ_turkish.html adreslerinde g�r�lebilir.
-
-Platforma �zel sorular�n�z, http://www.PostgreSQL.org/docs/index.html adresinde yan�tlan�r.
-Genel Sorular
-1.1) PostgreSQL nedir? Nas�l okunur?
-1.2) PostgreSQL'in haklar� nedir?
-1.3) PostgreSQL, hangi Unix platformlar�nda �al���r?
-1.4) Hangi Unix olmayan uyarlamalar� bulunmaktad�r?
-1.5) PostgreSQL'i nereden indirebilirim?
-1.6) Deste�i nereden alabilirim?
-1.7) En son s�r�m� nedir?
-1.8) Hangi belgelere ula�abilirim?
-1.9) Bilinen hatalar ya da eksik �zelliklere nereden ulasabilirim?
-1.10) Nas�l SQL ��renebilirim?
-1.11) PostgreSQL 2000 y�l�na uyumlu mudur?
-1.12) Geli�tirme tak�m�na nas�l kat�labilirim??
-1.13) Bir hata raporunu nas�l g�nderebilirim?
-1.14) PostgreSQL, di�er VTYS(DBMS) lerle nas�l kar��la�t�r�labilir?
-1.15) PostgreSQL'e maddi a��dan nas�l destek olabilirim?
-Kullan�c�/istemci Sorular�
-2.1) PostgreSQL i�in ODBC s�r�c�leri var m�?
-2.2) PostgreSQL'i web sayfalar�nda kullanabilmek i�in hangi ara�lar bulunmaktad�r?
-2.3) PostgreSQL'in grafik kullan�c� arabirimi var m�d�r?
-2.4) PostgreSQL ile ileti�imi kurabilmek i�in hangi dilleri kullanabilirim?
-Y�netimsel Sorular
-3.1) PostgreSQL'i /usr/local/pgsql dizininden ba�ka dizinlere nas�l kurabilirim?
-3.2) Postmaster'� ba�latt���mda Bad System Call ya da core dumped mesaj� al�yorum. Neden?
-3.3) Postmaster'� ba�latt���mda, IpcMemoryCreate hatas� al�yorum. Neden?
-3.4) Postmaster'�, ba�latt���mda, IpcSemaphoreCreate hatas� al�yorum. Neden?
-3.5) Di�er bilgisayarlar�n benim PostgreSQL veritaban� sunucuma ba�lant�lar�n� nas�l kontrol edebilirim?
-3.6) Veritaban� motorunu daha iyi ba�ar�m icin nas�l ayarlayabilirim?
-3.7) Hangi hata ay�klama �zellikleri bulunmaktad�r?
-3.8) Ba�lanmaya �al���rken, neden "Sorry, too many clients" hatas�n� al�yorum. Neden?
-3.9) pgsql_tmpdizinin i�indeki dosyalar nelerdir?
-3.10) PostgreSQL s�r�mlerini y�kseltmek i�in neden bir dump/reload i�lemi ger�ekle�tirmek zorunday�m?
-3.11) Nas�l bir donan�m kullanmal�y�m?br>
-��letimsel Sorular
-4.1) Binary cursor ve normal cursor aras�ndaki fark ned�r?
-4.2) Sorgunun sadece ilk birka� sat�r�n� nas�l SELECT edebilirim?
-4.3) psql'in i�inde g�rd�g�m tablolar�n ya da di�er �eylerin listesini nas�l alabilirim?
-4.4) Bir tablodan bir kolonu nas�l kald�rabilirim?
-4.5) Bir sat�r, tablo ve veritaban� i�in en fazla b�y�kl�k nedir?
-4.6) Tipik bir metin dosyas�ndaki veriyi saklamak i�in ne kadar disk alan� gereklidir?
-4.7) Veritaban�nda hangi tablo ya da index'lerin tan�mland���n� nas�l g�rebilirim?
-4.8) Sorgular�m cok yava�, ya da index'lerimi kullanm�yorlar. Neden?
-4.9) Query-optimizer'�n sorgular�m� nas�l de�erlendirdi�ini, i�leme soktu�unu nas�l g�rebilirim?
-4.10) R-tree index nedir?
-4.11) Genetic Query Optimizer nedir?
-4.12) D�zenli ifade (Regular Expression) aramalar�n� ve b�y�k/k���k harfe duyars�z aramalar� nas�l yapabilirim? Bu 
-b�y�k/k���k harfe duyarl� aramalar i�in index'i nas�l kullanabilirim?
-4.13) Bir sorguda, bir alan�n NULL oldu�unu nas�l ortaya ��karabilirim?
-4.14) �esitli karakter tipleri aras�ndaki farklar nelerdir?
-4.15.1) Nas�l serial/otomatik artan (auto-incrementing) bir alan yaratabilirim?
-4.15.2) Serial giri�inin de�erini nas�l alabilirim?
-4.15.3) currval() ve nextval() di�er kullan�c�lara sorun yaratmaz m�?
-4.15.4) Neden sequence say�lar�n transaction i�leminin iptalinden sonra yeniden kullan�l�yor? Neden sequence/SERIAL 
-kolonumdaki say�larda atlamalar oluyor?
-4.16) OID nedir? TID nedir?
-4.17) PostgreSQL' de kullan�lan baz� terimlerin anlamlar� nelerdir?
-4.18) Neden "ERROR: Memory exhausted in AllocSetAlloc()" hatas�n� al�yorum?
-4.19) Hangi PostgreSQL s�r�m�n� �al�st�rd���m� nas�l g�rebilirim?
-4.20) Neden large-object i�lemlerim, "invalid large obj descriptor" hatas�n� veriyor?
-4.21) �u andaki zaman� �ntan�ml� de�er olarak kabul eden kolonu nas�l yarat�r�m?
-4.22) Neden IN kullanan subquery'lerim �ok yava�?
-4.23) Outer join i�lemini nas�l yapabilirim?
-4.24) Ayn� anda birden fazla veritaban�nda nas�l i�lem yapabilirim?
-4.25) Bir fonksiyondan nas�l �oklu sat�r ya da kolon d�nd�rebilirim?
-4.26) Neden Pl/PgSQL fonksiyonlar� i�inden g�venli bir �ekilde tablo yaratma/kald�rma i�lemlerini yapam�yoruz?
-4.27) Hangi �ifreleme se�enekleri bulunmaktad�r?
-PostgreSQL �zelliklerini Geni�letmek
-5.1) Kullan�c�-tan�ml� bir fonksiyon yazd�m. psql'de �al��t�rd���m zaman neden core dump ediyor?
-5.2) PostgreSQL'e nas�l yeni veri tipleri/fonksiyonlar ekleyebilirim?
-5.3) Bir tuple d�nd�rmek i�in bir C fonksiyonunu nas�l yazar�m?
-5.4) Bir kaynak dosyas�nda de�i�iklik yapt�m. Yeniden derlememe ra�men de�i�iklik ge�erli olmuyor. Neden?
-Genel Sorular
-1.1) PostgreSQL nedir? Nas�l okunur?
-
-PostgreSQL, Post-Gres-Q-L. olarak okunur
-
-PostgreSQL, yeni-nesil VTYS ara�t�rma prototipi olan POSTGRES veritaban� y�netim sisteminin geli�tirilmesidir. 
-POSTGRES'in zengin veri tiplerini ve g��l� veri modelini tutarken, SQL'in geli�tirilmi� alt k�mesi olan PostQuel dilini 
-kullan�r. PostgreSQL �cretsizdir ve kaynak kodu a��k da��t�l�r.
-
-PostgreSQL, PostgreSQL geli�tirme listesine �ye olan bir Internet geli�tirici tak�m� taraf�ndan geli�tirilir. �u andaki 
-koordinat�r, Marc G. Fournier (scrappy@PostgreSQL.org). (Bu tak�ma nas�l kat�lacag�n�z� ��renmek i�in 1.6 numaral� 
-maddeyi okuyunuz.) Bu tak�m, t�m PostgreSQL geli�iminden sorumludur.
-
-PostgreSQL 1.01 s�r�m�n�n yazarlar� Andrew Yu ve Jolly Chen idi. Bunlar�n d���nda bir ka� kisi de uyarlama, hata 
-ay�klama ve kodun geli�tirilmesi i�in �al�sm��t�. PostgreSQL'in t�redi�i orijinal Postgres kodu, lisans, lisans�st� ve 
-akademisyenler taraf�ndan, Professor Michael Stonebraker (University of California, Berkeley) koordinat�rl�g�nde 
-yaz�lm��t�r.
-
-Berkley'deki yaz�l�m�n ad� Postgres idi. SQL uyumlulu�u 1995'te eklenince, ad� Postgres 95 oldu. 1996 y�l�n�n 
-sonlar�nda ad� PostgreSQL olarak de�i�tirildi.
-1.2) PostgreSQL'in haklar� nedir?
-
-PostgreSQL Data Base Management System
-
-Portions copyright (c) 1996-2002, PostgreSQL Global Development Group Portions Copyright (c) 1994-6 Regents of the 
-University of California
-
-Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and 
-without a written agreement is hereby granted, provided that the above copyright notice and this paragraph and the 
-following two paragraphs appear in all copies.
-
-IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR 
-CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF 
-THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" 
-BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR 
-MODIFICATIONS.
-
-�stteki metin klasik a��k-kod lisans� olan BSD lisans�d�r. Kaynak kodun nas�l kullan�labilece�ine dair s�n�rlamalar� 
-yoktur. Bu lisans� seviyoruz. De�i�tirme niyetimiz bulunmamaktad�r.
-1.3) PostgreSQL, hangi Unix platforlar�nda �al���r?
-
-Genel olarak, modern bir Unix-uyumlu platform PostgreSQL'i �al��t�racakt�r. Ayr�nt�l� bilgi i�in kurulum belgelerine 
-bakabilirsiniz.
-1.4) Hangi Unix olmayan uyarlamalar� bulunmaktad�r?
-
-PostgreSQL 8.0 s�r�m� ile , PostgreSQL art�k Win2000, WinXP ve Win2003 gibi Microsoft Windows NT tabanl� i�letim 
-sistemlerinde do�al olarak �al��maya ba�lam��t�r. Paketlenmi� bir  kurulum program�, http://pgfoundry.org/projects/pginstaller
-adresinden indirilebilir.
-
-Ayr�ca, http://forge.novell.com adresinde Novell Netware 6 portu bulunmaktad�r.
-1.5) PostgreSQL'i nereden indirebilirim?
-
-PostgreSQL i�in ana anonim ftp sitesi ftp://ftp.PostgreSQL.org/pub adresidir. Yans�lar i�in, ana web sayfam�za 
-bakabilirsiniz.
-1.6) Nereden destek alabilirim?
-
-Ana e-posta listesi : pgsql-general@PostgreSQL.org. PostgreSQL konusundaki tart��malara a��kt�r. �ye olmak i�in, 
-a�a��daki sat�rlar� e-postan�z�n body k�sm�na (konu k�sm�na de�il) yaz�p, pgsql-general-request@PostgreSQL.org adresine 
-g�nderin:
 
+                  PostgreSQL i�in S�k�a Sorulan Sorular (SSS)
+                                       
+   Son g�ncelleme : 15 Kas�m 2004 Pazartesi - 15:03:23
+   
+   Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
+   
+   �evirenler : Devrim G�nd�z (devrim@tdmsoft.com)
+   Nicolai Tufar (ntufar@tdmsoft.com)
+   Volkan YAZICI (volkany@phreaker.net)
+   
+   Bu belgenin en g�ncel hali,
+   http://www.PostgreSQL.org/docs/faqs/FAQ_turkish.html ve
+   http://www.gunduz.org/seminer/pg/FAQ_turkish.html adreslerinde
+   g�r�lebilir.
+   
+   Platforma �zel sorular�n�z, http://www.PostgreSQL.org/docs/index.html
+   adresinde yan�tlan�r.
+     _________________________________________________________________
+   
+                               Genel Sorular
+                                      
+   1.1) PostgreSQL nedir? Nas�l okunur?
+   1.2) PostgreSQL'in haklar� nedir?
+   1.3) PostgreSQL, hangi Unix platformlar�nda �al���r?
+   1.4) Hangi Unix olmayan uyarlamalar� bulunmaktad�r?
+   1.5) PostgreSQL'i nereden indirebilirim?
+   1.6) Deste�i nereden alabilirim?
+   1.7) En son s�r�m� nedir?
+   1.8) Hangi belgelere ula�abilirim?
+   1.9) Bilinen hatalar ya da eksik �zelliklere nereden ulasabilirim?
+   1.10) Nas�l SQL ��renebilirim?
+   1.11) PostgreSQL 2000 y�l�na uyumlu mudur?
+   1.12) Geli�tirme tak�m�na nas�l kat�labilirim??
+   1.13) Bir hata raporunu nas�l g�nderebilirim?
+   1.14) PostgreSQL, di�er VTYS(DBMS) lerle nas�l kar��la�t�r�labilir?
+   1.15) PostgreSQL'e maddi a��dan nas�l destek olabilirim?
+   
+                         Kullan�c�/istemci Sorular�
+                                      
+   2.1) PostgreSQL i�in ODBC s�r�c�leri var m�?
+   2.2) PostgreSQL'i web sayfalar�nda kullanabilmek i�in hangi ara�lar
+   bulunmaktad�r?
+   2.3) PostgreSQL'in grafik kullan�c� arabirimi var m�d�r?
+   2.4) PostgreSQL ile ileti�imi kurabilmek i�in hangi dilleri
+   kullanabilirim?
+   
+                             Y�netimsel Sorular
+                                      
+   3.1) PostgreSQL'i /usr/local/pgsql dizininden ba�ka dizinlere nas�l
+   kurabilirim?
+   3.2) Postmaster'� ba�latt���mda Bad System Call ya da core dumped
+   mesaj� al�yorum. Neden?
+   3.3) Postmaster'� ba�latt���mda, IpcMemoryCreate hatas� al�yorum.
+   Neden?
+   3.4) Postmaster'�, ba�latt���mda, IpcSemaphoreCreate hatas� al�yorum.
+   Neden?
+   3.5) Di�er bilgisayarlar�n benim PostgreSQL veritaban� sunucuma
+   ba�lant�lar�n� nas�l kontrol edebilirim?
+   3.6) Veritaban� motorunu daha iyi ba�ar�m icin nas�l ayarlayabilirim?
+   3.7) Hangi hata ay�klama �zellikleri bulunmaktad�r?
+   3.8) Ba�lanmaya �al���rken, neden "Sorry, too many clients" hatas�n�
+   al�yorum. Neden?
+   3.9) pgsql_tmpdizinin i�indeki dosyalar nelerdir?
+   3.10) PostgreSQL s�r�mlerini y�kseltmek i�in neden bir dump/reload
+   i�lemi ger�ekle�tirmek zorunday�m?
+   3.11) Nas�l bir donan�m kullanmal�y�m?br>
+   
+                             ��letimsel Sorular
+                                      
+   4.1) Binary cursor ve normal cursor aras�ndaki fark ned�r?
+   4.2) Sorgunun sadece ilk birka� sat�r�n� nas�l SELECT edebilirim?
+   4.3) psql'in i�inde g�rd�g�m tablolar�n ya da di�er �eylerin listesini
+   nas�l alabilirim?
+   4.4) Bir tablodan bir kolonu nas�l kald�rabilirim?
+   4.5) Bir sat�r, tablo ve veritaban� i�in en fazla b�y�kl�k nedir?
+   4.6) Tipik bir metin dosyas�ndaki veriyi saklamak i�in ne kadar disk
+   alan� gereklidir?
+   4.7) Veritaban�nda hangi tablo ya da index'lerin tan�mland���n� nas�l
+   g�rebilirim?
+   4.8) Sorgular�m cok yava�, ya da index'lerimi kullanm�yorlar. Neden?
+   4.9) Query-optimizer'�n sorgular�m� nas�l de�erlendirdi�ini, i�leme
+   soktu�unu nas�l g�rebilirim?
+   4.10) R-tree index nedir?
+   4.11) Genetic Query Optimizer nedir?
+   4.12) D�zenli ifade (Regular Expression) aramalar�n� ve b�y�k/k���k
+   harfe duyars�z aramalar� nas�l yapabilirim? Bu b�y�k/k���k harfe
+   duyarl� aramalar i�in index'i nas�l kullanabilirim?
+   4.13) Bir sorguda, bir alan�n NULL oldu�unu nas�l ortaya
+   ��karabilirim?
+   4.14) �esitli karakter tipleri aras�ndaki farklar nelerdir?
+   4.15.1) Nas�l serial/otomatik artan (auto-incrementing) bir alan
+   yaratabilirim?
+   4.15.2) Serial giri�inin de�erini nas�l alabilirim?
+   4.15.3) currval() ve nextval() di�er kullan�c�lara sorun yaratmaz m�?
+   4.15.4) Neden sequence say�lar�n transaction i�leminin iptalinden
+   sonra yeniden kullan�l�yor? Neden sequence/SERIAL kolonumdaki
+   say�larda atlamalar oluyor?
+   4.16) OID nedir? TID nedir?
+   4.17) PostgreSQL' de kullan�lan baz� terimlerin anlamlar� nelerdir?
+   4.18) Neden "ERROR: Memory exhausted in AllocSetAlloc()" hatas�n�
+   al�yorum?
+   4.19) Hangi PostgreSQL s�r�m�n� �al�st�rd���m� nas�l g�rebilirim?
+   4.20) Neden large-object i�lemlerim, "invalid large obj descriptor"
+   hatas�n� veriyor?
+   4.21) �u andaki zaman� �ntan�ml� de�er olarak kabul eden kolonu nas�l
+   yarat�r�m?
+   4.22) Neden IN kullanan subquery'lerim �ok yava�?
+   4.23) Outer join i�lemini nas�l yapabilirim?
+   4.24) Ayn� anda birden fazla veritaban�nda nas�l i�lem yapabilirim?
+   4.25) Bir fonksiyondan nas�l �oklu sat�r ya da kolon d�nd�rebilirim?
+   4.26) Neden Pl/PgSQL fonksiyonlar� i�inden g�venli bir �ekilde tablo
+   yaratma/kald�rma i�lemlerini yapam�yoruz?
+   4.27) Hangi �ifreleme se�enekleri bulunmaktad�r?
+   
+                    PostgreSQL �zelliklerini Geni�letmek
+                                      
+   5.1) Kullan�c�-tan�ml� bir fonksiyon yazd�m. psql'de �al��t�rd���m
+   zaman neden core dump ediyor?
+   5.2) PostgreSQL'e nas�l yeni veri tipleri/fonksiyonlar ekleyebilirim?
+   5.3) Bir tuple d�nd�rmek i�in bir C fonksiyonunu nas�l yazar�m?
+   5.4) Bir kaynak dosyas�nda de�i�iklik yapt�m. Yeniden derlememe ra�men
+   de�i�iklik ge�erli olmuyor. Neden?
+     _________________________________________________________________
+   
+                               Genel Sorular
+                                      
+    1.1) PostgreSQL nedir? Nas�l okunur?
+    
+   PostgreSQL, Post-Gres-Q-L. olarak okunur
+   
+   PostgreSQL, yeni-nesil VTYS ara�t�rma prototipi olan POSTGRES
+   veritaban� y�netim sisteminin geli�tirilmesidir. POSTGRES'in zengin
+   veri tiplerini ve g��l� veri modelini tutarken, SQL'in geli�tirilmi�
+   alt k�mesi olan PostQuel dilini kullan�r. PostgreSQL �cretsizdir ve
+   kaynak kodu a��k da��t�l�r.
+   
+   PostgreSQL, PostgreSQL geli�tirme listesine �ye olan bir Internet
+   geli�tirici tak�m� taraf�ndan geli�tirilir. �u andaki koordinat�r,
+   Marc G. Fournier (scrappy@PostgreSQL.org). (Bu tak�ma nas�l
+   kat�lacag�n�z� ��renmek i�in 1.6 numaral� maddeyi okuyunuz.) Bu tak�m,
+   t�m PostgreSQL geli�iminden sorumludur.
+   
+   PostgreSQL 1.01 s�r�m�n�n yazarlar� Andrew Yu ve Jolly Chen idi.
+   Bunlar�n d���nda bir ka� kisi de uyarlama, hata ay�klama ve kodun
+   geli�tirilmesi i�in �al�sm��t�. PostgreSQL'in t�redi�i orijinal
+   Postgres kodu, lisans, lisans�st� ve akademisyenler taraf�ndan,
+   Professor Michael Stonebraker (University of California, Berkeley)
+   koordinat�rl�g�nde yaz�lm��t�r.
+   
+   Berkley'deki yaz�l�m�n ad� Postgres idi. SQL uyumlulu�u 1995'te
+   eklenince, ad� Postgres 95 oldu. 1996 y�l�n�n sonlar�nda ad�
+   PostgreSQL olarak de�i�tirildi.
+   
+    1.2) PostgreSQL'in haklar� nedir?
+    
+   PostgreSQL Data Base Management System
+   
+   Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
+   Portions Copyright (c) 1994-6 Regents of the University of California
+   
+   Permission to use, copy, modify, and distribute this software and its
+   documentation for any purpose, without fee, and without a written
+   agreement is hereby granted, provided that the above copyright notice
+   and this paragraph and the following two paragraphs appear in all
+   copies.
+   
+   IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
+   FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
+   INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND
+   ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN
+   ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+   
+   THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
+   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+   MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
+   PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
+   CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
+   UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+   
+   �stteki metin klasik a��k-kod lisans� olan BSD lisans�d�r. Kaynak
+   kodun nas�l kullan�labilece�ine dair s�n�rlamalar� yoktur. Bu lisans�
+   seviyoruz. De�i�tirme niyetimiz bulunmamaktad�r.
+   
+    1.3) PostgreSQL, hangi Unix platforlar�nda �al���r?
+    
+   Genel olarak, modern bir Unix-uyumlu platform PostgreSQL'i
+   �al��t�racakt�r. Ayr�nt�l� bilgi i�in kurulum belgelerine
+   bakabilirsiniz.
+   
+    1.4) Hangi Unix olmayan uyarlamalar� bulunmaktad�r?
+    
+   PostgreSQL 8.0 s�r�m� ile , PostgreSQL art�k Win2000, WinXP ve Win2003
+   gibi Microsoft Windows NT tabanl� i�letim sistemlerinde do�al olarak
+   �al��maya ba�lam��t�r. Paketlenmi� bir kurulum program�,
+   http://pgfoundry.org/projects/pginstaller. adresinden indirilebilir.
+   
+   Ayr�ca, http://forge.novell.com adresinde Novell Netware 6 portu
+   bulunmaktad�r.
+   
+    1.5) PostgreSQL'i nereden indirebilirim?
+    
+   PostgreSQL i�in ana anonim ftp sitesi ftp://ftp.PostgreSQL.org/pub
+   adresidir. Yans�lar i�in, ana web sayfam�za bakabilirsiniz.
+   
+    1.6) Nereden destek alabilirim?
+    
+   Ana e-posta listesi : pgsql-general@PostgreSQL.org. PostgreSQL
+   konusundaki tart��malara a��kt�r. �ye olmak i�in, a�a��daki sat�rlar�
+   e-postan�z�n body k�sm�na (konu k�sm�na de�il) yaz�p,
+   pgsql-general-request@PostgreSQL.org adresine g�nderin:
 subscribe
 end
 
-Ayn� zamanda, bir digest listesi bulunmaktad�r. Bu listeye �ye olmak i�in, pgsql-general-digest-request@PostgreSQL.org 
-adresine, body k�sm�nda
-
+   Ayn� zamanda, bir digest listesi bulunmaktad�r. Bu listeye �ye olmak
+   i�in, pgsql-general-digest-request@PostgreSQL.org adresine, body
+   k�sm�nda
 subscribe
 end
 
-yazan bir e-posta atman�z yeterli olacakt�r.
-
-Digest postalar, ana liste 30k civar�nda e-postaya ula�t���nda �yelere g�nderilmektedir.
-
-Bug'lar i�in bir e-posta listesi bulunmaktad�r. Bu listeye �ye olmak i�in, pgsql-bugs-request@PostgreSQL.org adresine, 
-body k�sm�nda
-
+   yazan bir e-posta atman�z yeterli olacakt�r.
+   
+   Digest postalar, ana liste 30k civar�nda e-postaya ula�t���nda �yelere
+   g�nderilmektedir.
+   
+   Bug'lar i�in bir e-posta listesi bulunmaktad�r. Bu listeye �ye olmak
+   i�in, pgsql-bugs-request@PostgreSQL.org adresine, body k�sm�nda
 subscribe
 end
 
-yazan bir e-posta atman�z yeterli olacakt�r.
-
-Ayn� zamanda, geli�tiriciler i�in tart��ma listesi bulunmaktad�r. Bu listeye �ye olmak i�in, 
-pgsql-hackers-request@PostgreSQL.org adresine, body k�sm�nda
-
+   yazan bir e-posta atman�z yeterli olacakt�r.
+   
+   Ayn� zamanda, geli�tiriciler i�in tart��ma listesi bulunmaktad�r. Bu
+   listeye �ye olmak i�in, pgsql-hackers-request@PostgreSQL.org adresine,
+   body k�sm�nda
 subscribe
 end
 
-yazan bir e-posta atman�z yeterli olacakt�r.
-
-Bunun d���ndaki e-posta listelerine ve PostgreSQL hakk�nda bilgiye, PostgreSQL WWW ana sayfas�ndan ulasabilirsiniz: 
-http://www.PostgreSQL.org
-
-Ayn� zamanda, EFNet �zerinde, #PostgreSQL adl� bir IRC kanal� bulunmaktad�r. Bunun i�in, irc -c '#PostgreSQL' "$USER" 
-irc.phoenix.net Unix komutunu kullanabilirsiniz.
-
-Ticari destek veren firmalar�n listesine
-
-http://www.postgresql.org/users-lounge/commercial-support.html
-
-adresinden ula�bilirsiniz.
-1.7) En son s�r�m nedir?
-
-PostgreSQL'in son s�r�m� 7.4.6'd�r.
-
-Her 6-8 ayda ana s�r�m ��kar�lmas� planlanmaktad�r.
-1.8) Hangi belgelere ula�abilirim?
-
-Da��t�m�n i�inde, kitap��klar, kitap��k sayfalar� ve baz� k���k �rnekler verilmektedir. /doc dizinine bak�n�z. Ayr�ca, 
-bu el kitap��klar�n� online olarak http://www.PostgreSQL.org/docs/ adresinden inceleyebilirsiniz.
-
-http://www.PostgreSQL.org/docs/awbook.html ve http://www.commandprompt.com/ppbook adreslerinde PostgreSQL kitaplar� 
-bulunmaktad�r. PostgreSQL kitablar�n�n listesine, http://www.ca.PostgreSQL.org/books/ adresinden ula�aiblirsiniz. 
-Ayr�ca, PostgreSQL konusundaki teknik makalelere de http://techdocs.PostgreSQL.org/ adresinden ula�abilirsiniz.
-
-psql'in, \d ile baslayan veri tipler, operatorler, fonksiyonlar, aggregate'ler, vb. ile ilgili g�zel komutlar� vard�r.
-
-Web sitemiz daha fazla belgeyi i�ermektedir.
-1.9) Bilinen hatalar ya da eksik �zelliklere nereden ula�abilirim?
-
-PostgreSQL SQL-92 uyumlulu�u i�indedir, standartlardan fazla da �zellikleri bulunmaktad�r. Bilinen hatalar, eksik 
-�zellikler ve gelecek ile ilgili planlar i�in TODO listesine bak�n�z.
-1.10) Nas�l SQL ��renebilirim?
-
-http:/www.PostgreSQL.org/docs/awbook.html adresindeki kitap SQL �gretecektir. http://www.commandprompt.com/ppbook 
-adresinde de bir baska PostgreSQL kitab� bulunmaktad�r.
-
-http://www.intermedia.net/support/sql/sqltut.shtm, 
-http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM http://sqlcourse.com ve http://sqlcourse2.com 
-adreslerinde de g�zel belgeler bulunmaktad�r.
-
-Bir ba�kas� da, http://members.tripod.com/er4ebus/sql/index.htm adresinde bulunan "Teach Yourself SQL in 21 Days, 
-Second Edition" kitab�d�r.
-
-Baz� kullan�c�lar�m�z da �u kitab� �nermektedirler: "The Practical SQL Handbook, Bowman, Judith S., et 
-al.,Addison-Wesley". Baz�lar� ise "The Complete Reference SQL, Groff et al., McGraw-Hill" kitab�n� �nermektedirler.
-1.11) PostgreSQL 2000 y�l�na uyumlu mudur?
-
-Evet.
-1.12) Geli�tirme tak�m�na nas�l kat�labilirim?
-
-�ncelikle, en son kaynak kodunu indirin ve web sitemizdeki ya da da��t�m�n i�indeki PostgreSQL Developer belgesini 
-okuyun. Ard�ndan, pgsql-hackers ve pgsql-patches listelerine �ye olun. ���nc� olarak da, pgsql-pacthes listesine y�ksek 
-kalitede yamalar g�nderin.
-
-PostgreSQL CVS ar�ivine eri�im izni olan, 10 kadar geli�tirici bulunmaktad�r. Hepsi defalarca, di�er ki�ilerin 
-yapt���ndan �ok daha y�ksek-kaliteli yamalar g�ndermi�lerdir. Ayr�ca biz de bu geli�tiricilerin ekledikleri yamalar�n 
-y�ksek kalitede oldu�una g�veniyoruz.
-1.13) Bir hata raporunu nas�l g�nderebilirim?
-
-PostgreSQL BugTool sayfas�na gidiniz. O sayfada bir bug bildirmek i�in neleri yapman�z gerekti�i anlat�lm��t�r.
-
-Ayr�ca, ftp://ftp.PostgreSQL.org/pub ftp adresimizde, yeni bir PostgreSQL s�r�m� ya da yamas� olup olmad���ni kontrol 
-ediniz.
-1.14) PostgreSQL, diger DBMS'lerle nas�l kar��last�r�labilir?
-
-Bir yaz�l�m�n g�c�n� �l�mek i�in �e�itli yollar vard�r: Yaz�l�m�n �zellikleri, ba�ar�m�, g�venilirli�i, deste�i ve 
-�creti.
-
-�zellikler:
-
-PostgreSQL mevcut b�y�k ticari veritabanlar�n�n, transaction, subselect, trigger, view, foreign key referential 
-integrity ve sophisticated locking gibi (user-defined types), rules, inheritance ve lock cak��malar�n� d���rmek i�in 
-multi-version uyumluluk �zellikleri bulunmaktad�r.
-
-Performans (Ba�ar�m):
-
-PostgreSQL, di�er ticari ve a��k kaynak kodlu veritabanlar�yla yak�n ba�ar�m� sa�lar. Baz� a��lardan daha h�zl�d�r, 
-di�er a��lardan da yava�t�r. MySQL ya da daha zay�f veritabanlar� ile kar��la�t�r�ld���nda, INSERT/UPDATE i�lemlerinde, 
-transaction bazl� �al�st���m�z i�in daha yava��z. MySQL, yukar�daki "�zellikler" k�sm�nda belirtilenlerden hi� birine 
-sahip de�ildir. Biz, ba�ar�m�m�z� her s�r�mde artt�rsak da, esneklik ve geli�mi� �zellikler i�in yap�lanm�� durumday�z. 
-PostgreSQL'i MySQL ile kar��la�t�ran �u web sitesine bakabilirsiniz: http://openacs.org/why-not-mysql.html
-
-G�venilirlik:
-
-DBMS'lerin g�venilir olmas� gerketi�i, yoksa de�erleri olmayaca��n� d���n�yoruz. �ok iyi test edilmi�, dengeli �al�san 
-minimum say�da hata i�eren kod sunmaya �al���yoruz. Her bir s�r�m en az 1 ayl�k beta testlerinden ge�irilmektedir. 
-S�r�m ge�mi�ine bakarsan�z, �retime haz�r, dengeli ve kararl� kodlar sundu�umuzu g�rebilirsiniz. Bu alanda, di�er 
-veritaban� yaz�l�mlar�na �st�nl���m�z oldu�una inanmaktay�z.
-
-Destek:
-
-E-posta listemiz, olu�an herhangi bir sorunu ��zebilecek b�y�k say�da kullan�c� ve geli�tirici grubunu i�erir. 
-Sorununuz i�in, en az bir ticari veritaban� kadar rahat ��z�m bulabilirsiniz. Gelistiricilere, kullan�c� grubuna, 
-belgelere ve kaynak koda direk olarak eri�ebilme, PostgreSQL deste�ini, di�er DBMS'lere g�re daha �nemli k�lar. 
-Gereksinimi olanlara, ticari destek verilebilir. (Destek i�in 1.6 b�l�m�ne bak�n�z.)
-
-Fiyat:
-
-Ticari ve ticari olmayan t�m kullan�mlar�n�z i�in PostgreSQL �cretsizdir. Kodumuzu, yukar�da belirtilen BSD-stili 
-lisanstaki s�n�rlamalar hari�, �r�n�n�z�n i�ine ekleyebilirsiniz.
-1.15) PostgreSQL'e maddi a��dan nas�l destek olabilirim?
-
-PostgreSQL, 1996 y�l�ndan beri 1. s�n�f altyap�ya sahiptir. Bunun i�in, y�llar boyu �al���p bu altyap�y� olu�turup 
-y�neten Marc Fournier'e te�ekk�rler.
-
-Bir a��k kaynak kodlu proje i�in, kaliteli altyap� �ok �nemlidir. Bu altyap�, projenin kesilmesini �nler ve projenin 
-ilerlemesini h�zland�r�r.
-
-Tabii ki bu altyap� ucuz de�ildir. ��lerin y�r�mesi i�in �e�itli y�l�k ve anl�k harcamalar�m�z olmaktad�r. E�er siz ya 
-da �irketinizin bu �abam�za ba���ta bulunabilecek paras� varsa, l�tfen http://store.pgsql.com adresine gidiniz 
-ve ba���ta, hibede bulununuz.
-
-Web sayfas�n�n 'PostgreSQL Inc.' den bahsetmesine ra�men, "katk�da bulunanlar" (contributors) maddesi sadece PostgreSQL 
-projesini desteklemek i�indir ve belirli bir �irketin para kayna�� de�ildir. isterseniz, ba�lant� adresine bir �ek 
-g�nderebilirsiniz.
-Kullan�c�/�stemci Sorular�
-2.1) PostgreSQL icin ODBC s�r�c�leri var m�?
-
-iki tane ODBC s�r�c�s� bulunmaktad�r: PsqlODBC ve OpenLink ODBC.
-
-PsqlODBC'i http://gborg.postgresql.org/project/psqlodbc/projdisplay.php adresinden indirebilirsiniz.
-
-OpenLink ODBC http://www.openlinksw.com adresinden al�nabilir.Bu s�r�c�, kendi standart ODBC istemci yaz�l�m� ile 
-�al�st���ndan, destekledikleri her platformda (Win, Mac, Unix, VMS) PostgreSQL ODBC bulunmalidir.
-
-�cretsiz s�r�m� olmakla beraber, ticari kalitede destek almak isteyenlere satmak isteyeceklerdir. Sorular�n�z� l�tfen 
-postgres95@openlink.co.uk adresine g�nderiniz.
-2.2) PostgreSQL'i web sayfalar�nda kullanabilmek i�in hangi ara�lar bulunmaktad�r?
-
-http://www.webreview.com/ adresinde, arka planda veritaban� �al�st�ran Web sayfalar� i�in giri� seviyesinde bilgi 
-bulunmaktad�r.
-
-Web ile b�t�nle�me i�in, PHP () m�kemmel bir arabirim sunar.
-
-Karma��k sorunlar i�in, �o�u kisi Perl arabirimini ve CGI.pm ya da mod_perl kullan�r.
-2.3) PostgreSQL'in grafik kullan�c� arabirimi var m�d�r?
-
-�e�itli grafik arabirimlerimiz bulunmaktad�r. Bunlar�n aras�nda, PgAccess (http://www.pgaccess.org/), PgAdmin II 
-(http://www.pgadmin.org/, sadece Win32 i�in), RHDB Admin (http://sources.redhat.com/rhdb/) ve Rekall 
-(http://www.thekompany.com/products/rekall/) bulunmaktad�r. Ayr�ca, PostgreSQL i�in web tabanl� bir arabirim olan 
-PHPPgAdmin (http://phppgadmin.sourceforge.net/) bulunmaktad�r.
-
-Daha ayr�nt�l� liste i�in http://techdocs.postgresql.org/guides/GUITools adresine bakabilirsiniz.
-2.4) PostgreSQL ile ileti�imi kurabilmek i�in hangi dilleri kullanabilirim?
-
-    * C (libpq)
-    * Embedded C (ecpg)
-    * Java (jdbc)
-    * Python (PyGreSQL)
-    * TCL (libpgtcl)
-
-Di�erleri i�in, http://gborg.postgresql.org adresindeki Drivers/Interfaces b�l�m�ne bakabilirsiniz.
-Y�netimsel Sorular
-3.1) PostgreSQL'i, /usr/local/pgsql dizininden ba�ka dizinlere nas�l kurabilirim?
-
-configure beti�ini �al�st�r�rken, --prefix se�ene�ini veriniz.
-3.2) postmaster'i baslatt�g�mda, a Bad System Call ya da core dumped mesaj� al�yorum. Neden?
-
-Bunun bir�ok nedeni olabilir. Ancak ilk kontrol edilmesi gereken sey, �ekirdeginize System V uzant�lar�n�n kurulu olup 
-olmad�g�n� kontrol etmek olabilir. PostgreSQL shared memory ve semaphores i�in �ekirdek destegine gereksinim duyar.
-3.3) postmaster'i ba�latt���mda, �pcMemoryCreate hatas� al�yorum. Neden?
-
-Ya �ekirde�inizde shared memory deste�iniz d�zg�nce yap�land�r�lmam��t�r, ya da �ekirde�inizdeki mevcut shared memory 
-miktar�n� b�y�tmeniz gerekecektir. Gereksinim duyaca��n�z miktar, mimarinize ve postmaster i�in ayarlad�g�n�z tampon 
-ile backend i�lemi say�s�na ba�l�d�r. T�m sistemler i�in, tamponlar ve i�lemlerde �ntan�ml� say�larla, ~ 1MB kadar yere 
-gereksinmeniz olacakt�r. PostgreSQL 7.3.2 Sistem Y�neticileri Rehberi'ne, shared memory ve semaphorelar hakk�ndaki 
-ayr�nt�l� bilgi i�in bakabilirsiniz.
-3.4) postmaster'� ba�latt���mda, �pcSemaphoreCreate hatas� al�yorum. Neden?
-
-E�er hata, "�pcSemaphoreCreate: semget failed (No space left on device)" ise, �ekirde�iniz yeterli semaphore ile 
-yap�land�r�lmam�� demektir. Postgres, her bir potansiyel backend i�in bir semaphore gereksinimi duyar. Ge�ici bir 
-��z�m, postmaster� backend i�lemleri i�in daha az miktarda s�n�rla ba�latmak olabilir. -N'i varsay�lan de�er olan 
-32'den k���k bir de�erle ba�lat�n�z. Daha kal�c� bir ��z�m, �ekirde�inizin SEMMNS ve SEMMNI parametrelerini y�kseltmek 
-olacakt�r.
-
-�al��mayan semaphore'lar a��r veritaban� i�lemlerinde ��kme yaratabilirler.
-
-E�er hata mesaj�n�z ba�ka bir �ey ise, �ekirde�inizde semaphore deste�ini yap�land�rmam�� olabilirsiniz. Shared memory 
-ve semaphore'lar hakk�ndaki daha ayr�nt�l� bilgi i�in PostgreSQL 7.3.2 Sistem Y�neticileri Rehberi'ne bakabilirsiniz.
-3.5) Diger bilgisayarlar�n benim PostgreSQL veritaban� sunucuma ba�lant�lar�n� nas�l kontrol edebilirim?
-
-�n tan�ml� olarak, PostgreSQL sadece yerel makineden Unix domain sockets kullanarak ba�lan�lmas�na izin verir. Diger 
-makineler, postmaster'a -i etiketini ge�irmezseniz ve $PGDATA/pg_hba.conf dosyas�n� d�zenleyerek host-based 
-authentication'a olanak vermezseniz, ba�lant� yapamayacaklard�r.
-3.6) Veritabani motorunu daha iyi ba�ar�m i�in nas�l ayarlayabilirim?
-
-Index'ler sorgular� h�zland�rabilir. EXPLAIN komutu, PostgreSQL'in sorgunuzu nas�l yorumlad���n� ve hangi index'leri 
-kulland���n� g�rmenize izin verir.
-
-E�er cok fazla INSERT i�lemi yap�yorsan�z, bunlar� b�y�k bir toplu i�lem dosyas�kullan�p COPY komutu ile veritaban�na 
-girmeyi deneyiniz. Bu, tekil INSERT'lerden daha h�zl�d�r. �kinci olarak, BEGIN WORK/COMMIT transaction blo�u i�inde 
-olmayan ifadeler kendi transaction'lar�ndaym�� gibi d���n�l�r. �oklu ifadeleri tek bir transaction blo�u i�inde 
-yapabilirsiniz. Bu, transaction overhead'ini d���recektir. Tek bir transaction blo�u i�inde birden �ok ifadeyi 
-�al��t�rmay� deneyebilirsiniz. Bu da ayn� �ekilde, transaction overhead'ini d���r�r.
-
-�e�itli ayarlama se�enekleri mevcuttur. fsync() i�lemini, postmaster'� -o -F se�ene�i ile ba�latarak devre d��� 
-b�rakabilirsiniz. Bu i�lem, fsync()'lerin her transactiondan sonra diski flush etmesini engelleyecektir.
-
-Ayn� zamanda, postmaster'i -B se�ene�i ile ba�lat�p, backend i�lemleri taraf�ndan kullan�lan shared memory buffers 
-say�lar�n� artt�rabilirsiniz. E�er bu parametreyi �ok y�ksek tutarsan�z, �ekirde�inizin shared memory b�lgesindeki 
-limiti a�ma olas�l���n�z y�z�nden postmaster ba�layamayabilir. Her bir tampon (buffer) 8K'd�r. �ntan�ml� say� ise 64 
-tampondur.
-
-Ayn� �ekilde, backend'in -S se�ene�ini ge�ici s�ralamalar i�in backend s�re�leri taraf�ndan kullan�lacak haf�zay� 
-artt�rmak amac�yla kullanabilirsiniz. -S se�ene�i kilobayt cinsinden de�er al�r ve �n tan�ml� de�eri 512'dir (512 K)
-
-Tablolardaki veriyi bir index'e e�lemek amac�yla gruplama i�in CLUSTER komutunu kullanabilirsiniz. Ayr�nt�l� bilgi i�in 
-CLUSTER komutunun yard�m sayfas�na bakabilirsiniz.
-3.7) Hangi hata ay�klama �zellikleri bulunmaktad�r?
-
-PostgreSQL, hata ay�klama amac�yla kullan�labilecek durum bilgisi rapor eden �e�itli �zeliklere sahiptir.
-
-�ncelikle, configure beti�ini --enable-cassert se�ene�iyle �al��t�r�rsan�z, bir �ok assert() backend cal��mas�n� 
-g�zlemler ve beklenmeyen bir durumda program� durdurur.
-
-Postmaster ve postgres �e�itli hata ay�klama se�eneklerine sahiptir. �ncelikle, postmaster'� ba�latt���n�zda, standart 
-��kt�y� ve hatalar� bir log dosyas�na y�nlendirdi�inize emin olun:
-
+   yazan bir e-posta atman�z yeterli olacakt�r.
+   
+   Bunun d���ndaki e-posta listelerine ve PostgreSQL hakk�nda bilgiye,
+   PostgreSQL WWW ana sayfas�ndan ulasabilirsiniz:
+   http://www.PostgreSQL.org
+   
+   Ayn� zamanda, EFNet �zerinde, #PostgreSQL adl� bir IRC kanal�
+   bulunmaktad�r. Bunun i�in, irc -c '#PostgreSQL' "$USER"
+   irc.phoenix.net Unix komutunu kullanabilirsiniz.
+   
+   Ticari destek veren firmalar�n listesine
+   
+   http://www.postgresql.org/users-lounge/commercial-support.html
+   
+   adresinden ula�bilirsiniz.
+   
+    1.7) En son s�r�m nedir?
+    
+   PostgreSQL'in son s�r�m� 7.4.6'd�r.
+   
+   Her 6-8 ayda ana s�r�m ��kar�lmas� planlanmaktad�r.
+   
+    1.8) Hangi belgelere ula�abilirim?
+    
+   Da��t�m�n i�inde, kitap��klar, kitap��k sayfalar� ve baz� k���k
+   �rnekler verilmektedir. /doc dizinine bak�n�z. Ayr�ca, bu el
+   kitap��klar�n� online olarak http://www.PostgreSQL.org/docs/
+   adresinden inceleyebilirsiniz.
+   
+   http://www.PostgreSQL.org/docs/awbook.html ve
+   http://www.commandprompt.com/ppbook adreslerinde PostgreSQL kitaplar�
+   bulunmaktad�r. PostgreSQL kitablar�n�n listesine,
+   http://www.ca.PostgreSQL.org/books/ adresinden ula�aiblirsiniz.
+   Ayr�ca, PostgreSQL konusundaki teknik makalelere de
+   http://techdocs.PostgreSQL.org/ adresinden ula�abilirsiniz.
+   
+   psql'in, \d ile baslayan veri tipler, operatorler, fonksiyonlar,
+   aggregate'ler, vb. ile ilgili g�zel komutlar� vard�r.
+   
+   Web sitemiz daha fazla belgeyi i�ermektedir.
+   
+    1.9) Bilinen hatalar ya da eksik �zelliklere nereden ula�abilirim?
+    
+   PostgreSQL SQL-92 uyumlulu�u i�indedir, standartlardan fazla da
+   �zellikleri bulunmaktad�r. Bilinen hatalar, eksik �zellikler ve
+   gelecek ile ilgili planlar i�in TODO listesine bak�n�z.
+   
+    1.10) Nas�l SQL ��renebilirim?
+    
+   http:/www.PostgreSQL.org/docs/awbook.html adresindeki kitap SQL
+   �gretecektir. http://www.commandprompt.com/ppbook adresinde de bir
+   baska PostgreSQL kitab� bulunmaktad�r.
+   
+   http://www.intermedia.net/support/sql/sqltut.shtm,
+   http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM
+   http://sqlcourse.com ve http://sqlcourse2.com adreslerinde de g�zel
+   belgeler bulunmaktad�r.
+   
+   Bir ba�kas� da, http://members.tripod.com/er4ebus/sql/index.htm
+   adresinde bulunan "Teach Yourself SQL in 21 Days, Second Edition"
+   kitab�d�r.
+   
+   Baz� kullan�c�lar�m�z da �u kitab� �nermektedirler: "The Practical SQL
+   Handbook, Bowman, Judith S., et al.,Addison-Wesley". Baz�lar� ise "The
+   Complete Reference SQL, Groff et al., McGraw-Hill" kitab�n�
+   �nermektedirler.
+   
+    1.11) PostgreSQL 2000 y�l�na uyumlu mudur?
+    
+   Evet.
+   
+    1.12) Geli�tirme tak�m�na nas�l kat�labilirim?
+    
+   �ncelikle, en son kaynak kodunu indirin ve web sitemizdeki ya da
+   da��t�m�n i�indeki PostgreSQL Developer belgesini okuyun. Ard�ndan,
+   pgsql-hackers ve pgsql-patches listelerine �ye olun. ���nc� olarak da,
+   pgsql-pacthes listesine y�ksek kalitede yamalar g�nderin.
+   
+   PostgreSQL CVS ar�ivine eri�im izni olan, 10 kadar geli�tirici
+   bulunmaktad�r. Hepsi defalarca, di�er ki�ilerin yapt���ndan �ok daha
+   y�ksek-kaliteli yamalar g�ndermi�lerdir. Ayr�ca biz de bu
+   geli�tiricilerin ekledikleri yamalar�n y�ksek kalitede oldu�una
+   g�veniyoruz.
+   
+    1.13) Bir hata raporunu nas�l g�nderebilirim?
+    
+   PostgreSQL BugTool sayfas�na gidiniz. O sayfada bir bug bildirmek i�in
+   neleri yapman�z gerekti�i anlat�lm��t�r.
+   
+   Ayr�ca, ftp://ftp.PostgreSQL.org/pub ftp adresimizde, yeni bir
+   PostgreSQL s�r�m� ya da yamas� olup olmad���ni kontrol ediniz.
+   
+    1.14) PostgreSQL, diger DBMS'lerle nas�l kar��last�r�labilir?
+    
+   Bir yaz�l�m�n g�c�n� �l�mek i�in �e�itli yollar vard�r: Yaz�l�m�n
+   �zellikleri, ba�ar�m�, g�venilirli�i, deste�i ve �creti.
+   
+   �zellikler:
+   
+   PostgreSQL mevcut b�y�k ticari veritabanlar�n�n, transaction,
+   subselect, trigger, view, foreign key referential integrity ve
+   sophisticated locking gibi (user-defined types), rules, inheritance ve
+   lock cak��malar�n� d���rmek i�in multi-version uyumluluk �zellikleri
+   bulunmaktad�r.
+   
+   Performans (Ba�ar�m):
+   
+   PostgreSQL, di�er ticari ve a��k kaynak kodlu veritabanlar�yla yak�n
+   ba�ar�m� sa�lar. Baz� a��lardan daha h�zl�d�r, di�er a��lardan da
+   yava�t�r. MySQL ya da daha zay�f veritabanlar� ile
+   kar��la�t�r�ld���nda, INSERT/UPDATE i�lemlerinde, transaction bazl�
+   �al�st���m�z i�in daha yava��z. MySQL, yukar�daki "�zellikler"
+   k�sm�nda belirtilenlerden hi� birine sahip de�ildir. Biz, ba�ar�m�m�z�
+   her s�r�mde artt�rsak da, esneklik ve geli�mi� �zellikler i�in
+   yap�lanm�� durumday�z. PostgreSQL'i MySQL ile kar��la�t�ran �u web
+   sitesine bakabilirsiniz: http://openacs.org/why-not-mysql.html
+   
+   G�venilirlik:
+   
+   DBMS'lerin g�venilir olmas� gerketi�i, yoksa de�erleri olmayaca��n�
+   d���n�yoruz. �ok iyi test edilmi�, dengeli �al�san minimum say�da hata
+   i�eren kod sunmaya �al���yoruz. Her bir s�r�m en az 1 ayl�k beta
+   testlerinden ge�irilmektedir. S�r�m ge�mi�ine bakarsan�z, �retime
+   haz�r, dengeli ve kararl� kodlar sundu�umuzu g�rebilirsiniz. Bu
+   alanda, di�er veritaban� yaz�l�mlar�na �st�nl���m�z oldu�una
+   inanmaktay�z.
+   
+   Destek:
+   
+   E-posta listemiz, olu�an herhangi bir sorunu ��zebilecek b�y�k say�da
+   kullan�c� ve geli�tirici grubunu i�erir. Sorununuz i�in, en az bir
+   ticari veritaban� kadar rahat ��z�m bulabilirsiniz. Gelistiricilere,
+   kullan�c� grubuna, belgelere ve kaynak koda direk olarak eri�ebilme,
+   PostgreSQL deste�ini, di�er DBMS'lere g�re daha �nemli k�lar.
+   Gereksinimi olanlara, ticari destek verilebilir. (Destek i�in 1.6
+   b�l�m�ne bak�n�z.)
+   
+   Fiyat:
+   
+   Ticari ve ticari olmayan t�m kullan�mlar�n�z i�in PostgreSQL
+   �cretsizdir. Kodumuzu, yukar�da belirtilen BSD-stili lisanstaki
+   s�n�rlamalar hari�, �r�n�n�z�n i�ine ekleyebilirsiniz.
+   
+    1.15) PostgreSQL'e maddi a��dan nas�l destek olabilirim?
+    
+   PostgreSQL, 1996 y�l�ndan beri 1. s�n�f altyap�ya sahiptir. Bunun
+   i�in, y�llar boyu �al���p bu altyap�y� olu�turup y�neten Marc
+   Fournier'e te�ekk�rler.
+   
+   Bir a��k kaynak kodlu proje i�in, kaliteli altyap� �ok �nemlidir. Bu
+   altyap�, projenin kesilmesini �nler ve projenin ilerlemesini
+   h�zland�r�r.
+   
+   Tabii ki bu altyap� ucuz de�ildir. ��lerin y�r�mesi i�in �e�itli y�l�k
+   ve anl�k harcamalar�m�z olmaktad�r. E�er siz ya da �irketinizin bu
+   �abam�za ba���ta bulunabilecek paras� varsa, l�tfen
+   http://store.pgsql.com/ adresine gidiniz ve ba���ta, hibede bulununuz.
+   
+   Web sayfas�n�n 'PostgreSQL Inc.' den bahsetmesine ra�men, "katk�da
+   bulunanlar" (contributors) maddesi sadece PostgreSQL projesini
+   desteklemek i�indir ve belirli bir �irketin para kayna�� de�ildir.
+   isterseniz, ba�lant� adresine bir �ek g�nderebilirsiniz.
+     _________________________________________________________________
+   
+                         Kullan�c�/�stemci Sorular�
+                                      
+    2.1) PostgreSQL icin ODBC s�r�c�leri var m�?
+    
+   iki tane ODBC s�r�c�s� bulunmaktad�r: PsqlODBC ve OpenLink ODBC.
+   
+   PsqlODBC'i
+   http://gborg.postgresql.org/project/psqlodbc/projdisplay.php
+   adresinden indirebilirsiniz.
+   
+   OpenLink ODBC http://www.openlinksw.com adresinden al�nabilir.Bu
+   s�r�c�, kendi standart ODBC istemci yaz�l�m� ile �al�st���ndan,
+   destekledikleri her platformda (Win, Mac, Unix, VMS) PostgreSQL ODBC
+   bulunmalidir.
+   
+   �cretsiz s�r�m� olmakla beraber, ticari kalitede destek almak
+   isteyenlere satmak isteyeceklerdir. Sorular�n�z� l�tfen
+   postgres95@openlink.co.uk adresine g�nderiniz.
+   
+    2.2) PostgreSQL'i web sayfalar�nda kullanabilmek i�in hangi ara�lar
+    bulunmaktad�r?
+    
+   http://www.webreview.com/ adresinde, arka planda veritaban� �al�st�ran
+   Web sayfalar� i�in giri� seviyesinde bilgi bulunmaktad�r.
+   
+   Web ile b�t�nle�me i�in, PHP () m�kemmel bir arabirim sunar.
+   
+   Karma��k sorunlar i�in, �o�u kisi Perl arabirimini ve CGI.pm ya da
+   mod_perl kullan�r.
+   
+    2.3) PostgreSQL'in grafik kullan�c� arabirimi var m�d�r?
+    
+   �e�itli grafik arabirimlerimiz bulunmaktad�r. Bunlar�n aras�nda,
+   PgAccess (http://www.pgaccess.org/), PgAdmin II
+   (http://www.pgadmin.org/, sadece Win32 i�in), RHDB Admin
+   (http://sources.redhat.com/rhdb/) ve Rekall
+   (http://www.thekompany.com/products/rekall/) bulunmaktad�r. Ayr�ca,
+   PostgreSQL i�in web tabanl� bir arabirim olan PHPPgAdmin
+   (http://phppgadmin.sourceforge.net/) bulunmaktad�r.
+   
+   Daha ayr�nt�l� liste i�in
+   http://techdocs.postgresql.org/guides/GUITools adresine
+   bakabilirsiniz.
+   
+    2.4) PostgreSQL ile ileti�imi kurabilmek i�in hangi dilleri kullanabilirim?
+    
+     * C (libpq)
+     * Embedded C (ecpg)
+     * Java (jdbc)
+     * Python (PyGreSQL)
+     * TCL (libpgtcl)
+       
+   Di�erleri i�in, http://gborg.postgresql.org adresindeki
+   Drivers/Interfaces b�l�m�ne bakabilirsiniz.
+     _________________________________________________________________
+   
+                             Y�netimsel Sorular
+                                      
+    3.1) PostgreSQL'i, /usr/local/pgsql dizininden ba�ka dizinlere nas�l
+    kurabilirim?
+    
+   configure beti�ini �al�st�r�rken, --prefix se�ene�ini veriniz.
+   
+    3.2) postmaster'i baslatt�g�mda, a Bad System Call ya da core dumped mesaj�
+    al�yorum. Neden?
+    
+   Bunun bir�ok nedeni olabilir. Ancak ilk kontrol edilmesi gereken sey,
+   �ekirdeginize System V uzant�lar�n�n kurulu olup olmad�g�n� kontrol
+   etmek olabilir. PostgreSQL shared memory ve semaphores i�in �ekirdek
+   destegine gereksinim duyar.
+   
+    3.3) postmaster'i ba�latt���mda, �pcMemoryCreate hatas� al�yorum. Neden?
+    
+   Ya �ekirde�inizde shared memory deste�iniz d�zg�nce
+   yap�land�r�lmam��t�r, ya da �ekirde�inizdeki mevcut shared memory
+   miktar�n� b�y�tmeniz gerekecektir. Gereksinim duyaca��n�z miktar,
+   mimarinize ve postmaster i�in ayarlad�g�n�z tampon ile backend i�lemi
+   say�s�na ba�l�d�r. T�m sistemler i�in, tamponlar ve i�lemlerde
+   �ntan�ml� say�larla, ~ 1MB kadar yere gereksinmeniz olacakt�r.
+   PostgreSQL 7.3.2 Sistem Y�neticileri Rehberi'ne, shared memory ve
+   semaphorelar hakk�ndaki ayr�nt�l� bilgi i�in bakabilirsiniz.
+   
+    3.4) postmaster'� ba�latt���mda, �pcSemaphoreCreate hatas� al�yorum. Neden?
+    
+   E�er hata, "�pcSemaphoreCreate: semget failed (No space left on
+   device)" ise, �ekirde�iniz yeterli semaphore ile yap�land�r�lmam��
+   demektir. Postgres, her bir potansiyel backend i�in bir semaphore
+   gereksinimi duyar. Ge�ici bir ��z�m, postmaster� backend i�lemleri
+   i�in daha az miktarda s�n�rla ba�latmak olabilir. -N'i varsay�lan
+   de�er olan 32'den k���k bir de�erle ba�lat�n�z. Daha kal�c� bir ��z�m,
+   �ekirde�inizin SEMMNS ve SEMMNI parametrelerini y�kseltmek olacakt�r.
+   
+   �al��mayan semaphore'lar a��r veritaban� i�lemlerinde ��kme
+   yaratabilirler.
+   
+   E�er hata mesaj�n�z ba�ka bir �ey ise, �ekirde�inizde semaphore
+   deste�ini yap�land�rmam�� olabilirsiniz. Shared memory ve
+   semaphore'lar hakk�ndaki daha ayr�nt�l� bilgi i�in PostgreSQL 7.3.2
+   Sistem Y�neticileri Rehberi'ne bakabilirsiniz.
+   
+    3.5) Diger bilgisayarlar�n benim PostgreSQL veritaban� sunucuma
+    ba�lant�lar�n� nas�l kontrol edebilirim?
+    
+   �n tan�ml� olarak, PostgreSQL sadece yerel makineden Unix domain
+   sockets kullanarak ba�lan�lmas�na izin verir. Diger makineler,
+   postmaster'a -i etiketini ge�irmezseniz ve $PGDATA/pg_hba.conf
+   dosyas�n� d�zenleyerek host-based authentication'a olanak vermezseniz,
+   ba�lant� yapamayacaklard�r.
+   
+    3.6) Veritabani motorunu daha iyi ba�ar�m i�in nas�l ayarlayabilirim?
+    
+   Index'ler sorgular� h�zland�rabilir. EXPLAIN komutu, PostgreSQL'in
+   sorgunuzu nas�l yorumlad���n� ve hangi index'leri kulland���n�
+   g�rmenize izin verir.
+   
+   E�er cok fazla INSERT i�lemi yap�yorsan�z, bunlar� b�y�k bir toplu
+   i�lem dosyas�kullan�p COPY komutu ile veritaban�na girmeyi deneyiniz.
+   Bu, tekil INSERT'lerden daha h�zl�d�r. �kinci olarak, BEGIN
+   WORK/COMMIT transaction blo�u i�inde olmayan ifadeler kendi
+   transaction'lar�ndaym�� gibi d���n�l�r. �oklu ifadeleri tek bir
+   transaction blo�u i�inde yapabilirsiniz. Bu, transaction overhead'ini
+   d���recektir. Tek bir transaction blo�u i�inde birden �ok ifadeyi
+   �al��t�rmay� deneyebilirsiniz. Bu da ayn� �ekilde, transaction
+   overhead'ini d���r�r.
+   
+   �e�itli ayarlama se�enekleri mevcuttur. fsync() i�lemini, postmaster'�
+   -o -F se�ene�i ile ba�latarak devre d��� b�rakabilirsiniz. Bu i�lem,
+   fsync()'lerin her transactiondan sonra diski flush etmesini
+   engelleyecektir.
+   
+   Ayn� zamanda, postmaster'i -B se�ene�i ile ba�lat�p, backend i�lemleri
+   taraf�ndan kullan�lan shared memory buffers say�lar�n�
+   artt�rabilirsiniz. E�er bu parametreyi �ok y�ksek tutarsan�z,
+   �ekirde�inizin shared memory b�lgesindeki limiti a�ma olas�l���n�z
+   y�z�nden postmaster ba�layamayabilir. Her bir tampon (buffer) 8K'd�r.
+   �ntan�ml� say� ise 64 tampondur.
+   
+   Ayn� �ekilde, backend'in -S se�ene�ini ge�ici s�ralamalar i�in backend
+   s�re�leri taraf�ndan kullan�lacak haf�zay� artt�rmak amac�yla
+   kullanabilirsiniz. -S se�ene�i kilobayt cinsinden de�er al�r ve �n
+   tan�ml� de�eri 512'dir (512 K)
+   
+   Tablolardaki veriyi bir index'e e�lemek amac�yla gruplama i�in CLUSTER
+   komutunu kullanabilirsiniz. Ayr�nt�l� bilgi i�in CLUSTER komutunun
+   yard�m sayfas�na bakabilirsiniz.
+   
+    3.7) Hangi hata ay�klama �zellikleri bulunmaktad�r?
+    
+   PostgreSQL, hata ay�klama amac�yla kullan�labilecek durum bilgisi
+   rapor eden �e�itli �zeliklere sahiptir.
+   
+   �ncelikle, configure beti�ini --enable-cassert se�ene�iyle
+   �al��t�r�rsan�z, bir �ok assert() backend cal��mas�n� g�zlemler ve
+   beklenmeyen bir durumda program� durdurur.
+   
+   Postmaster ve postgres �e�itli hata ay�klama se�eneklerine sahiptir.
+   �ncelikle, postmaster'� ba�latt���n�zda, standart ��kt�y� ve hatalar�
+   bir log dosyas�na y�nlendirdi�inize emin olun:
 cd /usr/local/pgsql
 ./bin/postmaster >server.log 2>&1 &
 
-Bu i�lem PostgreSQL ana dizinine server.log dosyas� yerle�tirecektir. Bu dosya sunucunun ya�ad��� sorunlar ya da 
-hatalar hakk�nda yararl� bilgiler i�erir. -d se�ene�i, hata ay�klama seviyesini belirten bir rakam ile kullan�l�r. 
-Y�ksek hata ay�klama seviyelerinin b�y�k log dosyalar� olu�turaca��n� unutmay�n�z.
-
-E�er postmaster �al��m�yorsa, postgres backend'ini komut sat�r�ndan �al��t�rabilir ve SQL ifadenizi direk olarak 
-yazabilirsiniz. Bu sadece hata ay�klama amac�yla �nerilir. Burada, noktal� virg�l�n de�il de yeni bir sat�r�n sorguyu 
-sonland�rd���n� unutmay�n�z. E�er hata ay�klama sembolleri ile derlediyseniz, ne oldu�unu g�rmek i�in bir hata 
-ay�klay�c� kullanabilirsiniz. backend postmaster'dan ba�lat�lmad���ndan, e�de�er bir ortamda �al��mamaktad�r ve 
-locking/backend etkile�im sorunlar� artabilir.
-
-E�er postmaster �al���yorsa, bir pencerede psql'i �al��t�r�n ve psql taraf�ndan kullan�lan postgres s�recinin s�re� 
-numaras�n� (PID) bulun. Postgres s�reci ile ili�kilendirmek i�in bir hata ay�klar�c� kullan�n. Sorgular� psql arac�l��� 
-ile �al��t�rabilirsiniz. E�er postgres ba�lang�c�nda hata ay�klamak istiyorsan�z, PGOPTIONS="-W n" se�ene�ini 
-ayarlayabilir ve psql'i ba�latabilirsiniz. Bu i�lem, ba�lang�c�n n saniye kadar gecikmesini sa�layacakt�r; b�ylece hata 
-ay�klay�c�y� s�rece ili�kilendirdikten sonra ba�lang�� s�recinin devam etmesini sa�layabilirsiniz.
-
-postgres program� hata ay�klama ve ba�ar�m �l��mleri i�in -s, -A ve -t se�eneklerine sahiptir.
-3.8) Ba�lanmaya �al���rken, neden "Sorry, too many clients" hatas�n� al�yorum?
-
-Postmaster'�n e�zamanl� olarak ba�latabilece�i backend s�re�leri s�n�rlar�n� artt�rman�z gerekmektedir.
-
-�n tan�ml� de�er 32 s�re�tir. Bunu, postmaster'� uygun -N de�eri ile ya da postgresql.conf dosyas�n� d�zenleyerek 
-yeniden ba�latmakla artt�rabilirsiniz.
-
-E�er -N de�erini 32'den b�y�k yapacaksan�z, ayn� zamanda -B de�erini de de�i�tirmeniz gerekti�ini unutmay�n. -B, -N'nin 
-en az 2 kat� kadar olmal�d�r; daha iyi ba�ar�m i�in bu say�y� daha da artt�rmal�s�n�z. Y�ksek say�daki backend 
-s�re�leri i�in, �e�itli �ekirdek yap�land�rma parametrelerini artt�rman�z gerekecektir. Yap�lmas� gerekenler, SHMMAX, 
-SEMMNS, SEMMNI, NPROC, MAXUPRC ve a��labilecek dosyalar�n maksimum say�s� olan NFILE ve NINODE de�erlerini 
-kar��t�rmakt�r. Bunun nedeni, PostgreSQL'in izin verilen backend s�re�lerinin say�s� �zerinde bir s�n�r� olmas�d�r. 
-B�ylelikle sistem kaynaklar�n�n d���na ��k�lmayacakt�r.
-
-PostgreSQL'in 6.5 s�r�m�ne kadar, en fazla backend say�s� 64 idi ve bunu de�i�tirmek i�in include/storage/sinvaladt.h 
-dosyas� i�indeki MaxBAckendid sabitini de�i�tirdek sonra yaz�l�m� yeniden derlemek gerekiyordu.
-3.9) pgsql_tmp dizinin i�indeki dosyalar nelerdir?
-
-Sorgu �al�st�r�c� (query executer) taraf�ndan yarat�lan ge�ici dosyalard�r. �rnegin, bir s�ralama ORDER BY ile 
-yap�lacaksa ve s�ralama backend'in -s parametresinin izin verdi�inden daha fazla alana gereksinim duyuyorsa, ekstra 
-veriyi tutmak i�in ge�ici dosyalar yarat�l�r.
-
-Ge�ici dosyalar, e�er s�ralama s�ras�nda backend g��mezse otomatik olarak silinecektir. E�er �al��an durumda bir 
-backend'iniz yoksa, pg_tempNNN.NN dosyalar�n� silmeniz g�venlidir.
-3.10) PostgreSQL s�r�mlerini y�kseltmek i�in neden bir dump/reload i�lemi ger�ekle�tirmek zorunday�m?
-
-PostgreSQL tak�m� ara s�r�mlerde sadece k���k de�i�iklikler yapmaktad�r; bu y�zden 7.2 s�r�m�nden 7.2.1'e y�kseltmek 
-dump/restore i�lemi gerekmemektedir. Ancak, esas s�r�mlerde (�rnek: 7.2'den 7.3'e) �o�unlukla sistem tablolar�n�n ve 
-veri dosyalar�n�n i� yap�s� de�i�tirilir. Bu de�i�iklikler �o�unlukla karma��kt�r; dolay�s�yla veri dosyalar�n�n geriye 
-d�n�k uyumlulu�u i�lemlerini yapm�yoruz. Dump i�lemi, veriyi genel bi�imde alaca��ndan yeniden y�kleme esnas�nda veri, 
-yeni i� bi�ime uygun �ekilde yerle�tirilecektir.
-
-Disk bi�iminin de�i�medi�i s�r�mlerde, pg_upgrade beti�i g�ncellemenin bir dump/restore gerektirmeden yap�lmas�n� 
-sa�layacakt�r. pg_upgrade beti�inin o s�r�m i�in bulunup bulunmad���n� s�r�m notlar� i�inde bulabilirsiniz.
-3.11) Nas�l bir donan�m kullanmal�y�m?
-
-PC donan�m� tamamen uyumlu oldu�u i�in, insanlar t�m PC donan�mlar�n�n ayn� kalitede oldu�unu d���n�rler. Oysa b�yle 
-de�ildir. ECC RAM, SCSI ve kaliteli anakartlar daha ucuz donan�mlara g�re daha �ok g�venilirlerdir ve ba�ar�mlar� daha 
-y�ksektir. PostgreSQL hemen hemen t�m donan�mda �al��abilmektedir, ancak g�venilirlik ve ba�ar�m �nemli ise donan�m 
-se�eneklerini �ok iyi ara�t�rmak gereklidir. E-posta listelerimi donan�mlarla ilgili sorular ve de ticaret i�in 
-kullan�labilir.
-��letimsel Sorular
-4.1) Binary cursor ve normal cursor aras�ndaki fark nedir?
-
-DECLARE yard�m sayfas�na bak�n�z.
-4.2) Sorgunun sadece ilk birka� sat�r�n� nas�l SELECT edebilirim?
-
-FETCH yard�m sayfas�na bak�n�z, ya da SELECT ... LIMIT ... kullan�n�z.
-
-�lk birka� sat�r� almak isteseniz bile, t�m sorgu de�erlendirilmek durumunda kal�nabilir. ORDER BY i�eren bir sorgu 
-d���n�n. E�er ORDER BY i�e e�le�en bir index varsa, PostgreSQL istenen ilk birka� sat�r� i�leyebilir, ya da t�m sorgu 
-istenen sat�rlar �retilene kadar i�lenebilir.
-4.3) psql'in i�inde g�rd�g�m tablolar�n ya da di�er �eylerin listesini nas�l alabilirim?
-
-pgsql/src/bin/psql/describe.c i�indeki psql kaynak kodunu okuyabilirsiniz. Bu kod, psql'in \ ile ba�layan komutlar�n�n 
-��kt�s�n� olusturan SQL komutlar�n� i�erir. Ayn� zamanda, psql'i -E se�ene�i ile ba�lat�p, verdi�iniz komutlar� 
-�al��t�rmak i�in yapt��� sorgular�n ��kt�lar�n� g�rebilirsiniz.
-4.4) Bir tablodan bir kolonu nas�l kald�rabilirim?
-
-Bu �zellik (ALTER TABLE DROP COLUMN) 7.3 s�r�m� ile gelmi�tir. Eski s�r�mlerde a�a��dakileri uygulamal�s�n�z:
-
+   Bu i�lem PostgreSQL ana dizinine server.log dosyas� yerle�tirecektir.
+   Bu dosya sunucunun ya�ad��� sorunlar ya da hatalar hakk�nda yararl�
+   bilgiler i�erir. -d se�ene�i, hata ay�klama seviyesini belirten bir
+   rakam ile kullan�l�r. Y�ksek hata ay�klama seviyelerinin b�y�k log
+   dosyalar� olu�turaca��n� unutmay�n�z.
+   
+   E�er postmaster �al��m�yorsa, postgres backend'ini komut sat�r�ndan
+   �al��t�rabilir ve SQL ifadenizi direk olarak yazabilirsiniz. Bu sadece
+   hata ay�klama amac�yla �nerilir. Burada, noktal� virg�l�n de�il de
+   yeni bir sat�r�n sorguyu sonland�rd���n� unutmay�n�z. E�er hata
+   ay�klama sembolleri ile derlediyseniz, ne oldu�unu g�rmek i�in bir
+   hata ay�klay�c� kullanabilirsiniz. backend postmaster'dan
+   ba�lat�lmad���ndan, e�de�er bir ortamda �al��mamaktad�r ve
+   locking/backend etkile�im sorunlar� artabilir.
+   
+   E�er postmaster �al���yorsa, bir pencerede psql'i �al��t�r�n ve psql
+   taraf�ndan kullan�lan postgres s�recinin s�re� numaras�n� (PID) bulun.
+   Postgres s�reci ile ili�kilendirmek i�in bir hata ay�klar�c� kullan�n.
+   Sorgular� psql arac�l��� ile �al��t�rabilirsiniz. E�er postgres
+   ba�lang�c�nda hata ay�klamak istiyorsan�z, PGOPTIONS="-W n" se�ene�ini
+   ayarlayabilir ve psql'i ba�latabilirsiniz. Bu i�lem, ba�lang�c�n n
+   saniye kadar gecikmesini sa�layacakt�r; b�ylece hata ay�klay�c�y�
+   s�rece ili�kilendirdikten sonra ba�lang�� s�recinin devam etmesini
+   sa�layabilirsiniz.
+   
+   postgres program� hata ay�klama ve ba�ar�m �l��mleri i�in -s, -A ve -t
+   se�eneklerine sahiptir.
+   
+    3.8) Ba�lanmaya �al���rken, neden "Sorry, too many clients" hatas�n�
+    al�yorum?
+    
+   Postmaster'�n e�zamanl� olarak ba�latabilece�i backend s�re�leri
+   s�n�rlar�n� artt�rman�z gerekmektedir.
+   
+   �n tan�ml� de�er 32 s�re�tir. Bunu, postmaster'� uygun -N de�eri ile
+   ya da postgresql.conf dosyas�n� d�zenleyerek yeniden ba�latmakla
+   artt�rabilirsiniz.
+   
+   E�er -N de�erini 32'den b�y�k yapacaksan�z, ayn� zamanda -B de�erini
+   de de�i�tirmeniz gerekti�ini unutmay�n. -B, -N'nin en az 2 kat� kadar
+   olmal�d�r; daha iyi ba�ar�m i�in bu say�y� daha da artt�rmal�s�n�z.
+   Y�ksek say�daki backend s�re�leri i�in, �e�itli �ekirdek yap�land�rma
+   parametrelerini artt�rman�z gerekecektir. Yap�lmas� gerekenler,
+   SHMMAX, SEMMNS, SEMMNI, NPROC, MAXUPRC ve a��labilecek dosyalar�n
+   maksimum say�s� olan NFILE ve NINODE de�erlerini kar��t�rmakt�r. Bunun
+   nedeni, PostgreSQL'in izin verilen backend s�re�lerinin say�s�
+   �zerinde bir s�n�r� olmas�d�r. B�ylelikle sistem kaynaklar�n�n d���na
+   ��k�lmayacakt�r.
+   
+   PostgreSQL'in 6.5 s�r�m�ne kadar, en fazla backend say�s� 64 idi ve
+   bunu de�i�tirmek i�in include/storage/sinvaladt.h dosyas� i�indeki
+   MaxBAckendid sabitini de�i�tirdek sonra yaz�l�m� yeniden derlemek
+   gerekiyordu.
+   
+    3.9) pgsql_tmp dizinin i�indeki dosyalar nelerdir?
+    
+   Sorgu �al�st�r�c� (query executer) taraf�ndan yarat�lan ge�ici
+   dosyalard�r. �rnegin, bir s�ralama ORDER BY ile yap�lacaksa ve
+   s�ralama backend'in -s parametresinin izin verdi�inden daha fazla
+   alana gereksinim duyuyorsa, ekstra veriyi tutmak i�in ge�ici dosyalar
+   yarat�l�r.
+   
+   Ge�ici dosyalar, e�er s�ralama s�ras�nda backend g��mezse otomatik
+   olarak silinecektir. E�er �al��an durumda bir backend'iniz yoksa,
+   pg_tempNNN.NN dosyalar�n� silmeniz g�venlidir.
+   
+    3.10) PostgreSQL s�r�mlerini y�kseltmek i�in neden bir dump/reload i�lemi
+    ger�ekle�tirmek zorunday�m?
+    
+   PostgreSQL tak�m� ara s�r�mlerde sadece k���k de�i�iklikler
+   yapmaktad�r; bu y�zden 7.2 s�r�m�nden 7.2.1'e y�kseltmek dump/restore
+   i�lemi gerekmemektedir. Ancak, esas s�r�mlerde (�rnek: 7.2'den 7.3'e)
+   �o�unlukla sistem tablolar�n�n ve veri dosyalar�n�n i� yap�s�
+   de�i�tirilir. Bu de�i�iklikler �o�unlukla karma��kt�r; dolay�s�yla
+   veri dosyalar�n�n geriye d�n�k uyumlulu�u i�lemlerini yapm�yoruz. Dump
+   i�lemi, veriyi genel bi�imde alaca��ndan yeniden y�kleme esnas�nda
+   veri, yeni i� bi�ime uygun �ekilde yerle�tirilecektir.
+   
+   Disk bi�iminin de�i�medi�i s�r�mlerde, pg_upgrade beti�i g�ncellemenin
+   bir dump/restore gerektirmeden yap�lmas�n� sa�layacakt�r. pg_upgrade
+   beti�inin o s�r�m i�in bulunup bulunmad���n� s�r�m notlar� i�inde
+   bulabilirsiniz.
+   
+    3.11) Nas�l bir donan�m kullanmal�y�m?
+    
+   PC donan�m� tamamen uyumlu oldu�u i�in, insanlar t�m PC donan�mlar�n�n
+   ayn� kalitede oldu�unu d���n�rler. Oysa b�yle de�ildir. ECC RAM, SCSI
+   ve kaliteli anakartlar daha ucuz donan�mlara g�re daha �ok
+   g�venilirlerdir ve ba�ar�mlar� daha y�ksektir. PostgreSQL hemen hemen
+   t�m donan�mda �al��abilmektedir, ancak g�venilirlik ve ba�ar�m �nemli
+   ise donan�m se�eneklerini �ok iyi ara�t�rmak gereklidir. E-posta
+   listelerimi donan�mlarla ilgili sorular ve de ticaret i�in
+   kullan�labilir.
+     _________________________________________________________________
+   
+                             ��letimsel Sorular
+                                      
+    4.1) Binary cursor ve normal cursor aras�ndaki fark nedir?
+    
+   DECLARE yard�m sayfas�na bak�n�z.
+   
+    4.2) Sorgunun sadece ilk birka� sat�r�n� nas�l SELECT edebilirim?
+    
+   FETCH yard�m sayfas�na bak�n�z, ya da SELECT ... LIMIT ... kullan�n�z.
+   
+   �lk birka� sat�r� almak isteseniz bile, t�m sorgu de�erlendirilmek
+   durumunda kal�nabilir. ORDER BY i�eren bir sorgu d���n�n. E�er ORDER
+   BY i�e e�le�en bir index varsa, PostgreSQL istenen ilk birka� sat�r�
+   i�leyebilir, ya da t�m sorgu istenen sat�rlar �retilene kadar
+   i�lenebilir.
+   
+    4.3) psql'in i�inde g�rd�g�m tablolar�n ya da di�er �eylerin listesini
+    nas�l alabilirim?
+    
+   pgsql/src/bin/psql/describe.c i�indeki psql kaynak kodunu
+   okuyabilirsiniz. Bu kod, psql'in \ ile ba�layan komutlar�n�n ��kt�s�n�
+   olusturan SQL komutlar�n� i�erir. Ayn� zamanda, psql'i -E se�ene�i ile
+   ba�lat�p, verdi�iniz komutlar� �al��t�rmak i�in yapt��� sorgular�n
+   ��kt�lar�n� g�rebilirsiniz.
+   
+    4.4) Bir tablodan bir kolonu nas�l kald�rabilirim?
+    
+   Bu �zellik (ALTER TABLE DROP COLUMN) 7.3 s�r�m� ile gelmi�tir. Eski
+   s�r�mlerde a�a��dakileri uygulamal�s�n�z:
 BEGIN;
 LOCK TABLE old_table;
 SELECT ...  -- select all columns but the one you want to remove
@@ -482,355 +692,421 @@ INTO TABLE new_table
 FROM old_table;
 DROP TABLE old_table;
 ALTER TABLE new_table RENAME TO old_table;
-COMMIT;		
-		
-
-4.5) Bir sat�r, tablo ve veritaban� i�in en fazla b�y�kl�k nedir?
-
-S�n�rlar:
-
-Veritaban� i�in en fazla b�y�kl�k nedir?
-S�n�rs�z (32 TB'l�k veritaban� bulunmaktad�r)
-
-Bir tablo i�in en fazla b�y�kl�k nedir?
-32 TB
-
-Bir sat�r i�in en fazla b�y�kl�k nedir?
-1.6 TB
-
-Bir alan i�in en fazla b�y�kl�k nedir?
-1 GB
-
-Tabloda en fazla sat�r say�s� ka�t�r?
-S�n�rs�z
-
-Bir tabloda olabilecek en fazla kolon say�s� ka�t�r?
-Kolon tiplerine ba�l� olarak 250-1600
-
-Bir tabloda olabilecek en fazla index say�s� ka�t�r?
-S�n�rs�z
-
-Tabii ki bunlar asl�nda s�n�rs�z degildir. Burada belirtilen s�n�rlar, fiziksel s�n�rlar�n haricindeki s�n�rlard�r. Bo� 
-disk alan�, haf�za/takas alan� na ba�l� s�n�rlamalar vard�r. Ba�ar�m, s�n�r de�erlere yakla�t�k�a, ya da de�erler �ok 
-b�y�k oldu�unda d��ebilir.
-
-Bir tablo i�in b�y�kl�k s�n�r� olan 32 TB, i�letim sisteminin b�y�k dosya deste�i olup olmamas�ndan ba��ms�zd�r. B�y�k 
-tablolar, 1 GB'lik dosyalarda sakland��� i�in, dosya sistemi s�n�rlar�nin bir �nemi yoktur.
-
-Tablo ve kolon say�s� b�y�kl�kleri, �n tan�ml� blok b�y�kl��� 32k ya ��kar�larak artt�r�labilir.
-4.6) Tipik bir metin dosyas�ndaki veriyi saklamak i�in ne kadar disk alan� gereklidir?
-
-Bir PostgreSQL veritaban�, veriyi "flat" metin dosyas�nda saklamak i�in gereken alan�n 5 kat fazla disk alan�na 
-gereksinim duyabilir.
-
-Her sat�r�nda bir tamsay� ve metin (text) i�eren, 100.000 sat�rl�k bir dosya d���n�n. Her sat�r�n ortalama 20 byte 
-oldu�unu farzedelim. Metin dosyas� 2.8 MB olacakt�r. Bu veriyi tutan PostgreSQL veritaban� yakla��k 6.4 MB yer 
-kaplayacakt�r.
-
+COMMIT;
+                
+    4.5) Bir sat�r, tablo ve veritaban� i�in en fazla b�y�kl�k nedir?
+    
+   S�n�rlar:
+   
+   Veritaban� i�in en fazla b�y�kl�k nedir?
+   S�n�rs�z (32 TB'l�k veritaban� bulunmaktad�r)
+   Bir tablo i�in en fazla b�y�kl�k nedir?
+   32 TB
+   Bir sat�r i�in en fazla b�y�kl�k nedir?
+   1.6 TB
+   Bir alan i�in en fazla b�y�kl�k nedir?
+   1 GB
+   Tabloda en fazla sat�r say�s� ka�t�r?
+   S�n�rs�z
+   Bir tabloda olabilecek en fazla kolon say�s� ka�t�r?
+   Kolon tiplerine ba�l� olarak 250-1600
+   Bir tabloda olabilecek en fazla index say�s� ka�t�r?
+   S�n�rs�z
+   
+   Tabii ki bunlar asl�nda s�n�rs�z degildir. Burada belirtilen s�n�rlar,
+   fiziksel s�n�rlar�n haricindeki s�n�rlard�r. Bo� disk alan�,
+   haf�za/takas alan� na ba�l� s�n�rlamalar vard�r. Ba�ar�m, s�n�r
+   de�erlere yakla�t�k�a, ya da de�erler �ok b�y�k oldu�unda d��ebilir.
+   
+   Bir tablo i�in b�y�kl�k s�n�r� olan 32 TB, i�letim sisteminin b�y�k
+   dosya deste�i olup olmamas�ndan ba��ms�zd�r. B�y�k tablolar, 1 GB'lik
+   dosyalarda sakland��� i�in, dosya sistemi s�n�rlar�nin bir �nemi
+   yoktur.
+   
+   Tablo ve kolon say�s� b�y�kl�kleri, �n tan�ml� blok b�y�kl��� 32k ya
+   ��kar�larak artt�r�labilir.
+   
+    4.6) Tipik bir metin dosyas�ndaki veriyi saklamak i�in ne kadar disk alan�
+    gereklidir?
+    
+   Bir PostgreSQL veritaban�, veriyi "flat" metin dosyas�nda saklamak
+   i�in gereken alan�n 5 kat fazla disk alan�na gereksinim duyabilir.
+   
+   Her sat�r�nda bir tamsay� ve metin (text) i�eren, 100.000 sat�rl�k bir
+   dosya d���n�n. Her sat�r�n ortalama 20 byte oldu�unu farzedelim. Metin
+   dosyas� 2.8 MB olacakt�r. Bu veriyi tutan PostgreSQL veritaban�
+   yakla��k 6.4 MB yer kaplayacakt�r.
   36 byte: Her bir sat�r ba�l��� (yakla��k)
-+ 24 byte: Bir tamsay� (int) alan� ve bir metin (text) alan� 
++ 24 byte: Bir tamsay� (int) alan� ve bir metin (text) alan�
 +  4 byte: Sayfada tuple a pointer
 ----------------------------------------
   64 byte -> kay�t ba��na
 
-PostgreSQL'de veri sayfas� (data page) b�y�kl��� 8192 byte (8k)d�r, dolay�s�yla:
-
+   PostgreSQL'de veri sayfas� (data page) b�y�kl��� 8192 byte (8k)d�r,
+   dolay�s�yla:
 8192 byte -> page ba��na
 -------------------------  =  Her bir veritaban� page'� ba��na 128 sat�r (yakla��k)
   Sat�r ba��na 64 byte
-  
+
 100000 veri sat�r�
 --------------------  =  782 veritaban� sayfas�
      128 sat�r
 
-782 veritaban� sayfas� * sayfa ba��na 8192 byte = 6,406,144 bytes (6.4 MB)
-
-Index'ler �ok fazla yere gereksinim duymazlar, ama index'lenmi� veriyi tutacaklar�ndan b�y�k olabilirler.
-
-NULL de�erler bitmapler i�inde tutulur; dolay�s�yla �ok az yer kaplarlar.
-4.7) Veritaban�nda hangi tablo ya da index'lerin tan�mland���n� nas�l g�rebilirim?
-
-psql, bu t�r bilgileri g�stermek i�in, \ ile ba�layan bir �ok komut sunmaktad�r. \? komutu ile bu komutlar� 
-g�rebilirsiniz. Ayr�ca, bunlar� a��klayan ve pg_ ile ba�layan �ok say�da sistem tablosu bulunmaktad�r. Ayn� zamanda, 
-psql -l ile t�m veritabanlar�n� listeyelebirsiniz.
-
-Ayr�ca, pgsql/src/tutorial/syscat.source kodunu inceleyebilirsiniz. Bu dosya, veritaban� sistem dosyalar�ndan bilgiyi 
-almak i�in gereksinim duyulan bir �ok SELECT'leri g�sterir.
-4.8) Sorgular�m cok yava�, ya da index'lerimi kullanm�yorlar. Neden?
-
-Indexler her sorgu taraf�ndan otomatik olarak kullan�lmazlar. Indexler e�er bir tablonun b�y�kl��� minimum bir 
-b�y�kl�kten fazla ise ve sorgu tablodaki sat�rlar�n sadece k���k bir y�zdesini se�iyorsa kullan�l�r. Bunun nedeni, 
-index eri�iminin neden oldu�u raslansal disk eri�imi nin diskin ya da tablonun s�ral� okunmas�ndan daha yavas 
-olabilmesidir.
-
-Bir index'in kullan�l�p kullan�lmayaca��n� belirlemek i�in, PostgreSQL tablo hakk�ndaki istatistiklere gereksinmesi 
-vard�r. Bu istatistikler, VACUUM ANALYZE kullan�larak toplan�rlar. Optimizer, istatistikleri kullanarak, tabloda ka� 
-sat�r oldu�unu ve bilir ve indexin kullan�l�p kullan�lmayaca��na daha iyi karar verir. Istatistikler, ayn� zamanda en 
-uygun join s�ras�n� ve y�ntemini belirlemekte �ok �nemlidir. �statistik toplanmas�, tablo i�erikleri de�i�tik�e 
-periyodik olarak yap�lmal�d�r.
-
-Indexler normalde ORDER BY sorgular� ya da join i�lemlerini ger�ekle�tirmek i�in kullan�lmazlar. A��k bir s�ralamay� 
-takip eden s�ral� bir arama (sequential scan), b�y�k bir tabloda index aramas� yapmaktan genelde daha h�zl�d�r.
-Ancak, ORDER BY ile birle�mi� LIMIT genellikle bir index kullanacakt�r; ��nk� tablonun sadece belirli bir miktar� 
-d�nd�r�lecektir. Asl�nda, MAX() ve MIN() fonksiyonlar�n�n index kullanmamalar�ndan dolay�, bu gibi de�erleri ORDER BY 
-ve LIMIT kullanarak da almak olas�d�r:
-
+   782 veritaban� sayfas� * sayfa ba��na 8192 byte = 6,406,144 bytes (6.4
+   MB)
+   
+   Index'ler �ok fazla yere gereksinim duymazlar, ama index'lenmi� veriyi
+   tutacaklar�ndan b�y�k olabilirler.
+   
+   NULL de�erler bitmapler i�inde tutulur; dolay�s�yla �ok az yer
+   kaplarlar.
+   
+    4.7) Veritaban�nda hangi tablo ya da index'lerin tan�mland���n� nas�l
+    g�rebilirim?
+    
+   psql, bu t�r bilgileri g�stermek i�in, \ ile ba�layan bir �ok komut
+   sunmaktad�r. \? komutu ile bu komutlar� g�rebilirsiniz. Ayr�ca,
+   bunlar� a��klayan ve pg_ ile ba�layan �ok say�da sistem tablosu
+   bulunmaktad�r. Ayn� zamanda, psql -l ile t�m veritabanlar�n�
+   listeyelebirsiniz.
+   
+   Ayr�ca, pgsql/src/tutorial/syscat.source kodunu inceleyebilirsiniz. Bu
+   dosya, veritaban� sistem dosyalar�ndan bilgiyi almak i�in gereksinim
+   duyulan bir �ok SELECT'leri g�sterir.
+   
+    4.8) Sorgular�m cok yava�, ya da index'lerimi kullanm�yorlar. Neden?
+    
+   Indexler her sorgu taraf�ndan otomatik olarak kullan�lmazlar. Indexler
+   e�er bir tablonun b�y�kl��� minimum bir b�y�kl�kten fazla ise ve sorgu
+   tablodaki sat�rlar�n sadece k���k bir y�zdesini se�iyorsa kullan�l�r.
+   Bunun nedeni, index eri�iminin neden oldu�u raslansal disk eri�imi nin
+   diskin ya da tablonun s�ral� okunmas�ndan daha yavas olabilmesidir.
+   
+   Bir index'in kullan�l�p kullan�lmayaca��n� belirlemek i�in, PostgreSQL
+   tablo hakk�ndaki istatistiklere gereksinmesi vard�r. Bu istatistikler,
+   VACUUM ANALYZE kullan�larak toplan�rlar. Optimizer, istatistikleri
+   kullanarak, tabloda ka� sat�r oldu�unu ve bilir ve indexin kullan�l�p
+   kullan�lmayaca��na daha iyi karar verir. Istatistikler, ayn� zamanda
+   en uygun join s�ras�n� ve y�ntemini belirlemekte �ok �nemlidir.
+   �statistik toplanmas�, tablo i�erikleri de�i�tik�e periyodik olarak
+   yap�lmal�d�r.
+   
+   Indexler normalde ORDER BY sorgular� ya da join i�lemlerini
+   ger�ekle�tirmek i�in kullan�lmazlar. A��k bir s�ralamay� takip eden
+   s�ral� bir arama (sequential scan), b�y�k bir tabloda index aramas�
+   yapmaktan genelde daha h�zl�d�r.
+   Ancak, ORDER BY ile birle�mi� LIMIT genellikle bir index
+   kullanacakt�r; ��nk� tablonun sadece belirli bir miktar�
+   d�nd�r�lecektir. Asl�nda, MAX() ve MIN() fonksiyonlar�n�n index
+   kullanmamalar�ndan dolay�, bu gibi de�erleri ORDER BY ve LIMIT
+   kullanarak da almak olas�d�r:
     SELECT col
     FROM tab
     ORDER BY col [ DESC ]
     LIMIT 1;
 
-E�er optimizer'�n s�ral� arama yapmas�n�n yanl�� oldu�una inan�yorsan�z, SET enable_seqscan TO 'off' kullan�n ve index 
-kullanan aramalar�n hala daha h�zl� olup olmad���n� g�r�n.
-
-LIKE ya da ~ gibi operat�rler kullan�yorsan�z, index'ler sadece a�a��daki ko�ullarda kullan�labilir:
-
-    * Arama dizininin ba��, dizinin ba�� ile ba�lanmal�d�r. Yani,
-          o LIKE sorgular� % ile ba�lamamal�d�r.
-          o D�zenli ifade sorgular� ^ i�e ba�lamamal�d�r.
-    * Arama metni bir karakter s�n�f� ile ba�layamaz. �rnek: [a-e]
-    * ILIKE ve ~* gibi b�y�k/k���k harfe duyars�z aramalar index'lerden yararlanmazlar. Onun yerine, b�l�m 4.12'de 
-anlat�lan fonksiyonel index'leri kullanabilirsiniz.
-    * initdb s�ras�nda �ntan�ml� C locale'i kullan�lmal�d�r.
-
-4.9) query-optimizer'�n sorgular�m� nas�l de�erlendirdi�ini, i�leme soktu�unu nas�l g�rebilirim?
-
-EXPLAIN yard�m sayfas�na bak�n�z.
-4.10) R-tree index nedir?
-
-R-tree index, uzaysal (spatial) verileri indexlemek i�in kullan�l�r. Bir hash index, dizi aramalar�nda (range search) 
-kullan�lamaz. B-tree index dizi aramalar�nda sadece tek boyutlu �al��maktad�r. R-tree, �ok boyutlu veriyi destekler. 
-�rne�in, e�er bir R-tree index point veri tipi �zerinde in�a edililebilirse, sistem "select all points within a 
-bounding rectangle" gibi sorgulara daha verimli yan�tlar verecektir.
-
-Orijinal R-tree tasar�m�n� a��klayan belge:
-
-Guttman, A. "R-trees: A Dynamic Index Structure for Spatial Searching." Proceedings of the 1984 ACM SIGMOD Int'l Conf 
-on Mgmt of Data, 45-57.
-
-Bu belgeyi, Stonebraker'�n "Readings in Database Systems" kitab�nda bulabilirsiniz.
-
-G�m�l� R-tree indexleri poligon ve boxlar� kullanabilir. Teorik olarak, R-tree indexlerin �zelliklerini geni�letmek bir 
-miktar �aba gerektirir ve bunun nas�l yap�laca��na dair bir belgemiz hen�z bulunmamaktad�r.
-4.11) Genetic Query Optimizer nedir?
-
-GEQO mod�l�, Genetic Algorithm(GA) kullan�larak tablolar birle�tirildi�inde sorgu optimizasyonunu h�zland�r�r.
-4.12) D�zenli ifade (Regular Expression) aramalar�n� ve b�y�k/k���k harfe duyars�z aramalar� nas�l yapabilirim? Bu 
-b�y�k(k���k harfe duyarl� aramalar i�in index'i nas�l kullanabilirim?
-
-~ operat�r� d�zenli ifade e�le�mesi ve ~* b�y�k/k���k harfe duyars�z d�zenli ifade e�le�mesi yapar. B�y�k/k���k harfe 
-duyarl� olan LIKE'�n b�y�k/k���k harfe duyars�z olan bi�imi ILIKE't�r ve PostgreSQL 7.1 s�r�m� ile birlikte gelmi�tir.
-
-B�y�k-k���k harfe duyars�z e�itlik kar��la�t�rmalar� a�a��daki gibi ifade edilir:
-
+   E�er optimizer'�n s�ral� arama yapmas�n�n yanl�� oldu�una
+   inan�yorsan�z, SET enable_seqscan TO 'off' kullan�n ve index kullanan
+   aramalar�n hala daha h�zl� olup olmad���n� g�r�n.
+   
+   LIKE ya da ~ gibi operat�rler kullan�yorsan�z, index'ler sadece
+   a�a��daki ko�ullarda kullan�labilir:
+     * Arama dizininin ba��, dizinin ba�� ile ba�lanmal�d�r. Yani,
+          + LIKE sorgular� % ile ba�lamamal�d�r.
+          + D�zenli ifade sorgular� ^ i�e ba�lamamal�d�r.
+     * Arama metni bir karakter s�n�f� ile ba�layamaz. �rnek: [a-e]
+     * ILIKE ve ~* gibi b�y�k/k���k harfe duyars�z aramalar index'lerden
+       yararlanmazlar. Onun yerine, b�l�m 4.12'de anlat�lan fonksiyonel
+       index'leri kullanabilirsiniz.
+     * initdb s�ras�nda �ntan�ml� C locale'i kullan�lmal�d�r.
+       
+    4.9) query-optimizer'�n sorgular�m� nas�l de�erlendirdi�ini, i�leme
+    soktu�unu nas�l g�rebilirim?
+    
+   EXPLAIN yard�m sayfas�na bak�n�z.
+   
+    4.10) R-tree index nedir?
+    
+   R-tree index, uzaysal (spatial) verileri indexlemek i�in kullan�l�r.
+   Bir hash index, dizi aramalar�nda (range search) kullan�lamaz. B-tree
+   index dizi aramalar�nda sadece tek boyutlu �al��maktad�r. R-tree, �ok
+   boyutlu veriyi destekler. �rne�in, e�er bir R-tree index point veri
+   tipi �zerinde in�a edililebilirse, sistem "select all points within a
+   bounding rectangle" gibi sorgulara daha verimli yan�tlar verecektir.
+   
+   Orijinal R-tree tasar�m�n� a��klayan belge:
+   
+   Guttman, A. "R-trees: A Dynamic Index Structure for Spatial
+   Searching." Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of
+   Data, 45-57.
+   
+   Bu belgeyi, Stonebraker'�n "Readings in Database Systems" kitab�nda
+   bulabilirsiniz.
+   
+   G�m�l� R-tree indexleri poligon ve boxlar� kullanabilir. Teorik
+   olarak, R-tree indexlerin �zelliklerini geni�letmek bir miktar �aba
+   gerektirir ve bunun nas�l yap�laca��na dair bir belgemiz hen�z
+   bulunmamaktad�r.
+   
+    4.11) Genetic Query Optimizer nedir?
+    
+   GEQO mod�l�, Genetic Algorithm(GA) kullan�larak tablolar
+   birle�tirildi�inde sorgu optimizasyonunu h�zland�r�r.
+   
+    4.12) D�zenli ifade (Regular Expression) aramalar�n� ve b�y�k/k���k harfe
+    duyars�z aramalar� nas�l yapabilirim? Bu b�y�k(k���k harfe duyarl� aramalar
+    i�in index'i nas�l kullanabilirim?
+    
+   ~ operat�r� d�zenli ifade e�le�mesi ve ~* b�y�k/k���k harfe duyars�z
+   d�zenli ifade e�le�mesi yapar. B�y�k/k���k harfe duyarl� olan LIKE'�n
+   b�y�k/k���k harfe duyars�z olan bi�imi ILIKE't�r ve PostgreSQL 7.1
+   s�r�m� ile birlikte gelmi�tir.
+   
+   B�y�k-k���k harfe duyars�z e�itlik kar��la�t�rmalar� a�a��daki gibi
+   ifade edilir:
 SELECT *
 FROM tab
 WHERE lower(col) = 'abc'
-		
-
-Bu standart bir index yaratmayacakt�r. Ancak e�er fonksiyonel bir index yarat�rsan�z; o kullan�lacakt�r:
-
+                
+   Bu standart bir index yaratmayacakt�r. Ancak e�er fonksiyonel bir
+   index yarat�rsan�z; o kullan�lacakt�r:
 CREATE INDEX tabindex on tab (lower(col));
 
-4.13) Bir sorguda, bir alanin "NULL" oldu�unu nas�l ortaya ��karabilirim?
-
-Kolonu, IS NULL ve IS NOT NULL ile test edebilirsiniz.
-4.14) �esitli karakter tipleri aras�ndaki farklar nelerdir?
-
-Veri Tipi	    �� Ad�              Not
+    4.13) Bir sorguda, bir alanin "NULL" oldu�unu nas�l ortaya ��karabilirim?
+    
+   Kolonu, IS NULL ve IS NOT NULL ile test edebilirsiniz.
+   
+    4.14) �esitli karakter tipleri aras�ndaki farklar nelerdir?
+    
+Veri Tipi           �� Ad�              Not
 --------------------------------------------------
 VARCHAR(n)      varchar         boyut en b�y�k uzunlu�u verir; sadece verilen kadar veri tutulur.
 CHAR(n)         bpchar          belirtilen uzunlu�a kadar sonuna  bo�luk eklenir.
-TEXT            text            uzunlukta herhangi bir �st s�n�r yoktur. 
+TEXT            text            uzunlukta herhangi bir �st s�n�r yoktur.
 BYTEA           bytea           variable-length byte array (null-byte safe)
-"char"          char            bir karakter 
-		
-
-�� adlar� (internal name) sistem kataloglar�n� ve baz� hata mesajlar�n� incelerken g�receksiniz.
-
-�lk d�rt veri tipi "varlena" tipidir (yani, diskteki ilk 4 bayt uzunluktur; devam� da veridir.) Dolay�s�yla, kullan�lan 
-ger�ek alan, belirtilen alandan biraz daha b�y�kt�r. Ancak, bu veri tipleri, s�k��t�r�lmaya tabi tutulabilir; 
-dolay�s�yla disk alan� beklenilenden k���k olabilir. VARCHAR(n) b�y�kl��� artabilen ama en b�y�k uzunlu�u s�n�rl� olan 
-verileri saklamak i�in en uygun y�ntemdir. TEXT, 1 GB b�y�kl��e kadar olan verileri tutmak i�in kullan�l�r.
-
-CHAR(n), ayn� uzunluktaki dizilerin saklanmas� i�in kullan�m�r. CHAR(n) belirtilen uzunlu�a kadar bo�luk ile doldurur; 
-ancak VARCHAR(n) sadece verilen karakterleri saklar. BYTEA binary veri saklamak i�indir; ayr�ca "NULL" bayt i�eren 
-de�erleri de saklar. Burada anlat�lan �� veri tipi de benzer ba�ar�m karakteristiklere sahiptir.
-4.15.1) Nas�l serial/otomatik artan (auto-incrementing) bir alan yaratabilirim?
-
-PostgreSQL'de SERIAL veri tipi vard�r. Bu veri tipi bir sequence ve kolon �zerinde bir index yarat�r.
-
-�rnek, a�a��daki sorgu:
-
+"char"          char            bir karakter
+                
+   �� adlar� (internal name) sistem kataloglar�n� ve baz� hata
+   mesajlar�n� incelerken g�receksiniz.
+   
+   �lk d�rt veri tipi "varlena" tipidir (yani, diskteki ilk 4 bayt
+   uzunluktur; devam� da veridir.) Dolay�s�yla, kullan�lan ger�ek alan,
+   belirtilen alandan biraz daha b�y�kt�r. Ancak, bu veri tipleri,
+   s�k��t�r�lmaya tabi tutulabilir; dolay�s�yla disk alan� beklenilenden
+   k���k olabilir. VARCHAR(n) b�y�kl��� artabilen ama en b�y�k uzunlu�u
+   s�n�rl� olan verileri saklamak i�in en uygun y�ntemdir. TEXT, 1 GB
+   b�y�kl��e kadar olan verileri tutmak i�in kullan�l�r.
+   
+   CHAR(n), ayn� uzunluktaki dizilerin saklanmas� i�in kullan�m�r.
+   CHAR(n) belirtilen uzunlu�a kadar bo�luk ile doldurur; ancak
+   VARCHAR(n) sadece verilen karakterleri saklar. BYTEA binary veri
+   saklamak i�indir; ayr�ca "NULL" bayt i�eren de�erleri de saklar.
+   Burada anlat�lan �� veri tipi de benzer ba�ar�m karakteristiklere
+   sahiptir.
+   
+    4.15.1) Nas�l serial/otomatik artan (auto-incrementing) bir alan
+    yaratabilirim?
+    
+   PostgreSQL'de SERIAL veri tipi vard�r. Bu veri tipi bir sequence ve
+   kolon �zerinde bir index yarat�r.
+   
+   �rnek, a�a��daki sorgu:
 CREATE TABLE person (
     id   SERIAL,
     name TEXT
-);		
-		
-
-buna �evrilir:
-
+);
+                
+   buna �evrilir:
 CREATE SEQUENCE person_id_seq;
 CREATE TABLE person (
     id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),
     name TEXT
 );
-CREATE UNIQUE INDEX person_id_key ON person ( id );		
-		
-
-Sequenceler hakk�nda daha fazla bilgi i�in create_sequence yard�m sayfas�na bakabilirsiniz. Her sat�r�n OID alan�n� 
-tekil bir say� olarak alabilirsiniz. Ancak, veritaban�n�z�n dump'�n� al�p yeniden y�klerseniz, OID de�erlerini 
-koruyabilmek i�in pg_dump'�n -o parametresini ya da "COPY WITH OIDS" se�ene�ini kullanman�z gerekecektir.
-4.15.2) SERIAL giri�inin degerini nas�l alabilirim?
-
-Bir yakla��m, sequence nesnesindeki SERIAL de�erini, veriyi girmeden �nce nextval() ile al�p, ald���n�z de�eri 
-kendinizin girmesidir. 4.15.1'deki �rnek tabloyu kullanarak bir �rnek verelim:
-
+CREATE UNIQUE INDEX person_id_key ON person ( id );
+                
+   Sequenceler hakk�nda daha fazla bilgi i�in create_sequence yard�m
+   sayfas�na bakabilirsiniz. Her sat�r�n OID alan�n� tekil bir say�
+   olarak alabilirsiniz. Ancak, veritaban�n�z�n dump'�n� al�p yeniden
+   y�klerseniz, OID de�erlerini koruyabilmek i�in pg_dump'�n -o
+   parametresini ya da "COPY WITH OIDS" se�ene�ini kullanman�z
+   gerekecektir.
+   
+    4.15.2) SERIAL giri�inin degerini nas�l alabilirim?
+    
+   Bir yakla��m, sequence nesnesindeki SERIAL de�erini, veriyi girmeden
+   �nce nextval() ile al�p, ald���n�z de�eri kendinizin girmesidir.
+   4.15.1'deki �rnek tabloyu kullanarak bir �rnek verelim:
 new_id = execute("SELECT nextval('person_id_seq')");
 
     execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
 
-Di�er sorgular i�in new_id'de yeni de�erin saklanmas� gerekir. Otomatik olarak yarat�lan SEQUENE nesnesinin ad�, __seq 
-�eklinde olacakt�r (< > i�aretleri olmadan).
-
-Alternatif olarak, atanm�� SERIAL de�erini, de�er girildikten sonra currval() fonksiyonu ile alabilirsiniz:
-
-		execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
-		new_id = execute("SELECT currval('person_id_seq')");	
-		
-
-Son olarak, �n tan�ml� de�eri bulmak i�in INSERT ifadesinden d�nen OID de�erini kullanabilirsiniz; ancak bu en az 
-ta��nabilir ��z�m olacakt�r. Perl'de, Edmund Mergl'in DBD:Pg m�d�l� ile birlikte DBI kullanarak, OID de�eri 
-$sth->execute() �al��t�r�ld�ktan sonra $sth->(pg_oid_status) ile al�nabilir.
-4.15.3) currval() ve nextval() di�er kullan�c�lara sorun yaratmaz m�?
-
-Hay�r. curval(), t�m kullan�c�lar de�il, backend taraf�ndan atanan ge�erli de�eri d�nd�r�r.
-4.15.4) Neden sequence say�lar� transaction i�leminin iptalinden sonra yeniden kullan�l�yor? Neden sequence/SERIAL 
-kolonumdaki say�larda atlamalar oluyor?
-
-Uyumlulu�u artt�rmak i�in, sequence de�erleri �al��an transaction'lara gerekti�i �ekilde aktar�l�r ve transaction 
-bitene kadar o de�er kilitlenmez. Bu, iptal edilen transaction i�lemleri nedeniyle bo�luklara neden olur.
-4.16) OID nedir? TID nedir?
-
-OIDler, tekil sat�r numaralar�na PostgreSQL'in yan�t�d�r. PostgreSQL'de yarat�lan her say�, tekil bir OID al�r. initdb 
-i�lemi s�ras�nda yarat�lan t�m OID'ler 16384'ten k���kt�r (backend/access/transam.h). Kullan�c�lar taraf�ndan yarat�lan 
-t�m OID'ler bu say�ya e�it ya da bu say�dan b�y�kt�r. Varsay�lan durumda, t�m bu OIDler sadece bir tablo ya da 
-veritaban�nda de�il, t�m PostgreSQL kurulumunda tekildir.
-
-PostgreSQL OIDleri, tablolar aras�nda sat�rlar� ili�kilendirmek i�in kendi i� tablolar�nda kullan�r. Bu OIDler belirli 
-kullan�c� sat�rlar�n� belirtmek i�in kullanabilir ve join i�lemlerinde kullan�l�r. OID de�erlerini saklamak i�in OID 
-kolon tipini kullanman�z �nerinir. Daha h�zl� bir eri�im i�in, OID alan�nda bir index yaratabilirsiniz.
-
-OID'ler yeni sat�rlara, t�m veritabanlar� taraf�nda kullan�lan ortak bir alandan atan�rlar. E�er OID'i ba�ka bir de�ere 
-e�itlemek isterseniz ya da tablonun bir kopyas�n� orijinal OIDler ile ��karmak isterseniz, bu m�mk�nd�r:
-
-			CREATE TABLE new_table(old_oid oid, mycol int);
-			SELECT old_oid, mycol INTO new FROM old;
-			COPY new TO '/tmp/pgtable';
-			DELETE FROM new;
-			COPY new WITH OIDS FROM '/tmp/pgtable';		
-		
-
-OIDler 4-bit tamsay� olarak saklan�rlar ve 4 milyarda overflow olacakt�r. Kimse bu say�ya ula�t���na dair bir bilgi 
-iletmedi ve bu s�n�r� kimse bu s�n�ra ula�madan kald�raca��z.
-
-TIDler, belirli fiziksel sat�rlar block ve offset de�erleri ile belirtmekte kullan�l�r. TIDler, sat�rlar de�i�ti�inde 
-ya da yeniden y�klendi�inde de�i�irler. Index girdileri taraf�ndan fiziksel sat�rlar� g�stermek i�in kullan�l�rlar.
-
-4.17) PostgreSQL'de kullan�lan baz� terimlerin anlamlar� nelerdir?
-
-Kaynak kodun bir k�sm� ve eski belgeler, daha geni� kullan�m alan� olan terimleri kullan�rlar. Bunlar�n baz�lar�:
-
-    * table, relation, class
-    * row, record, tuple
-    * column, field, attribute
-    * retrieve, select
-    * replace, update
-    * append, insert
-    * OID, serial value
-    * portal, cursor
-    * range variable, table name, table alias
-
-Genel veritaban� terimleri, http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html 
-adresinde bulunabilir.
-4.18) Neden "ERROR: Memory exhausted in AllocSetAlloc()" hatas�n� al�yorum?
-
-Sisteminizde sanal belle�inizi t�ketmi� olabilirsiniz, ya da �ekirde�iniz belli kaynaklar icin d���k bir s�n�ra sahip 
-olabilir. postmaster'� ba�latmadan �nce a�a��dakileri deneyebilirsiniz:
-
+   Di�er sorgular i�in new_id'de yeni de�erin saklanmas� gerekir.
+   Otomatik olarak yarat�lan SEQUENE nesnesinin ad�, <tablo ad�>_<serial
+   kolonu ad�>_seq �eklinde olacakt�r (< > i�aretleri olmadan).
+   
+   Alternatif olarak, atanm�� SERIAL de�erini, de�er girildikten sonra
+   currval() fonksiyonu ile alabilirsiniz:
+                execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
+                new_id = execute("SELECT currval('person_id_seq')");
+                
+   Son olarak, �n tan�ml� de�eri bulmak i�in INSERT ifadesinden d�nen OID
+   de�erini kullanabilirsiniz; ancak bu en az ta��nabilir ��z�m
+   olacakt�r. Perl'de, Edmund Mergl'in DBD:Pg m�d�l� ile birlikte DBI
+   kullanarak, OID de�eri $sth->execute() �al��t�r�ld�ktan sonra
+   $sth->(pg_oid_status) ile al�nabilir.
+   
+    4.15.3) currval() ve nextval() di�er kullan�c�lara sorun yaratmaz m�?
+    
+   Hay�r. curval(), t�m kullan�c�lar de�il, backend taraf�ndan atanan
+   ge�erli de�eri d�nd�r�r.
+   
+    4.15.4) Neden sequence say�lar� transaction i�leminin iptalinden sonra
+    yeniden kullan�l�yor? Neden sequence/SERIAL kolonumdaki say�larda atlamalar
+    oluyor?
+    
+   Uyumlulu�u artt�rmak i�in, sequence de�erleri �al��an transaction'lara
+   gerekti�i �ekilde aktar�l�r ve transaction bitene kadar o de�er
+   kilitlenmez. Bu, iptal edilen transaction i�lemleri nedeniyle
+   bo�luklara neden olur.
+   
+    4.16) OID nedir? TID nedir?
+    
+   OIDler, tekil sat�r numaralar�na PostgreSQL'in yan�t�d�r.
+   PostgreSQL'de yarat�lan her say�, tekil bir OID al�r. initdb i�lemi
+   s�ras�nda yarat�lan t�m OID'ler 16384'ten k���kt�r
+   (backend/access/transam.h). Kullan�c�lar taraf�ndan yarat�lan t�m
+   OID'ler bu say�ya e�it ya da bu say�dan b�y�kt�r. Varsay�lan durumda,
+   t�m bu OIDler sadece bir tablo ya da veritaban�nda de�il, t�m
+   PostgreSQL kurulumunda tekildir.
+   
+   PostgreSQL OIDleri, tablolar aras�nda sat�rlar� ili�kilendirmek i�in
+   kendi i� tablolar�nda kullan�r. Bu OIDler belirli kullan�c�
+   sat�rlar�n� belirtmek i�in kullanabilir ve join i�lemlerinde
+   kullan�l�r. OID de�erlerini saklamak i�in OID kolon tipini kullanman�z
+   �nerinir. Daha h�zl� bir eri�im i�in, OID alan�nda bir index
+   yaratabilirsiniz.
+   
+   OID'ler yeni sat�rlara, t�m veritabanlar� taraf�nda kullan�lan ortak
+   bir alandan atan�rlar. E�er OID'i ba�ka bir de�ere e�itlemek
+   isterseniz ya da tablonun bir kopyas�n� orijinal OIDler ile ��karmak
+   isterseniz, bu m�mk�nd�r:
+                        CREATE TABLE new_table(old_oid oid, mycol int);
+                        SELECT old_oid, mycol INTO new FROM old;
+                        COPY new TO '/tmp/pgtable';
+                        DELETE FROM new;
+                        COPY new WITH OIDS FROM '/tmp/pgtable';
+                
+   OIDler 4-bit tamsay� olarak saklan�rlar ve 4 milyarda overflow
+   olacakt�r. Kimse bu say�ya ula�t���na dair bir bilgi iletmedi ve bu
+   s�n�r� kimse bu s�n�ra ula�madan kald�raca��z.
+   
+   TIDler, belirli fiziksel sat�rlar block ve offset de�erleri ile
+   belirtmekte kullan�l�r. TIDler, sat�rlar de�i�ti�inde ya da yeniden
+   y�klendi�inde de�i�irler. Index girdileri taraf�ndan fiziksel
+   sat�rlar� g�stermek i�in kullan�l�rlar.
+   
+    4.17) PostgreSQL'de kullan�lan baz� terimlerin anlamlar� nelerdir?
+    
+   Kaynak kodun bir k�sm� ve eski belgeler, daha geni� kullan�m alan�
+   olan terimleri kullan�rlar. Bunlar�n baz�lar�:
+     * table, relation, class
+     * row, record, tuple
+     * column, field, attribute
+     * retrieve, select
+     * replace, update
+     * append, insert
+     * OID, serial value
+     * portal, cursor
+     * range variable, table name, table alias
+       
+   Genel veritaban� terimleri,
+   http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary
+   /glossary.html adresinde bulunabilir.
+   
+    4.18) Neden "ERROR: Memory exhausted in AllocSetAlloc()" hatas�n� al�yorum?
+    
+   Sisteminizde sanal belle�inizi t�ketmi� olabilirsiniz, ya da
+   �ekirde�iniz belli kaynaklar icin d���k bir s�n�ra sahip olabilir.
+   postmaster'� ba�latmadan �nce a�a��dakileri deneyebilirsiniz:
 ulimit -d 262144
-limit datasize 256m		
-		
-
-Kabu�unuza ba�l� olarak, bunlardan sadece biri olumlu sonu� verecektir, ama bu i�lem veri segment s�n�r�n�z� 
-artt�racak, ve belki de sorgunuzun tamamlanmas�n� sa�layacakt�r. Bu komut, varolan i�leme (current process) ve komut 
-�al��t�r�ld�ktan sonraki t�m alt i�lemlere uygulan�r. E�er SQL istemcinizle, backend'in �ok fazla veri d�nd�rmesi 
-nedeniyle bir sorun ya��yorsan�z, bunu istemciyi ba�latmadan �nce deneyiniz.
-4.19) Hangi PostgreSQL s�r�m�n� �al��t�rd���m� nas�l g�rebilirim?
-
-psql arabiriminde, select version(); yaz�n�z.
-4.20) Neden large-object i�lemlerim, "invalid large obj descriptor" hatas�n� veriyor?
-
-Large object i�lemlerinizin u�lar�na, yani lo_open ... lo_close komutlar�n�n �evresine, BEGIN WORK ve COMMIT koyman�z 
-gerekmektedir;
-
-�u anda, PostgreSQL kurallar� large objectleri transaction commit edildi�inde kapatarak uygulamaktad�r. Dolay�s�yla 
-handle ile yap�lacak ilk �ey invalid large obj descriptor hatas� ile sonu�lanacakt�r.Dolay�s�yla �al��an kodunuz e�er 
-transaction kullanmazsan�z hata mesajlar� �retecektir.
-
-E�er ODBC gibi bir istemci arabirimi kullan�yorsan�z, auto-commit'i kapatman�z gerekebilir.
-4.21) �u andaki zaman� �ntan�ml� de�er olarak kabul eden How do I create a column that will default to the current 
-time?
-
-Alttakini kullanabilirsiniz:
-
+limit datasize 256m
+                
+   Kabu�unuza ba�l� olarak, bunlardan sadece biri olumlu sonu�
+   verecektir, ama bu i�lem veri segment s�n�r�n�z� artt�racak, ve belki
+   de sorgunuzun tamamlanmas�n� sa�layacakt�r. Bu komut, varolan i�leme
+   (current process) ve komut �al��t�r�ld�ktan sonraki t�m alt i�lemlere
+   uygulan�r. E�er SQL istemcinizle, backend'in �ok fazla veri d�nd�rmesi
+   nedeniyle bir sorun ya��yorsan�z, bunu istemciyi ba�latmadan �nce
+   deneyiniz.
+   
+    4.19) Hangi PostgreSQL s�r�m�n� �al��t�rd���m� nas�l g�rebilirim?
+    
+   psql arabiriminde, select version(); yaz�n�z.
+   
+    4.20) Neden large-object i�lemlerim, "invalid large obj descriptor"
+    hatas�n� veriyor?
+    
+   Large object i�lemlerinizin u�lar�na, yani lo_open ... lo_close
+   komutlar�n�n �evresine, BEGIN WORK ve COMMIT koyman�z gerekmektedir;
+   
+   �u anda, PostgreSQL kurallar� large objectleri transaction commit
+   edildi�inde kapatarak uygulamaktad�r. Dolay�s�yla handle ile yap�lacak
+   ilk �ey invalid large obj descriptor hatas� ile
+   sonu�lanacakt�r.Dolay�s�yla �al��an kodunuz e�er transaction
+   kullanmazsan�z hata mesajlar� �retecektir.
+   
+   E�er ODBC gibi bir istemci arabirimi kullan�yorsan�z, auto-commit'i
+   kapatman�z gerekebilir.
+   
+    4.21) �u andaki zaman� �ntan�ml� de�er olarak kabul eden How do I create a
+    column that will default to the current time?
+    
+   Alttakini kullanabilirsiniz:
 CURRENT_TIMESTAMP:
 CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
-		
-
-4.22) Neden IN kullanan subquery'lerim �ok yavas?
-
-7.4 s�r�m�nden �nce, subqueryler. E�er subquery sadece birka� sat�r ve outer query bol say�da sat�r d�nd�r�yorsa, IN en 
-h�zl�s�d�r. Sorgular� h�zland�rmak i�in IN yerine EXISTS kullan�n:
-
+                
+    4.22) Neden IN kullanan subquery'lerim �ok yavas?
+    
+   7.4 s�r�m�nden �nce, subqueryler. E�er subquery sadece birka� sat�r ve
+   outer query bol say�da sat�r d�nd�r�yorsa, IN en h�zl�s�d�r. Sorgular�
+   h�zland�rmak i�in IN yerine EXISTS kullan�n:
 SELECT *
     FROM tab
     WHERE col1 IN (SELECT col2 FROM TAB2)
-		
-
-sorgusunu, a�a��daki ile de�i�tirin:
-
+                
+   sorgusunu, a�a��daki ile de�i�tirin:
 SELECT *
     FROM tab
-    WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2)		
-		
-
-Bu i�lemin h�zl� olmas� i�in, subcol'un indexlenmi� bir kolon olmas� gerekmektedir.
-
-7.4 s�r�m� ve sonras�nda, IN asl�nda normal sorgularla ayn� karma��k join tekniklerini kullan�r ve EXISTS'e tercih 
-edilir.
-4.23) Outer join i�lemini nas�l yapabilirim?
-
-PostgreSQL outer joins islemlerini SQL standartlar�n� kullanarak ger�ekle�tirmektedir. A�a��da 2 �rnek bulunmaktad�r:
-
+    WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2)
+                
+   Bu i�lemin h�zl� olmas� i�in, subcol'un indexlenmi� bir kolon olmas�
+   gerekmektedir.
+   
+   7.4 s�r�m� ve sonras�nda, IN asl�nda normal sorgularla ayn� karma��k
+   join tekniklerini kullan�r ve EXISTS'e tercih edilir.
+   
+    4.23) Outer join i�lemini nas�l yapabilirim?
+    
+   PostgreSQL outer joins islemlerini SQL standartlar�n� kullanarak
+   ger�ekle�tirmektedir. A�a��da 2 �rnek bulunmaktad�r:
 SELECT *
-FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);		
-		
-
-ya da
-
+FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
+                
+   ya da
 SELECT *
-FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);		
-		
-
-Bu �zde� sorgular t1.col' i t2.col'ye join ederler ve ayn� zamanda t1'deki unjoined sat�rlar� (t2'de e�lenmemi� 
-olanlarla) d�nd�r�rler. RIGHT JOIN t2'nin unjoined sat�rlar�n� ekleyecektir. Bir FULL join, e�le�mi� b�t�n sat�rlar� ve 
-t1 ile t2'den t�m ba�lanmam�� (unjoined) sat�rlar� al�r. OUTER s�zc��� se�imseldir ve LEFT, RIGHT ve FULL join 
-i�lemlerinde oldu�u kabul edilir. S�radan join i�lemleri INNER JOIN olarak adland�r�l�r.
-
-�nceki s�r�mlerde, OUTER JOINler UNION ve NOT IN kullan�larak sim�le edilebiliyordu. �rne�in, tab1 ve tab2'yi 
-birle�tirirken, a�a��daki sorgu iki tablonun d��tan ba�lanmas�n� sa�lar:
-
+FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
+                
+   Bu �zde� sorgular t1.col' i t2.col'ye join ederler ve ayn� zamanda
+   t1'deki unjoined sat�rlar� (t2'de e�lenmemi� olanlarla) d�nd�r�rler.
+   RIGHT JOIN t2'nin unjoined sat�rlar�n� ekleyecektir. Bir FULL join,
+   e�le�mi� b�t�n sat�rlar� ve t1 ile t2'den t�m ba�lanmam�� (unjoined)
+   sat�rlar� al�r. OUTER s�zc��� se�imseldir ve LEFT, RIGHT ve FULL join
+   i�lemlerinde oldu�u kabul edilir. S�radan join i�lemleri INNER JOIN
+   olarak adland�r�l�r.
+   
+   �nceki s�r�mlerde, OUTER JOINler UNION ve NOT IN kullan�larak sim�le
+   edilebiliyordu. �rne�in, tab1 ve tab2'yi birle�tirirken, a�a��daki
+   sorgu iki tablonun d��tan ba�lanmas�n� sa�lar:
 SELECT tab1.col1, tab2.col2
 FROM tab1, tab2
 WHERE tab1.col1 = tab2.col1
@@ -838,60 +1114,79 @@ UNION ALL
 SELECT tab1.col1, NULL
 FROM tab1
 WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
-ORDER BY col1		
-		
-
-4.24) Ayn� andan birden fazla veritaban�nda nas�l i�lem yapabilirim?
-
-Mevcut veritaban�n�z d���ndaki ba�ka bir veritaban�n�z� sorgulaman�z�n bir yolu bulunmamaktad�r. Bunun nedeni, 
-PostgreSQL'in veritaban�na �zel sistem kataloglar� y�klemesidir. Bu nedenle, cross-database bir sorgunun nas�l 
-davranaca��n� kestirmek zordur.
-
-contrib/dblink fonksiyon �a�r�lar�n� kullanarak cross-database sorgulara izin verir. Tabii ki, bir istemci de�i�ik 
-veritabanlar�na ayn� anda eri�im sa�layabilir ve bilgiyi bu �ekilde birle�tirebilir.
-
-4.25) Bir fonksiyondan nas�l �oklu sat�r ya da kolon d�nd�rebilirim?
-
-7.3 s�r�m�nde, bir fonksiyondan kolayl�kla �oklu sat�r ya da s�tun d�nd�rebilirsiniz. 
-(http://techdocs.postgresql.org/guides/SetReturningFunctions)
-
-4.26) Neden Pl/PgSQL fonksiyonlar� i�inden g�venli bir �ekilde tablo yaratma/kald�rma i�lemlerini yapam�yoruz?
-
-PL/PgSQL fonksiyon i�erikleri cache'ler. Bunun istenmeyen bir taraf�, e�er bir PL/PgSQL fonksiyonu ge�ici bir tabloya 
-eri�iyorsa ve bu tablo ileride kald�r�l�p yeniden olu�turulduktan sonra fonksiyon yeniden �a�r�l�rsa, fonksiyon 
-�al��mayacakt�r; ��nk� cache'lenmi� fonksiyon hala eski ge�ici tabloyu g�steriyor olacakt�r. ��z�m, ge�ici tablo 
-eri�imleri i�in PL/PgSQL'de EXECUTE kullanmakt�r. Bu, sorgunun her seferinde yeniden i�lenmesini sa�layacakt�r.
-
-4.27) Hangi �ifreleme se�enekleri bulunmaktad�r?
-
-    * contrib/pgcrypto SQL sorgular�nda kullan�labilmesi i�in �ifreleme fonksiyonlar� i�ermektedir.
-    * �stemciden sunucuya ileti�imi �ifrelemek i�in, sunucuda ssl se�ene�i postgresql.conf i�inde a��k olmal�d�r. 
-Ayr�ca,pg_hba.conf dosyas� i�inde host ya da hostssl kayd� mutlaka olmal�d�r ve istemci sslmode kapat�lmamal�d�r. (Ayn� 
-zamanda,PostgreSQL'in do�al SSL ba�lant�lar� d���nda ssh ya da ssl gibi 3.parti �ifrelenmi� veri iletimi de m�mk�nd�r.)
-    * Veritaban� kullan�c� ad� ve �ifreleri 7.3 s�r�m� ile birlikte otomatik olarak �ifrelenirler. �nceki s�r�mlerde, 
-postgresql.conf i�indeki PASSWORD_ENCRYPTION se�ene�ini aktif hale getirmeniz gerekmektedir.
-    * Sunucunun kendisini �ifreli dosya sistemi �zerinde �al��t�rabilirsiniz.
-
-PostgreSQL �zelliklerini Geni�letmek
-
-5.1) Kullan�c�-tan�ml� bir fonksiyon yazd�m. psql'de �al��t�rd���m zaman neden core dump ediyor?
-
-Sorunun nedeni birden fazla �ey olabilir. Kullan�c�-tan�ml� fonksiyonunuzu stand-alone bir programda �al��t�rmay� 
-deneyiniz.
-
-5.2) PostgreSQL'e nas�l yeni tipler/fonksiyonlar ekleyebilirim?
-
-�al��malar�n�z� pgsql-hackers e-posta listesine g�nderiniz. Kodunuz incelendikten sonra /contrib dizinine konacakt�r.
-
-5.3) Bir tuple dond�rmek icin bir C fonksiyonunu nasil yazar�m?
-
-PostgreSQL 7.3 s�r�m� ile birlikte, C, PL/PgSQL ve SQL kullan�larak tablo-d�nd�ren fonksiyonlar tamamen 
-desteklenmektedir. Ayr�nt�l� bilgi i�in PostgreSQL 7.3.2 Kullan�c� Rehberi'ne bakabilrisiniz. Bir �rne�i 
-contrib/tablefunc i�inde bulabilirsiniz.
-
-5.4) Bir kaynak dosyas�nda de�i�iklik yapt�m. Yeniden derlememe ra�men de�i�iklik ge�erli olmuyor. Neden?
-
-Makefile'lar include dosyalar� i�in tam bir ba��ml�l�k i�ermezler. �ncelikle make clean, ard�ndan da baska bir make 
-i�lemi yapman�z gerekir. GCC kullan�yorsan�z, configure beti�inin --enable-depend se�ene�ini, derleyicinin 
-ba��ml�l�klar� otomatik olarak hesaplamas� i�in kullanabilirsiniz.
-
+ORDER BY col1
+                
+    4.24) Ayn� andan birden fazla veritaban�nda nas�l i�lem yapabilirim?
+    
+   Mevcut veritaban�n�z d���ndaki ba�ka bir veritaban�n�z� sorgulaman�z�n
+   bir yolu bulunmamaktad�r. Bunun nedeni, PostgreSQL'in veritaban�na
+   �zel sistem kataloglar� y�klemesidir. Bu nedenle, cross-database bir
+   sorgunun nas�l davranaca��n� kestirmek zordur.
+   
+   contrib/dblink fonksiyon �a�r�lar�n� kullanarak cross-database
+   sorgulara izin verir. Tabii ki, bir istemci de�i�ik veritabanlar�na
+   ayn� anda eri�im sa�layabilir ve bilgiyi bu �ekilde birle�tirebilir.
+   
+    4.25) Bir fonksiyondan nas�l �oklu sat�r ya da kolon d�nd�rebilirim?
+    
+   7.3 s�r�m�nde, bir fonksiyondan kolayl�kla �oklu sat�r ya da s�tun
+   d�nd�rebilirsiniz.
+   (http://techdocs.postgresql.org/guides/SetReturningFunctions)
+   
+    4.26) Neden Pl/PgSQL fonksiyonlar� i�inden g�venli bir �ekilde tablo
+    yaratma/kald�rma i�lemlerini yapam�yoruz?
+    
+   PL/PgSQL fonksiyon i�erikleri cache'ler. Bunun istenmeyen bir taraf�,
+   e�er bir PL/PgSQL fonksiyonu ge�ici bir tabloya eri�iyorsa ve bu tablo
+   ileride kald�r�l�p yeniden olu�turulduktan sonra fonksiyon yeniden
+   �a�r�l�rsa, fonksiyon �al��mayacakt�r; ��nk� cache'lenmi� fonksiyon
+   hala eski ge�ici tabloyu g�steriyor olacakt�r. ��z�m, ge�ici tablo
+   eri�imleri i�in PL/PgSQL'de EXECUTE kullanmakt�r. Bu, sorgunun her
+   seferinde yeniden i�lenmesini sa�layacakt�r.
+   
+    4.27) 4.28) Hangi �ifreleme se�enekleri bulunmaktad�r?
+    
+     * contrib/pgcrypto SQL sorgular�nda kullan�labilmesi i�in �ifreleme
+       fonksiyonlar� i�ermektedir.
+     * �stemciden sunucuya ileti�imi �ifrelemek i�in, sunucuda ssl
+       se�ene�i postgresql.conf i�inde a��k olmal�d�r. Ayr�ca,pg_hba.conf
+       dosyas� i�inde host ya da hostssl kayd� mutlaka olmal�d�r ve
+       istemci sslmode kapat�lmamal�d�r. (Ayn� zamanda,PostgreSQL'in
+       do�al SSL ba�lant�lar� d���nda ssh ya da ssl gibi 3.parti
+       �ifrelenmi� veri iletimi de m�mk�nd�r.)
+     * Veritaban� kullan�c� ad� ve �ifreleri 7.3 s�r�m� ile birlikte
+       otomatik olarak �ifrelenirler. �nceki s�r�mlerde, postgresql.conf
+       i�indeki PASSWORD_ENCRYPTION se�ene�ini aktif hale getirmeniz
+       gerekmektedir.
+     * Sunucunun kendisini �ifreli dosya sistemi �zerinde
+       �al��t�rabilirsiniz.
+     _________________________________________________________________
+   
+                    PostgreSQL �zelliklerini Geni�letmek
+                                      
+    5.1) Kullan�c�-tan�ml� bir fonksiyon yazd�m. psql'de �al��t�rd���m zaman
+    neden core dump ediyor?
+    
+   Sorunun nedeni birden fazla �ey olabilir. Kullan�c�-tan�ml�
+   fonksiyonunuzu stand-alone bir programda �al��t�rmay� deneyiniz.
+   
+    5.2) PostgreSQL'e nas�l yeni tipler/fonksiyonlar ekleyebilirim?
+    
+   �al��malar�n�z� pgsql-hackers e-posta listesine g�nderiniz. Kodunuz
+   incelendikten sonra /contrib dizinine konacakt�r.
+   
+    5.3) Bir tuple dond�rmek icin bir C fonksiyonunu nasil yazar�m?
+    
+   PostgreSQL 7.3 s�r�m� ile birlikte, C, PL/PgSQL ve SQL kullan�larak
+   tablo-d�nd�ren fonksiyonlar tamamen desteklenmektedir. Ayr�nt�l� bilgi
+   i�in PostgreSQL 7.3.2 Kullan�c� Rehberi'ne bakabilrisiniz. Bir �rne�i
+   contrib/tablefunc i�inde bulabilirsiniz.
+   
+    5.4) Bir kaynak dosyas�nda de�i�iklik yapt�m. Yeniden derlememe ra�men
+    de�i�iklik ge�erli olmuyor. Neden?
+    
+   Makefile'lar include dosyalar� i�in tam bir ba��ml�l�k i�ermezler.
+   �ncelikle make clean, ard�ndan da baska bir make i�lemi yapman�z
+   gerekir. GCC kullan�yorsan�z, configure beti�inin --enable-depend
+   se�ene�ini, derleyicinin ba��ml�l�klar� otomatik olarak hesaplamas�
+   i�in kullanabilirsiniz.
diff --git a/doc/src/FAQ/FAQ_brazilian.html b/doc/src/FAQ/FAQ_brazilian.html
index a07ffbd..3cd1493 100644
--- a/doc/src/FAQ/FAQ_brazilian.html
+++ b/doc/src/FAQ/FAQ_brazilian.html
@@ -17,7 +17,7 @@
     </P>
 
     <P>Traduzido por: Euler Taveira de Oliveira (<A href=
-    "mailto:eulerto@yahoo.com.br">eulerto@yahoo.com.br</A>)<BR>
+    "mailto:eulerto@yahoo.com.br">eulerto@yahoo.com.br</A>)</P>
 
     <P>A vers&atilde;o mais recente desse documento pode ser vista em <A href=
     "http://www.postgresql.org/files/documentation/faqs/FAQ.html">
@@ -202,14 +202,14 @@
     baseados no NT tais como Win2000, WinXP e Win2003. Um instalador
     est&aacute; dispon&iacute;vel em <a href=
 	    "http://pgfoundry.org/projects/pginstaller">
-	    http://pgfoundry.org/projects/pginstaller</a> Vers�es do Windows
-    baseados no MSDOS (Win95, Win98, WinMe) podem executar o PostgreSQL utilizando o Cygwin.
+	    http://pgfoundry.org/projects/pginstaller</a> Vers&otilde;es do Windows
+    baseados no MSDOS (Win95, Win98, WinMe) podem executar o PostgreSQL utilizando o Cygwin.</P>
 
     <P>H&aacute; tamb&eacute;m um porte para Novell Netware 6 em
     <A href="http://forge.novell.com">http://forge.novell.com</A>
-    e uma vers�o para OS/2 (eComStation) em <a href=
-    "http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F">
-    http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F</a>.</P>
+    e uma vers&atilde;o para OS/2 (eComStation) em <a href=
+    "http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&amp;button=Search&amp;key=postgreSQL&amp;stype=all&amp;sort=type&amp;dir=%2F">
+    http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&amp;button=Search&amp;key=postgreSQL&amp;stype=all&amp;sort=type&amp;dir=%2F</a>.</P>
 
     <H4><A name="1.5">1.5</A>) Onde eu posso conseguir o PostgreSQL?</H4>
 
@@ -253,7 +253,7 @@ H&aacute; tamb&eacute;m uma lista de discuss&atilde;o dos desenvolvedores dispon
 <P>Outras listas de discuss&otilde;es e informa&ccedil;&otilde;es sobre o PostgreSQL podem ser encontradas na homepage do PostgreSQL em:</P>
 
     <BLOCKQUOTE>
-      <A href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A>
+      <P><A href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A></P>
     </BLOCKQUOTE>
 
     <P>O principal canal de IRC &eacute; o <I>#postgresql</I> na Freenode (<I>irc.freenode.net</I>). Para se conectar voc&ecirc; pode utilizar o comando Unix <code>irc -c '#postgresql' "$USER" irc.freenode.net</code> ou utilizar qualquer outro cliente de IRC. Um canal hisp&acirc;nico (<I>#postgresql-es</I>) e um franc&ecirc;s (<I>#postgresqlfr</I>) tamb&eacute;m existem na mesma rede. H&aacute; tamb&eacute;m um canal PostgreSQL na EFNet.</P>
@@ -289,7 +289,7 @@ H&aacute; tamb&eacute;m uma lista de discuss&atilde;o dos desenvolvedores dispon
     <H4><A name="1.9">1.9</A>) Como eu posso saber quais s&atilde;o os bugs conhecidos ou caracter&iacute;sticas ausentes?</H4>
 
     <P>PostgreSQL suporta um subconjunto extendido do <SMALL>SQL</SMALL>-92.
-    Veja a nossa lista de afazeres (<A href="http://developer.PostgreSQL.org/todo.php">TODO</A>) para saber sobre bugs conhecidos, caracter&iacute;sticas ausentes e planos futuros.</P>
+    Veja a nossa lista de afazeres (<A href="http://www.postgresql.org/docs/faqs.TODO.html">TODO</A>) para saber sobre bugs conhecidos, caracter&iacute;sticas ausentes e planos futuros.</P>
 
     <H4><A name="1.10">1.10</A>) Como eu posso aprender <SMALL>SQL</SMALL>?</H4>
 
@@ -499,9 +499,9 @@ H&aacute; tamb&eacute;m uma lista de discuss&atilde;o dos desenvolvedores dispon
 
 <P>Se o <I>postmaster</I> n&atilde;o est&aacute; sendo executado, voc&ecirc; pode executar o n&uacute;cleo do <I>postgres</I> a partir da linha de comando, e digitar a sua senten&ccedil;a <SMALL>SQL</SMALL> diretamente. Isso &eacute; recomendado <B>somente</B> para fins de depura&ccedil;&atilde;o. Note que uma nova linha termina a consulta, e n&atilde;o um ponto-e-v&iacute;rgula. Se voc&ecirc; compilou com s&iacute;mbolos de depura&ccedil;&atilde;o, voc&ecirc; pode utilizar um depurador para ver o que est&aacute; acontecendo. Como o n&uacute;cleo (backend) n&atilde;o foi iniciado a partir do <I>postmaster</I>, ele n&atilde;o est&aacute; executando em um ambiente id&ecirc;ntico e problemas de itera&ccedil;&atilde;o com o n&uacute;cleo/travamento n&atilde;o podem ser reproduzidos.</P>
 
-<P>Se o <i>postmaster</i> est&aacute; sendo executado, inicie o <i>psql</i> em uma janela, e ent&atilde;o encontre o <small>PID</small> do processo <i>postgres</i> utilizado pelo <i>psql</i> utilizando <pre>SELECT pg_backend_pid()</pre>. Utilize um depurador para anexar ao <small>PID</small> do <i>postgres</i>. Voc&ecirc; pode definir pontos de parada (<i>breakpoints</i>) no depurador e digitar consultas no <i>psql</i>. Se voc&ecirc; est&aacute; depurando a inicializa&ccedil;&atilde;o do <i>postgres</i>, voc&ecirc; pode definir PGOPTIONS="-W n" e ent&atilde;o iniciar o <i>psql</i>. Isto retardar&aacute; a inicializa&ccedil;&atilde;o por <i>n</i> segundos ent&atilde;o voc&ecirc; pode anexar o depurador ao processo, definir quaisquer pontos de parada e continuar pela sequ&ecirc;ncia de inicializa&ccedil;&atilde;o.</p>
+<P>Se o <i>postmaster</i> est&aacute; sendo executado, inicie o <i>psql</i> em uma janela, e ent&atilde;o encontre o <small>PID</small> do processo <i>postgres</i> utilizado pelo <i>psql</i> utilizando <code>SELECT pg_backend_pid()</code>. Utilize um depurador para anexar ao <small>PID</small> do <i>postgres</i>. Voc&ecirc; pode definir pontos de parada (<i>breakpoints</i>) no depurador e digitar consultas no <i>psql</i>. Se voc&ecirc; est&aacute; depurando a inicializa&ccedil;&atilde;o do <i>postgres</i>, voc&ecirc; pode definir PGOPTIONS="-W n" e ent&atilde;o iniciar o <i>psql</i>. Isto retardar&aacute; a inicializa&ccedil;&atilde;o por <i>n</i> segundos ent&atilde;o voc&ecirc; pode anexar o depurador ao processo, definir quaisquer pontos de parada e continuar pela sequ&ecirc;ncia de inicializa&ccedil;&atilde;o.</p>
 
-<P>H&aacute; v&aacute;rias vari&aacute;veis de configura&ccedil;&atilde;o do servidor <pre>log_*</pre> que habilitam a exibi&ccedil;&atilde;o de estat&iacute;sticas que podem ser muito &uacute;teis para depura&ccedil;&atilde;o e medidas de performance.</P>
+<P>H&aacute; v&aacute;rias vari&aacute;veis de configura&ccedil;&atilde;o do servidor <code>log_*</code> que habilitam a exibi&ccedil;&atilde;o de estat&iacute;sticas que podem ser muito &uacute;teis para depura&ccedil;&atilde;o e medidas de performance.</P>
 
 <P>Voc&ecirc; tamb&eacute;m pode compilar com perfil para ver que fun&ccedil;&otilde;es est&atilde;o demandando tempo de execu&ccedil;&atilde;o. Os arquivo de perfil do n&uacute;cleo (backend) ser&atilde;o colocados no diret&oacute;rio <I>pgsql/data/base/dbname</I>. O arquivo de perfil do cliente ser&aacute; colocado no diret&oacute;rio atual do cliente. O Linux requer uma compila&ccedil;&atilde;o com <I>-DLINUX_PROFILE</I> para cria&ccedil;&atilde;o dos perfis.</P>
 
@@ -526,7 +526,7 @@ H&aacute; tamb&eacute;m uma lista de discuss&atilde;o dos desenvolvedores dispon
 
     <H4><A name="3.11">3.11</A>) Que tipo de hardware eu devo usar?</H4>
 
-    <P>Por causa do hardware de PC ser em sua maioria compat&iacute;vel, pessoas tendem a acreditar que todos os hardwares de PC s�o de mesma qualidade. N�o &eacute; verdade. ECC RAM, SCSI e placas m&atilde;e de qualidade s&atilde;o mais confi&aacute;veis e t&ecirc;m uma melhor performance do que hardwares mais baratos. O PostgreSQL executar&aacute; em quase todo hardware, mas se a confiabilidade e a performance forem importantes &eacute; prudente pesquisar sobre as op&ccedil;&otilde;es de hardware. Nossas listas de discuss&atilde;o podem ser usadas para discutir op&ccedil;&otilde;es de hardware e dilemas.</P>
+    <P>Por causa do hardware de PC ser em sua maioria compat&iacute;vel, pessoas tendem a acreditar que todos os hardwares de PC satilde;o de mesma qualidade. Natilde;o &eacute; verdade. ECC RAM, SCSI e placas m&atilde;e de qualidade s&atilde;o mais confi&aacute;veis e t&ecirc;m uma melhor performance do que hardwares mais baratos. O PostgreSQL executar&aacute; em quase todo hardware, mas se a confiabilidade e a performance forem importantes &eacute; prudente pesquisar sobre as op&ccedil;&otilde;es de hardware. Nossas listas de discuss&atilde;o podem ser usadas para discutir op&ccedil;&otilde;es de hardware e dilemas.</P>
 
     <HR>
 
@@ -543,7 +543,7 @@ H&aacute; tamb&eacute;m uma lista de discuss&atilde;o dos desenvolvedores dispon
 
     <P>Toda a consulta tem que ser avaliada, mesmo se voc&ecirc; s&oacute; quer os primeiros registros. Considere utilizar uma consulta que tenha um <SMALL>ORDER BY</SMALL>. Se h&aacute; um &iacute;ndice que combina com o <SMALL>ORDER BY</SMALL>, o PostgreSQL pode ser capaz de avaliar somente os primeiros registros requisitados, ou toda consulta tem que ser avaliada at&eacute; que os registros desejados tenham sido gerados.</P>
 
-    <P>Para obter um registro rand&ocirc;mico, utilize:
+    <P>Para obter um registro rand&ocirc;mico, utilize:</P>
 <PRE>
     SELECT col
     FROM tab
@@ -639,7 +639,7 @@ N&uacute;mero m&aacute;ximo de &iacute;ndices em uma tabela?        ilimitado
     utilizados se uma tabela &eacute; maior do que o tamanho m&iacute;nimo e uma consulta
     seleciona somente uma porcentagem pequena de registros de uma tabela. Isto porque
     o acesso rand&ocirc;mico ao disco causado por uma busca por &iacute;ndice pode ser
-    mais lento do que uma leitura ao longo da tabela ou uma busca sequencial.
+    mais lento do que uma leitura ao longo da tabela ou uma busca sequencial.</p>
 
     <P>Para determinar se um &iacute;ndice pode ser utilizado, o PostgreSQL deve ter
     estat&iacute;sticas sobre a tabela. Estas estat&iacute;sticas s&atilde;o coletadas utilizando
@@ -686,11 +686,10 @@ N&uacute;mero m&aacute;ximo de &iacute;ndices em uma tabela?        ilimitado
     <LI>A localidade padr&atilde;o <I>C</I> deve ser utilizada durante o
     <i>initdb</i> porque n&atilde;o &eacute; poss&iacute;vel saber o pr&oacute;ximo/maior caracter
     em uma localidade que n&atilde;o seja a C. Voc&ecirc; pode criar um &iacute;ndice
-    especial <PRE>text_pattern_ops</PRE> para tais casos que funcionam somente para
-    indexa&ccedil;&atilde;o utilizando <PRE>LIKE</PRE>.
+    especial <tt>text_pattern_ops</tt> para tais casos que funcionam somente para
+    indexa&ccedil;&atilde;o utilizando <tt>LIKE</tt>.
     </LI>
     </UL>
-    <P>
 
     <P>Em vers&otilde;es anteriores a 8.0, &iacute;ndices frequentemente n&atilde;o podiam ser usados a menos que os tipos de dados correspodessem aos tipos da coluna do &iacute;ndice. Isto &eacute; particularmente verdadeiro para &iacute;ndices de coluna int2, int8 e numeric.</P>
 
@@ -922,14 +921,15 @@ Veja a p&aacute;gina sobre <I>create_sequence</I> no manual para mais informa&cc
     FROM tab
     WHERE col IN (SELECT subcol FROM subtab);
 </PRE>
-    por:
+<p>por:</p>
 <PRE>    SELECT *
     FROM tab
     WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
 </PRE>
-
-Para isto ser r&aacute;pido, <CODE>subcol</CODE> deve ser uma coluna indexada. <P>A partir da vers&atilde;o 7.4, <CODE>IN</CODE> utiliza a mesma t&eacute;cnica de agrupamento do que consultas normais, e &eacute; recomendado utilizar <CODE>EXISTS</CODE>.
-
+<p>
+Para isto ser r&aacute;pido, <CODE>subcol</CODE> deve ser uma coluna indexada.</P>
+<P>A partir da vers&atilde;o 7.4, <CODE>IN</CODE> utiliza a mesma t&eacute;cnica de agrupamento do que consultas normais, e &eacute; recomendado utilizar <CODE>EXISTS</CODE>.
+</p>
     <H4><A name="4.23">4.23</A>) Como eu fa&ccedil;o uma jun&ccedil;&atilde;o externa (outer join)?</H4>
 
     <P>PostgreSQL suporta jun&ccedil;&otilde;es externas utilizando a sintaxe padr&atilde;o do SQL. Aqui temos dois exemplos:</P>
@@ -965,7 +965,7 @@ Para isto ser r&aacute;pido, <CODE>subcol</CODE> deve ser uma coluna indexada. <
 
     <H4><A name="4.25">4.25</A>) Como eu retorno m&uacute;ltiplos registros ou colunas de uma fun&ccedil;&atilde;o?</H4>
 
-    <P>No 7.3, voc&ecirc; pode facilmente retornar m&uacute;ltiplos registros ou colunas de uma fun&ccedil;&atilde;o, <A href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</A>.
+    <P>No 7.3, voc&ecirc; pode facilmente retornar m&uacute;ltiplos registros ou colunas de uma fun&ccedil;&atilde;o, <A href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</A>.</P>
 
     <H4><A name="4.26">4.26</A>) Por que eu n&atilde;o posso confiar na cria&ccedil;&atilde;o/remo&ccedil;&atilde;o de tabelas tempor&aacute;rias em fun&ccedil;&otilde;es PL/PgSQL?</H4>
     <P>PL/PgSQL armazena o conte&uacute;do da fun&ccedil;&atilde;o, e o efeito indesejado &eacute; que se uma fun&ccedil;&atilde;o PL/PgSQL acessa uma tabela tempor&aacute;ria, e aquela tabela &eacute; removida e criada novamente, e a fun&ccedil;&atilde;o &eacute; chamada novamente, a fun&ccedil;&atilde;o ir&aacute; falhar porque o conte&uacute;do armazenado da fun&ccedil;&atilde;o ainda apontar&aacute; para a tabela tempor&aacute;ria antiga. A solu&ccedil;&atilde;o &eacute; utilizar o <SMALL>EXECUTE</SMALL> para acesso a tabelas tempor&aacute;rias no PL/PgSQL. Isto ir&aacute; fazer com que a consulta seja avaliada toda vez.</P>
@@ -973,7 +973,7 @@ Para isto ser r&aacute;pido, <CODE>subcol</CODE> deve ser uma coluna indexada. <
     <H4><A name="4.27">4.27</A>) Que op&ccedil;&otilde;es para encripta&ccedil;&atilde;o est&atilde;o dispon&iacute;veis?</H4>
     <UL>
 	    <LI>No <I>contrib/pgcrypto</I> cont&eacute;m muitas fun&ccedil;&otilde;es de encripta&ccedil;&atilde;o para serem utilizados em consultas <SMALL>SQL</SMALL>.</li>
-	    <LI>Para encriptar a transmiss&atilde;o do cliente ao servidor, o servidor deve ter a op&ccedil;&atilde;o <I>ssl</I> definida como <I>true</I> no <I>postgresql.conf</I>, e um registro <I>host</I> ou <I>hostssl</I> deve existir no <I>pg_hba.conf</I>, e o <I>sslmode</I> no cliente n&atilde;o deve estar <I>disable</I>. (Note que tamb&eacute;m &eacute; poss&iacute;vel utilizar outros esquemas de transporte encriptado, tais como stunnel ou ssh, ao inv&eacute;s da conex&atilde;o SSL nativa do PostgreSQL.)
+	    <LI>Para encriptar a transmiss&atilde;o do cliente ao servidor, o servidor deve ter a op&ccedil;&atilde;o <I>ssl</I> definida como <I>true</I> no <I>postgresql.conf</I>, e um registro <I>host</I> ou <I>hostssl</I> deve existir no <I>pg_hba.conf</I>, e o <I>sslmode</I> no cliente n&atilde;o deve estar <I>disable</I>. (Note que tamb&eacute;m &eacute; poss&iacute;vel utilizar outros esquemas de transporte encriptado, tais como stunnel ou ssh, ao inv&eacute;s da conex&atilde;o SSL nativa do PostgreSQL.)</LI>
 	    <LI>Senhas dos usu&aacute;rios do banco de dados s&atilde;o automaticamente encriptadas quando armazenadas na vers&atilde;o 7.3. Em vers&otilde;es anteriores, voc&ecirc; deve habilitar a op&ccedil;&atilde;o <I>PASSWORD_ENCRYPTION</I> no <I>postgresql.conf</I>.</li>
 	    <li>O servidor pode executar utilizando um sistema de arquivos encriptado.</li>
     </UL>
diff --git a/doc/src/FAQ/FAQ_chinese.html b/doc/src/FAQ/FAQ_chinese.html
new file mode 100644
index 0000000..8a4662c
--- /dev/null
+++ b/doc/src/FAQ/FAQ_chinese.html
@@ -0,0 +1,875 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" dir="ltr">
+  <head>
+    <title>
+      PostgreSQL: PostgreSQL �������⣨FAQ��
+    </title>
+    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
+  </head>
+
+  <body>
+
+<h1>PostgreSQL �������⣨FAQ��</h1>
+<p>
+������£�2005 �� 06 �� 02 �� ������ 22:27:35 CST
+</p>
+<p>
+	Ŀǰά����Ա��Bruce Momjian (<a href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>)<br/>
+	���İ�ά����Ա��doudou586 ��doudou586_2005@yahoo.com.cn��
+</p>
+<p>
+	���ĵ������°汾������
+	<a href="http://www.postgresql.org/files/documentation/faqs/FAQ.html">http://www.postgresql.org/files/documentation/faqs/FAQ.html</a>�鿴��
+</p>
+<p>
+	�����ϵͳƽ̨��ص�������<a href="http://www.postgresql.org/docs/faq/">http://www.postgresql.org/docs/faq/</a>��ش�<br/>
+</p>
+<hr/>
+
+<div><h2>��������</h2></div>
+
+<p>
+<a href="#1.1">1.1</a>)PostgreSQL ��ʲô������ô������<br/>
+<a href="#1.2">1.2</a>)PostgreSQL �İ�Ȩ��ʲô��<br/>
+<a href="#1.3">1.3</a>)PostgreSQL ������������Щ����ϵͳƽ̨�ϣ�<br/>
+<a href="#1.4">1.4</a>)�Ҵ������ܵõ� PostgreSQL��<br/>
+<a href="#1.5">1.5</a>)�Ҵ������ܵõ��� PostgreSQL ��֧�֣�<br/>
+<a href="#1.6">1.6</a>)������ύһ��BUG���棿<br/>
+<a href="#1.7">1.7</a>)���°��PostgreSQL ��ʲô��<br/>
+<a href="#1.8">1.8</a>)�ܹ���ȡ�������ĵ�����Щ��<br/>
+<a href="#1.9">1.9</a>)������˽���֪�� BUG ����ȱ�Ĺ��ܣ�<br/>
+<a href="#1.10">1.10</a>)��Ӧ������ѧϰ SQL ��<br/>
+<a href="#1.11">1.11</a>)��Ӧ���������뿪�����飿<br/>
+<a href="#1.12">1.12</a>)PostgreSQL ���������ݿ�ϵͳ��������Σ�<br/>          
+<a href="#1.13">1.13</a>)˭���ƺ͹���PostgreSQL ��
+</p>
+
+<div><h2>�û��ͻ�������</h2></div>
+<p>
+<a href="#2.1">2.1</a>)���ǿ�����ʲô���Ժ� PostgreSQL �򽻵���<br/>
+<a href="#2.2">2.2</a>)��ʲô���߿��԰� PostgreSQL ���� Web ҳ�棿<br/>
+<a href="#2.3">2.3</a>)PostgreSQL ӵ��ͼ���û�������<br/>
+</p>
+
+<div><h2>ϵͳ��������</h2></div>
+<p>
+<a href="#3.1">3.1</a>)���������ܰ� PostgreSQL װ�� /usr/local/pgsql ����ĵط���<br/>
+<a href="#3.2">3.2</a>)����ο��������������������ӣ�<br/>
+<a href="#3.3">3.3</a>)�������������ݿ������Ի�ø��õ����ܣ�<br/>
+<a href="#3.4">3.4</a>)PostgreSQL ����Ի��ʲô���ĵ������ԣ�<br/>
+<a href="#3.5">3.5</a>)Ϊʲô����ͼ���ӵ�¼ʱ�յ���Sorry, too many clients�� ��Ϣ��<br/>
+<a href="#3.6">3.6</a>)ΪʲôҪ������ PostgreSQL ��Ҫ�����汾ʱ�� dump �� restore ��<br/>
+<a href="#3.7">3.7</a>)(ʹ��PostgreSQL)����Ҫʹ��ʲô�����Ӳ�� ��<br/>
+</p>
+
+<div><h2>��������</h2></div>
+<p>
+<a href="#4.1">4.1</a>)���ֻѡ��һ����ѯ�����ͷ���У����������һ�У�<br/>
+<a href="#4.2">4.2</a>)��β鿴�������������ݿ��Լ��û��Ķ��壿��β鿴<i>psql</i>���õ��Ĳ�ѯָ���ʾ���ǣ�<br/>
+<a href="#4.3">4.3</a>)��θ���һ���ֶε��������ͣ�<br/>
+<a href="#4.4">4.4</a>)һ�м�¼��һ������һ��������ߴ��Ƕ��٣�<br/>
+<a href="#4.5">4.5</a>)�洢һ�����͵��ı��ļ����������Ҫ���ٴ��̿ռ䣿<br/>
+<a href="#4.6">4.6</a>)Ϊʲô�ҵĲ�ѯ������Ϊʲô��Щ��ѯû������������<br/>
+<a href="#4.7">4.7</a>)����β��ܿ�����ѯ�Ż������������������ҵĲ�ѯ�ģ�<br/>
+<a href="#4.8">4.8</a>)���������������ʽ�����ʹ�Сд�޹ص��������ʽ���ң����������������д�Сд�޹ز��ң�<br/>
+<a href="#4.9">4.9</a>)��һ����ѯ����������һ���ֶ��Ƿ�Ϊ NULL������β���׼ȷ���������ĳ�ֶ��Ƿ�NULLֵ��<br/>
+<a href="#4.10">4.10</a>)�����ַ�����֮����ʲô��ͬ��<br/>
+<a href="#4.11.1">4.11.1</a>)����������һ�����к�/�Զ��������ֶΣ�<br/>
+<a href="#4.11.2">4.11.2</a>)����λ��һ����������кŵ�ֵ��<br/>
+<a href="#4.11.3">4.11.3</a>)ʹ�� currval() �ᵼ�º������û������������race condition����<br/>
+<a href="#4.11.4">4.11.4</a>)Ϊʲô���������쳣��ֹ���������к��أ�Ϊʲô�����к��ֶε�ȡֵ�д��ڼ���أ�<br/>
+<a href="#4.12">4.12</a>)ʲô�� OID��ʲô�� CTID ��<br/>
+<a href="#4.13">4.13</a>)Ϊʲô���յ�������Ϣ��<i>ERROR: Memory exhausted in AllocSetAlloc()</i>����<br/>
+<a href="#4.14">4.14</a>)����β���֪�������е� PostgreSQL �İ汾��<br/>
+<a href="#4.15">4.15</a>)����δ���һ��ȱʡֵ�ǵ�ǰʱ����ֶΣ�<br/>
+<a href="#4.16">4.16</a>)��ν��� outer join �������ӣ���<br/>
+<a href="#4.17">4.17</a>)���ʹ���漰������ݿ�Ĳ�ѯ��<br/>
+<a href="#4.18">4.18</a>)����ú������ض��л���У�<br/>
+<a href="#4.19">4.19</a>)Ϊʲô����ʹ��PL/PgSQL������ȡ��ʱ��ʱ���յ�������Ϣ��relation with OID ##### does not exist����<br/>
+<a href="#4.20">4.20</a>)Ŀǰ����Щ���ݸ��Ʒ������ã�<br/>
+</p>
+
+<hr/>
+
+<div><h2>��������</h2></div>
+
+<h4><a name="1.1"></a>1.1)PostgreSQL ��ʲô������ô������</h4>
+<p>
+PostgreSQL ���� <i>Post-Gres-Q-L</i>����ʱ��Ҳ���Ϊ<i>Postgres</i> ��
+</p>
+<p>
+	PostgreSQL ������Ŀ��Ĺ�ϵ���ݿ�ϵͳ�������д�ͳ��ҵ���ݿ�ϵͳ�����й��ܣ�ͬʱ�ֺ��н�����һ�� DBMS ϵͳ��ʹ�õ���ǿ���ԡ�
+	PostgreSQL ��������ѵģ���������Դ���붼���Ի�á�
+</p>
+
+<p>
+	PostgreSQL �Ŀ���������ҪΪ־Ը�ߣ����Ǳ鲼������ز�ͨ��������������ϵ������һ������������Ŀ���������κι�˾���ơ�
+	������뿪�����飬��μ�������Ա�������⣨FAQ��
+	<a href="http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html">http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html</a>
+</p>
+
+
+<h4><a name="1.2"></a>1.2)PostgreSQL �İ�Ȩ��ʲô?</h4>
+<p>
+PostgreSQL�ķ�����Ӿ����BSD��Ȩ������Դ��������ʹ��û���κ����ƣ����Ǻ�ϲ�����ַ�ʽ���һ�û�д���ı�����
+</p>
+<p>
+�����������ʹ�õ�BSD��Ȩ���ݣ�
+</p>
+
+<p>
+	���ְ�Ȩ��c��1996-2005��PostgreSQL ȫ�򿪷�С�飬���ְ�Ȩ��c��1994-1996 ���ݴ�ѧ����
+</p>
+
+<p>
+	��Portions copyright (c) 1996-2005, PostgreSQL Global Development Group Portions Copyright (c) 1994-6 Regents of the University of California��
+</p>
+
+<p>
+	����Ϊ�κ�Ŀ��ʹ�ã��������޸ĺͷַ���������������ĵ�������ȡ�κη��ã�
+	��������ǩ����˶�������֤����ǰ��������İ�Ȩ�����ͱ����Լ������������ֳ��������п����С�
+</p>
+
+<p>
+	��Permission to use, copy, modify, and distribute this software and its           
+	documentation for any purpose, without fee, and without a written agreement is           
+	hereby granted, provided that the above copyright notice and this paragraph and           
+	the following two paragraphs appear in all copies.��
+</p>
+
+<p>
+	���κ�����£����ݴ�ѧ�����е���ʹ�ô����������ĵ������µĶ��κε����˵�ֱ�ӵģ�
+	��ӵģ�����ģ����ӵĻ������������𻵣�����������ʧ�����Σ���ʹ���ݴ�ѧ�Ѿ���������Щ��ʧ�Ŀ�����ʱҲ����ˡ�
+</p>
+
+<p>
+	��IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR           
+	DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST           
+	PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF           
+	THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH           
+	DAMAGE.��
+</p>
+
+<p>
+	���ݴ�ѧ��ȷ�����κα�֤����������������ĳһ�ض���;����ҵ�������������֤��
+	�����ṩ����������ǻ��ڡ������ǡ��Ļ����ģ�������ݴ�ѧû�������ṩά����֧�֣����£���ǿ�����޸ĵķ���
+</p>
+
+<p>
+	��THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT           
+	NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A           
+	PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND           
+	THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE,           
+	SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.��<br/>          
+
+</p>
+
+<h4><a name="1.3"></a>1.3)PostgreSQL ������������Щ����ϵͳƽ̨�ϣ�</h4>
+
+<p>
+	һ��˵����һ���ִ��� UNIX ���ݵ�ƽ̨�������� PostgreSQL ���ڰ�װָ�����г��˷���ʱ������ȷ���Ե�ƽ̨��
+</p>
+
+<p>
+   PostgreSQlҲ����ֱ�������ڻ���΢��Windows-NT�Ĳ���ϵͳ����Win2000��WinXP �� Win2003����������ɵİ�װ���ɴ�
+   <a href="http://pgfoundry.org/projects/pginstaller">http://pgfoundry.org/projects/pginstaller</a>���أ�����MSDOS��Windows����ϵͳ
+   ��Win95��Win98��WinMe����Ҫͨ��Cygwinģ�⻷������PostgreSQL��
+</p>
+
+<p>
+  ͬʱҲ��һ��ΪNovell Netware 6�����İ汾�ɴ�<a href="http://forge.novell.com"> http://forge.novell.com </a>��ȡ��ΪOS/2�����İ汾�ɴ�
+  <a href="http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&amp;button=Search&amp;key=postgreSQL&amp;stype=all&amp;sort=type&amp;dir=%2F">
+  http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&amp;button=Search&amp;key=postgreSQL&amp;stype=all&amp;sort=type&amp;dir=%2F</a>
+</p>
+
+<h4><a name="1.4"></a>1.4)�Ҵ������ܵõ� PostgreSQL��</h4>
+
+<p>
+  ͨ��������ɴ�<a href="http://www.postgresql.org/ftp/">http://www.postgresql.org/ftp/</a>���أ�Ҳ��ͨ��FTP����
+  <a href="ftp://ftp.PostgreSQL.org/pub/">ftp://ftp.PostgreSQL.org/pub/</a>վ�����ء�
+</p>
+
+
+<h4><a name="1.5"></a>1.5)�Ҵ������ܵõ��� PostgreSQL ��֧�֣�</h4>
+<p>
+    PostgreSQL����ͨ���ʼ��б�Ϊ�������û��ṩ�����������ʼ��б�����վ����<a href="http://www.postgresql.org/community/lists/"> http://www.postgresql.org/community/lists/</a>��һ������£��ȼ���<i>General</i> �� <i>Bug</i>�ʼ��б���һ���ϺõĿ�ʼ��
+</p>
+
+<p>
+	��Ҫ��IRCƵ������FreeNode(<i>irc.freenode.net</i>)��<i>#postgresql</i>��Ϊ�����ϴ�Ƶ��������ʹ��UNIX����irc����ָ���ʽ��
+	irc -c '#postgresql' "$USER" irc.freenode.net ������ʹ������IRC�ͻ��˳����ڴ������л�����һ��PostgreSQL��������Ƶ��(<i>#postgersql-es</i>)�ͷ���Ƶ��
+	(<i>#postgresql-fr</i>)��ͬ���أ���EFNET��Ҳ��һ��PostgreSQL�Ľ���Ƶ����
+</p>
+
+<p>
+	��ҵ֧�ֹ�˾���б���<a href=" http://techdocs.postgresql.org/companies.php"> http://techdocs.postgresql.org/companies.php</a>��
+</p>
+
+
+
+<h4><a name="1.6"></a>1.6)������ύһ��BUG���棿</h4>
+<p>
+	�ɷ��� <a href="http://www.postgresql.org/support/submitbug">http://www.postgresql.org/support/submitbug</a>����дBug�ϱ����񼴿ɡ�
+</p>
+
+<p>
+    ͬ��Ҳ�ɷ���ftpվ��<a href="ftp://ftp.PostgreSQL.org/pub/">ftp://ftp.PostgreSQL.org/pub/</a> ������޸��µ�PostgreSQL�汾�򲹶���
+</p>
+
+
+
+<h4><a name="1.7"></a>1.7)���°��PostgreSQL ��ʲô��</h4>
+<p>
+	PostgreSQL ���µİ汾�ǰ汾 8.0.2 ����ע�������°汾Ϊ8.0.3����
+</p>
+
+<p>
+	���Ǽƻ�ÿ�귢��һ����Ҫ�汾��ÿ�����·���һ��С�汾��
+</p>
+
+
+<h4><a name="1.8"></a>1.8)�ܹ���ȡ�������ĵ�����Щ��</h4>
+
+<p>
+	PostgreSQL�����������ĵ�����Ҫ��һЩ�ֲᣬ�ֲ�ҳ��һЩ�Ĳ������ӡ��μ� /doc Ŀ¼����ע��ӦΪ $PGHOME/doc����
+	�㻹����������� PostgreSQL ���ֲᣬ���ַ�ǣ�<a href="http://www.PostgreSQL.org/docs">http://www.PostgreSQL.org/docs</a>��
+</p>
+<p>
+	���������� PostgreSQL ���������ṩ����
+	<a href="http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</a>
+	�� <a href="http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</a> ��
+	Ҳ�д�����PostgreSQL�鼮�ɹ�����������Ϊ���е�һ������Korry Douglas��д�ġ��� 
+	<a href="http://techdocs.PostgreSQL.org/techdocs/bookreviews.php">http://techdocs.PostgreSQL.org/techdocs/bookreviews.php</a>��
+	���д����й�PostgreSQL�鼮�ļ�顣
+	�� <a href="http://techdocs.PostgreSQL.org/">http://techdocs.PostgreSQL.org/</a>���ռ����й� PostgreSQL �Ĵ����������¡�
+</p>
+
+<p>
+	�ͻ��˵������г���<i>psql</i>��һЩ�� \d ��ͷ���������ʾ�������ͣ������������������ܵȵ���Ϣ��ʹ�� \? ������ʾ���п��õ����
+</p>
+
+<p>
+	���ǵ� web վ�����������ĵ���
+</p>
+
+<h4><a name="1.9"></a>1.9)������˽���֪�� BUG ����ȱ�Ĺ��ܣ�</h4>
+<p>
+	PostgreSQL ֧��һ����չ�˵� SQL-92 ���Ӽ����������ǵ�<a href="http://www.postgresql.org/docs/faqs.TODO.html">TODO</a> �б�����ȡһ����֪Bug����ȱ�Ĺ��ܺͽ����ļƻ���
+</p>
+
+
+<h4><a name="1.10"></a>1.10)��Ӧ������ѧϰ SQL ��</h4>
+<p>
+	���ȿ��������ᵽ����PostgreSQL��ص��鼮������һ����<i>Teach Yourself SQL in 21 Days, Second Edition</i>��
+	���ǵ������û�ϲ��<i>The Practical SQL Handbook</i> Bowman, Judith S., et al., Addison-Wesley����������ϲ��
+	<i>The Complete Reference SQL</i>, Groff et al., McGraw-Hill��
+</p>
+
+
+<h4><a name="1.11"></a>1.11)��Ӧ���������뿪�����飿</h4>
+<p>
+	���<a href="http://www.postgresql.org/docs/faqs.FAQ_DEV.html"> Developer's FAQ </a>��
+</p>
+
+
+<h4><a name="1.12"></a>1.12)PostgreSQL ���������ݿ�ϵͳ��������Σ�</h4>
+<p>
+���������кü��ַ��������ԣ����ܣ��ɿ��ԣ�֧�ֺͼ۸�
+</p>
+<dl>
+	<dt><b>����</b></dt>
+	<dd>
+		PostgreSQL ӵ�д������� DBMS ���������ԣ�
+		���磺�����Ӳ�ѯ������������ͼ������ο������Ժ͸��ӵ����ȡ�
+		���ǻ���һЩ����û�е����ԣ����û��������ͣ��̳У�����Ͷ�汾���п����Լ����������õȡ�<br/>
+	</dd>
+
+	<dt><b>����</b></dt>
+	<dd>
+		PostgreSQL ���������úͿ�Դ�����ݿ�������Ƶ����ܡ�
+		��ĳЩ�������ȽϿ죬������һЩ�������Ƚ�����
+		���������ݿ���ȣ����ǵ�����ͨ���� +/- 10%֮�䡣<br/>
+	</dd>
+
+	<dt><b>�ɿ���</b></dt>
+	<dd>
+		����֪�� DBMS �����ǿɿ��ģ���������һ���ö�û�С�
+		����Ŭ��������������������Եģ��ȶ��ĳ������ٵĴ��롣ÿ���汾������һ���µ� beta
+		����ʱ�䣬�������ǵķ�����ʷ��ʾ���ǿ����ṩ�ȶ��ģ��ι̵ģ�����������ʹ�õİ汾����������
+		���ⷽ�����������������ݿ��������൱�ġ�<br/>
+	</dd>
+	
+	<dt><b>֧��</b></dt>
+	 <dd>
+		���ǵ��ʼ��б��ṩһ���ǳ���Ŀ�����Ա���û������԰���������������κ����⡣
+		���ǲ��ܱ�֤�϶��ܽ�����⣬���֮�£����� DBMS Ҳ���������ܹ��ṩ���������
+		ֱ���뿪����Ա���û�Ⱥ���ֲ��Դ����Ӵ��� PostgreSQL ��֧�ֱ����� DBMS
+		��Ҫ�á�����һЩ��ҵ�Ե�Ԥ��װ��֧�֣����Ը��ṩ����Щ��Ҫ���ˡ������� FAQ ���� 1.5 С�ڣ�<br/>
+	 </dd>
+
+	 <dt><b>�۸�</b></dt>
+	 <dd>
+		���Ƕ��κ���;����ѣ��������úͷ�����Ŀ�ġ�
+		����Բ������Ƶ�����Ĳ�Ʒ��������ǵĴ��룬������Щ����������İ�Ȩ������������ BSD ���İ�Ȩ�⡣
+	 </dd>
+
+</dl>
+
+
+<h4><a name="1.13"></a>1.13)˭����PostgreSQL ��</h4>
+<p>
+	�������Ѱ��PostgreSQL�������ˣ�����ʲô����ίԱ�ᣬ����ʲô������˾����ֻ�ܷ�����---��Ϊһ��Ҳ�����ڣ������ǵ�ȷ��һ��
+	ίԱ���CVS�����飬����Щ�������������Ҫ��Ϊ�˽��й������������Ƕ�PostgreSQL���п��ƣ�PostgreSQL��Ŀ�����κ��˾�
+	�ɲμӵĿ�����Ա�����������û����Ƶģ�������Ҫ���ľ��Ǽ����ʼ��б����������ۼ��ɣ�Ҫ����PostgreSQL�Ŀ������
+	<a href="http://www.postgresql.org/docs/faqs.FAQ_DEV.html"> Developer's FAQ </a>��ȡ��Ϣ����
+</p>
+
+<hr/>
+
+
+<div> <h2>�û��ͻ�������</h2> </div>
+
+<h4><a name="2.1"></a>2.1)���ǿ�����ʲô���Ժ� PostgreSQL �򽻵���</h4>
+<p>
+	PostgreSQL(ȱʡ���)ֻ��װ��C����ǶʽC�Ľӿڣ������Ľӿڶ��Ƕ�������Ŀ���ܹ��ֱ����أ���Щ�ӿ���Ŀ�����ĺô�
+	�����ǿ����и��Եķ����ƻ��͸��Զ����Ŀ����顣
+</p>
+<p>
+	һЩ���������PHP���з��� PostgreSQL �Ľӿڣ�Perl,TCL,Python�Լ��ܶ��������ԵĽӿ���
+	<a href="http://gborg.postgresql.org/"> http://gborg.postgresql.org </a>�ϵ�<i>Drivers/Interfaces</i>С�ڿ��ҵ���
+	����ͨ��Internet��������������
+</p>
+
+
+
+<h4><a name="2.2"></a>2.2)��ʲô���߿��԰� PostgreSQL ���� Web ҳ�棿</h4>
+<p>
+	һ�����������ݿ�Ϊ��̨��ͦ������վ���ǣ�<a href="http://www.webreview.com">http://www.webreview.com</a>��
+</p>
+<p>
+	���� Web ���ɣ�PHP ��һ�����õĽӿڡ����ڣ�<a href="http://www.php.net/">http://www.php.net/</a>��
+</p>
+<p>
+	���ڸ��ӵ����񣬺ܶ��˲��� Perl �ӿں� CGI.pm �� mod_perl ��
+</p>
+
+
+<h4><a name="2.3"></a>2.3)PostgreSQL ӵ��ͼ���û�������</h4>
+<p>
+	�ǵģ��� <a href="http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools</a>��һ����ϸ���б���
+</p>
+
+
+
+<hr/>
+
+<div> <h2>ϵͳ��������</h2> </div>
+
+<h4><a name="3.1"></a>3.1)�������ܰ� PostgreSQL װ�� /usr/local/pgsql ����ĵط���</h4>
+<p>
+	������ configure ʱ���� --prefix ѡ�
+</p>
+
+
+<h4><a name="3.2"></a>3.2)����ο��������������������ӣ�</h4>
+<p>
+	ȱʡʱ��PostgreSQL ֻ����ͨ�� unix ���׽��ֻ�TCP/IP��ʽ�����Ա��������ӡ�
+	��ֻ�����޸��������ļ�<i>postgresql.conf</i>�е�<i>listen_addresses</i>����Ҳ�������ļ�<i>pg_hba.conf</i>�д���
+	����Ϊ������ host-based ����������֤������������PostgreSQL���������������ǲ��������PostgreSQL���������ӵġ�
+</p>
+
+
+<h4><a name="3.3"></a>3.3)�������������ݿ������Ի�ø��õ����ܣ�</h4>
+<p>
+	��������Ҫ�����������PostgreSQL��Ǳ�ܡ�
+</p>
+
+<dl>
+	<dt><b>��ѯ��ʽ�ı仯</b></dt>
+	<dd>
+		����Ҫ�漰�޸Ĳ�ѯ��ʽ�Ի�ȡ���õ�����:
+		<ul>
+		<li>������������������ʽ�Ͳ���������</li>
+		<li>ʹ��COPY��������Insert��䣻</li>
+		<li>�����SQL������һ�������Լ����ύ����Ŀ�����</li>
+		<li>��һ����������ȡ������¼ʱʹ��CLUSTER��</li>
+		<li>��һ����ѯ�����ȡ�����ּ�¼ʱʹ��LIMIT��</li>
+		<li>ʹ��Ԥ����ʽ��ѯ��Prepared Query)��</li>
+		<li>ʹ��ANALYZE�Ա��־�ȷ���Ż�ͳ�ƣ�</li>
+		<li>����ʹ�� VACUUM �� <i>pg_autovacuum</i></li>
+		<li>���д������ݸ���ʱ��ɾ��������Ȼ���ؽ�������</li>
+		</ul>
+	</dd>
+
+	<dt><b>������������</b></dt>
+	<dd>
+		�����ļ�<i>postgres.conf</i>�еĺܶ����ö���Ӱ�����ܣ����в������б��ɼ���
+		<a href="http://www.postgresql.org/docs/current/static/runtime.html">Administration Guide/Server Run-time Environment/Run-time Configuration</a>��
+		�йز����Ľ��Ϳɼ���<a href="http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html">
+		http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html </a> �� 
+		<a href="http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html">http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html</a>��
+	</dd>
+
+	<dt><b>Ӳ����ѡ��</b></dt>
+	<dd>
+		�����Ӳ�������ܵ�Ӱ������ <a href="http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html">
+		http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html</a> �� 
+		<a href="http://www.powerpostgresql.com/PerfList/">http://www.powerpostgresql.com/PerfList/</a>��
+	</dd>
+
+</dl>
+
+
+<h4><a name="3.4"></a>3.4)PostgreSQL ����Ի��ʲô���ĵ������ԣ�</h4>
+<p>
+	PostgreSQL �кܶ�����<i> log_* </i>�ķ��������ñ��������ڲ�ѯ�Ĵ�ӡ�ͽ���ͳ�ƣ�����Щ�����Ե��Ժ����ܲ��Ժ��а�����
+</p>
+
+
+
+<h4><a name="3.5"></a>3.5)Ϊʲô����ͼ����ʱ�յ���Sorry, too many clients����Ϣ��</h4>
+<p>
+	���ʾ���Ѵﵽȱʡ100��������̨�����������ƣ�����Ҫͨ���޸�<i>postgresql.conf</i>�ļ��е�<i>max_connections</i>ֵ��
+	����postmaster�ĺ�̨�������������޸ĺ�����������<i>postmaster</i>��
+</p>
+
+
+<h4><a name="3.6"></a>3.6)ΪʲôҪ������ PostgreSQL ��Ҫ�����汾ʱ�� dump �� restore ��</h4>
+<p>
+	PostgreSQL �������ÿ��С�����������˽��ٵ��޸ģ���˴� 7.4.0 ������ 7.4.1 ����Ҫ dump �� restore��
+	������Ҫ������������� 7.3 �� 7.4��ͨ�����޸�ϵͳ�������ݱ����ڲ���ʽ��
+	��Щ�仯һ��Ƚϸ��ӣ�������ǲ�ά�����ļ��������ݡ�
+	dump �����ݰ���ͨ�õĸ�ʽ����������Ա����¼��ز�ʹ���µ��ڲ���ʽ��
+</p>
+
+<h4><a name="3.7"></a>3.7)(ʹ��PostgreSQL)����Ҫʹ��ʲô�����Ӳ�� ��</h4>
+<p>
+	���ڼ����Ӳ��������Ǽ��ݵģ����������������������м����Ӳ������Ҳ����ͬ�ġ���ʵ�ϲ��ǣ�
+	ECC RAM������żУ����ڴ棩��SCSI ��Ӳ�̣������ʵ������һЩ���˻�Ҫ���ӿɿ��Ҿ��и��õ����ܡ�PostgreSQL���������������κ�Ӳ���ϣ�
+	������ɿ��Ժ����ܶ����ϵͳ����Ҫ�������Ҫȫ����о�һ�����Ӳ�������ˡ������ǵ��ʼ��б���Ҳ�й���
+	Ӳ�����ú��Լ۱ȵ����ۡ�
+</p>
+
+
+<hr/>
+
+<div><h2>��������</h2> </div>
+
+
+<h4><a name="4.1"></a>4.1)���ֻѡ��һ����ѯ�����ͷ���У����������һ�У�</h4>
+<p>
+		�����ֻ��Ҫ��ȡ�������ݣ���������ִ�в�ѯ��֪��ȷ�е������������ʹ��LIMIT���ܡ�
+		�����һ�������� <i> ORDER BY</i>�е�����ƥ�䣬PostgreSQL ���ܾ�ֻ����Ҫ���ͷ������¼��
+		�����򽫶�������ѯ���д���ֱ��������Ҫ���У��������ִ�в�ѯ����ʱ��֪��ȷ�еļ�¼����
+		��ʹ���α�(cursor)��FETCH���ܡ�
+</p>
+<p>
+		��ʹ�����·�����ȡһ�������¼�ģ�
+</p>
+<pre>
+		SELECT  cols
+		FROM tab
+		ORDER BY random()
+		LIMIT 1 ;
+</pre>
+
+
+
+<h4><a name="4.2"></a>4.2)��β鿴�������������ݿ��Լ��û��Ķ��壿��β鿴<i>psql</i>���õ��Ĳ�ѯָ���ʾ���ǣ�</h4>
+<p>
+	��<i>psql</i>��ʹ�� \dt ��������ʾ���ݱ��Ķ��壬Ҫ�˽�<i>psql</i>�е����������б���ʹ��\? �����⣬��Ҳ�����Ķ� <i>psql</i> ��Դ����
+	�ļ�<i>pgsql/src/bin/psql/describe.c</i>��������Ϊ����<i>psql</i>��б���������������� SQL ����㻹���Դ� <i>-E</i> ѡ������ <i>psql</i>��
+	����������ӡ��ִ������<i>psql</i>����������������ڲ�ʵ��ʹ�õ�SQL��ѯ��PostgreSQLҲ�ṩ��һ������SQL��INFORMATION SCHEMA�ӿڣ�
+	����Դ������ȡ�������ݿ����Ϣ��
+</p>
+<p>
+	��ϵͳ����һЩ��<i>pg_</i> ��ͷ��ϵͳ��Ҳ�����˱��Ķ��塣
+</p>
+<p>
+	ʹ�� <i>psql -l</i> ָ������г����е����ݿ⡣
+</p>
+<p>
+	Ҳ�������һ�� <i>pgsql/src/tutorial/syscat.source</i>�ļ������о��˺ܶ�ɴ����ݿ�ϵͳ���л�ȡ��Ϣ��SELECT�﷨��
+</p>
+
+
+<h4><a name="4.3"></a>4.3)��θ���һ���ֶε��������ͣ�</h4>
+<p>
+	��8.0�汾�����һ���ֶε��������ͺ����ף���ʹ�� ALTER TABLE ALTER COLUMN TYPE ��
+</p>
+<p>
+	����ǰ�İ汾�У�������������
+</p>
+<pre>
+	BEGIN;
+    ALTER TABLE tab ADD COLUMN new_col new_data_type;
+    UPDATE tab SET new_col = CAST(old_col AS new_data_type);
+    ALTER TABLE tab DROP COLUMN old_col;
+    COMMIT;
+</pre>
+<p>
+	��Ȼ�����ʹ��<i>VACUUM FULL tab </i>ָ����ʹϵͳ�ջ���Ч������ռ�õĿռ䡣
+</p>
+
+<h4><a name="4.4"></a>4.4)һ�м�¼��һ������һ��������ߴ��Ƕ��٣�</h4>
+<p>
+	������һЩ���ƣ�
+</p>
+<blockquote>
+	<table>
+	<tbody>
+		<tr><td>һ�����ݿ����ߴ磿</td><td>�����ƣ��Ѵ����� 32TB �����ݿ⣩</td></tr>
+		<tr><td>һ���������ߴ磿</td><td>32 TB</td></tr>
+		<tr><td>һ�м�¼�����ߴ磿</td><td>1.6 TB</td></tr>
+		<tr><td>һ���ֶε����ߴ�?</td><td>1 GB</td></tr>
+		<tr><td>һ���������������</td><td>������</td></tr>
+		<tr><td>һ���������������</td><td>250-1600 �����������йأ�</td></tr>
+		<tr><td>һ��������������������</td><td>������</td></tr>
+	</tbody>
+</table>
+</blockquote>
+
+<p>
+	��Ȼ��ʵ����û�������������ƣ�����Ҫ�ܿ��ô��̿ռ䡢�����ڴ�/����������Լ��
+	��ʵ�ϣ�����Щ��ֵ����쳣�ش�ʱ��ϵͳ����Ҳ���ܴܺ�Ӱ�졣
+</p>
+
+<p>
+	�������ߴ� 32 TB ����Ҫ����ϵͳ�Դ��ļ���֧�֡�����ö�� 1 GB ���ļ��洢������ļ�ϵͳ�ߴ�������ǲ���Ҫ�ġ�
+</p>
+<p>
+	���ȱʡ�Ŀ��С������ 32K �����ı��ߴ������������������ӵ��ı���
+</p>
+
+
+<h4><a name="4.5"></a>4.5)�洢һ�����͵��ı��ļ����������Ҫ���ٴ��̿ռ䣿</h4>
+<p>
+	һ�� Postgres ���ݿ⣨�洢һ���ı��ļ�����ռ�õĿռ���������Ҫ�൱������ı��ļ�������С5���Ĵ��̿ռ䡣
+</p>
+<p>
+	���磬������һ�� 100,000 �е��ļ���ÿ����һ��������һ���ı�������
+	�����ı�����ƽ������Ϊ20�ֽڡ��ı��ļ�ռ�� 2.8 MB�������Щ���ݵ� PostgreSQL ���ݿ��ļ���Լ�� 6.4 MB:
+</p>
+<pre>
+     32 �ֽ�: ÿ�е�ͷ������ֵ��
+     24 �ֽ�: һ���������ֶκ�һ���ı����ֶ�
+   +  4 �ֽ�: ҳ����ָ��Ԫ���ָ��
+   ----------------------------------------
+     60 �ֽ�ÿ��
+
+   PostgreSQL ����ҳ�Ĵ�С�� 8192 �ֽ� (8 KB)����
+
+   8192 �ֽ�ÿҳ
+   -------------------   =  136 ��/����ҳ������ȡ����
+     60 �ֽ�ÿ��
+
+   100000 ������
+   --------------------  =  735 ����ҳ������ȡ����
+      128 ��ÿҳ
+
+   735 ����ҳ * 8192 �ֽ�/ҳ  =  6,021,120 �ֽڣ�6 MB��
+</pre>
+
+<p>
+	��������Ҫ��ô��Ķ������ģ���Ҳȷʵ���������������ݣ��������Ҳ���ܴܺ�
+</p>
+<p>
+	��ֵ<i>NULL</i>�����λͼ�У����ռ�ú��ٵĿռ䡣
+</p>
+
+<h4><a name="4.6"></a>4.6)Ϊʲô�ҵĲ�ѯ������Ϊʲô��Щ��ѯû������������</h4>
+<p>
+	����ÿ����ѯ�����Զ�ʹ��������ֻ���ڱ��Ĵ�С����һ����Сֵ�����Ҳ�ѯֻ��ѡ�б��н�С�����ļ�¼ʱ�Ż����������
+	������Ϊ����ɨ��������漴���̴�ȡ���ܱ�ֱ�ӵض�ȡ����˳��ɨ�裩������
+</p>
+<p>
+	Ϊ���ж��Ƿ�ʹ��������PostgreSQL�������йر���ͳ��ֵ����Щͳ��ֵ����ʹ�� VACUUM ANALYZE���� ANALYZE ��á�
+	ʹ��ͳ��ֵ���Ż���֪�������ж����У����ܹ����õ��ж��Ƿ�����������
+	ͳ��ֵ��ȷ���Ż�������˳������ӷ���Ҳ�����á��ڱ������ݷ����仯ʱ��Ӧ���ڽ���ͳ��ֵ�ĸ����ռ���
+</p>
+<p>
+	����ͨ�������� ORDER BY ��ִ�����ӡ���һ�������һ��˳��ɨ�裬����һ����ʽ������ͨ��������ɨ��Ҫ�졣
+</p>
+
+<p>
+	���ǣ��� LIMIT �� ORDER BY ���ʹ��ʱ������ʹ����������Ϊ��ֻ�᷵�ر���һС���֡�
+	ʵ���ϣ���Ȼ MAX() �� MIN() ����ʹ��������ͨ����
+	ORDER BY �� LLIMIT ʹ������ȡ�����ֵ����СֵҲ�ǿ��Եģ�
+</p>
+<pre>
+	SELECT col
+	FROM tab
+	ORDER BY col [ DESC ]
+	LIMIT 1;
+</pre>
+<p>
+	�����ȷ��PostgreSQL���Ż���ʹ��˳��ɨ���ǲ���ȷ�ģ������ʹ��<code>SET enable_seqscan TO 'off'</code>ָ�
+	Ȼ���ٴ����в�ѯ����Ϳ��Կ���ʹ��һ������ɨ���Ƿ�ȷʵҪ��һЩ��
+</p>
+
+<p>
+	��ʹ��ͨ������������� <i>LIKE</i> �� <i>~</i> ʱ������ֻ�����ض��������ʹ�ã�
+</p>
+<ul>
+	<li>�ַ����Ŀ�ʼ���ֱ�������ͨ�ַ�����Ҳ����˵��
+		<ul>
+		<li> <i>LIKE</i> ģʽ������ <i>%</i> ��ͷ��</li>
+		<li> <i>~</i> ���������ʽ��ģʽ������ <i>^</i> ��ͷ��</li>
+		</ul>
+	</li>
+	<li>�ַ���������ƥ�����ַ���ģʽ���ͷ������ [a-e]��</li>
+	<li>��Сд�޹صĲ��ң��� ILIKE �� ~* �Ȳ�ʹ���������������� <a href="#4.8">4.8</a> �������ĺ���������</li>
+	<li>���� initdb ʱ�������ȱʡ�ı������� C locale����Ϊϵͳ������֪���ڷ�C locale���ʱ��һ������ַ���ʲô��
+		����������£�����Դ���һ�������<code>text_pattern_ops</code>����������<small>LIKE</small>��������
+	</li>
+</ul>
+<p>
+	��8.0֮ǰ�İ汾�У�����Ҫ��ѯ���������ͺ�����������������ƥ�䣬��������������δ���õ����ر��Ƕ�int2,int8����ֵ�͵�������
+</p>
+
+<h4><a name="4.7"></a>4.7)����β��ܿ�����ѯ�Ż������������������ҵĲ�ѯ��</h4>
+<p>
+	�ο� <small>EXPLAIN</small> �ֲ�ҳ��
+</p>
+
+<h4><a name="4.8"></a>4.8)���������������ʽ�����ʹ�Сд�޹ص��������ʽ���ң����������������д�Сд�޹ز��ң�</h4>
+<p>
+	������ <i> ~ </i> �����������ʽƥ�䣬�� <i>~*</i> ������Сд�޹ص��������ʽƥ�䡣��дЩ�޹ص� LIKE ���ֳ�Ϊ ILIKE��
+</p>
+<p>
+	��Сд�޹صĵ�ʽ�Ƚ�ͨ��д����
+</p>
+<pre>    SELECT *
+    FROM tab
+    WHERE lower(col) = 'abc';
+</pre>
+<p>
+	����������ʹ�ñ�׼�����������ǿ��Դ���һ���ɱ����õĺ�������:
+</p>
+<pre>    CREATE INDEX tabindex ON tab (lower(col));
+</pre>
+
+<h4><a name="4.9"></a>4.9)��һ����ѯ����������һ���ֶ��Ƿ�Ϊ <i>NULL</i> ������β���׼ȷ���������ĳ�ֶ��Ƿ� <i>NULL</i> ֵ��</h4>
+<p>
+	�� <small>IS NULL</small> �� <small>IS NOT NULL</small> ��������ֶΣ����巽�����£�
+</p>
+<pre>   SELECT *
+   FROM tab
+   WHERE col IS NULL;
+</pre>
+
+<p>Ϊ���ܶԺ� <small>NULL</small>�ֶ����򣬿��� <small>ORDER BY</small> ������ʹ�� <small>IS NULL</small>��
+   <small>IS NOT NULL</small> ���η�������Ϊ�� <i>true</i> ��������Ϊ��<i>false</i> ����ǰ�棬��������ӾͻὫ��
+   NULL �ļ�¼���ڽ�������沿�֣�
+</p>
+<pre>   SELECT *
+   FROM tab
+   ORDER BY (col IS NOT NULL)
+</pre>
+
+<h4><a name="4.10"></a>4.10)�����ַ�����֮����ʲô��ͬ��</h4>
+<blockquote>
+	<table>
+	<tbody>
+		<tr><th>����</th><th>�ڲ�����</th><th>˵��</th></tr>
+		<tr><td>VARCHAR(n)</td><td>varchar</td><td>ָ������󳤶ȣ��䳤�ַ��������㶨�峤�ȵĲ��ֲ�����</td></tr>
+		<tr><td>CHAR(n)</td><td>bpchar</td><td>�����ַ�����ʵ�����ݲ��㶨�峤��ʱ���Կո���</td></tr>
+		<tr><td>TEXT</td><td>text</td><td>û���ر���������ƣ������е���󳤶����ƣ�</td></tr>
+		<tr><td>BYTEA</td><td>bytea</td><td>�䳤�ֽ����У�ʹ��NULLҲ�������ģ�</td></tr>
+		<tr><td>"char"</td><td>char</td><td>һ���ַ�</td></tr>
+		</tbody>
+	</table>
+</blockquote>
+
+<p>
+	��ϵͳ������һЩ������Ϣ���㽫�����ڲ����ơ�
+</p>
+<p>
+	�������е�ǰ����������"varlena"���䳤�����ͣ�Ҳ����˵����ͷ���ĸ��ֽ��ǳ��ȣ�����������ݣ���
+	����ʵ��ռ�õĿռ�������Ĵ�СҪ��һЩ��
+	Ȼ����Щ���Ͷ����Ա�ѹ���洢��Ҳ������ TOAST �ѻ��洢����˴��̿ռ�Ҳ���ܱ�Ԥ���Ҫ�١�
+</p>
+<p>
+	<small>VARCHAR(n)</small> �ڴ洢��������󳤶ȵı䳤�ַ�������õġ�
+	<small>TEXT</small> �����ڴ洢���ɴ� 1G���ҵ�δ�������Ƴ��ȵ��ַ�����
+</p>
+<p>
+	<small>CHAR(n)</small> ���ʺ��ڴ洢������ͬ���ַ����� <small>CHAR(n)</small>��������������ֶγ����Կո��㣨������ֶ����ݣ���
+	�� <small>VARCHAR(n)</small> ֻ�洢���������������ݡ�
+	<small>BYTEA</small> ���ڴ洢���������ݣ������ǰ��� NULL �ֽڵ�ֵ����Щ���;������Ƶ��������ԡ�
+</p>
+
+
+
+<h4><a name="4.11.1"></a>4.11.1)����������һ�����к�/�Զ��������ֶΣ�</h4>
+<p>
+	PostgreSQL ֧�� SERIAL �������͡������ֶ����Զ�����һ�����к����������磺
+</p>
+<pre>
+	CREATE TABLE person ( 
+		id   SERIAL, 
+		name TEXT 
+	);
+</pre>
+<p>
+	���Զ�ת��Ϊ��
+</p>
+<pre>
+	CREATE SEQUENCE person_id_seq;
+	CREATE TABLE person ( 
+		id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),
+		name TEXT
+	);
+</pre>
+<p>
+	�ο� create_sequence �ֲ�ҳ��ȡ�������еĸ�����Ϣ��
+</p>
+
+
+<h4><a name="4.11.2"></a>4.11.2)����λ��һ����������кŵ�ֵ��</h4>
+<p>
+	һ�ַ������ڲ���֮ǰ���ú��� nextval() �����ж������������һ�� SERIAL ֵ��Ȼ������ʽ���롣ʹ��
+	<a href="#4.11.1"> 4.11.1</a> �������������α������������
+</p>
+<pre>
+	new_id = execute("SELECT nextval('person_id_seq')");
+	execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
+</pre>
+<p>
+	����������������ѯ��ʹ�ô���� new_id �����ֵ�����磬��Ϊ person �����������
+	ע���Զ������� SEQUENCE ��������ƽ�����  &lt;<i>table</i>&gt;_&lt;<i>serialcolumn</i>&gt;_<i>seq</i>��
+	���� table �� serialcolumn �ֱ�����ı������ƺ���� SERIAL �ֶε����ơ�
+</p>
+<p>
+	���Ƶģ��� SERIAL ����ȱʡ�����������ú��� currval() �����ո�ֵ�� SERIAL ֵ�����磺
+</p>
+<pre>
+	execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
+	new_id = execute("SELECT currval('person_id_seq')");
+</pre>
+
+<h4><a name="4.11.3"></a>4.11.3)ʹ�� <i>currval()</i> �ᵼ�º������û��ĳ�ͻ�����race condition����</h4>
+<p>
+	���ᡣ<i>currval()</i> ���ص����㱾�λỰ����������ֵ�����������û��ĵ�ǰֵ��<br/>
+</p>
+
+<h4><a name="4.11.4"></a>4.11.4)Ϊʲô���������쳣��ֹ���������к��أ�Ϊʲô�����к��ֶε�ȡֵ�д��ڼ���أ�</h4>
+<p>
+	Ϊ����߲����ԣ����к�����Ҫ��ʱ�����������е����񣬲������������֮ǰ������������
+	��ͻᵼ���쳣��ֹ����������кŻ���ּ����
+</p>
+
+<h4><br/><a name="4.12"></a>4.12)ʲô�� <small>OID</small> ��ʲô�� <small>CTID</small> ��</h4>
+<p>
+	PostgreSQL �ﴴ����ÿһ�м�¼������һ��Ψһ��<small>OID</small>�������ڴ�����ʱʹ��<small>WITHOUT OIDS</small>ѡ�
+	<small>OID</small>����ʱ���Զ�����һ��4�ֽڵ����������� OID ������ PostgreSQL �о���Ψһ�ġ� Ȼ�������ڳ���40��ʱ�������
+	<small>OID</small>�˺������ظ���PostgreSQL �������ڲ�ϵͳ����ʹ�� OID �ڱ�֮�佨����ϵ��
+</p>
+<p>	
+	���û������ݱ��У������ʹ��<small>SERIAl</small>������<small>OID</small>
+	��Ϊ<small>SERIAL</small>ֻ�Ǳ�֤�ڵ�������������Ψһ�ģ�����������Ŀ����Ծͷǳ�С�ˣ�
+	<small>SERIAL8</small>����������8�ֽڵ����к��ֶΡ�
+</p>
+
+<p>
+	<small>CTID</small> ���ڱ�ʶ�������ݿ飨��ַ���ͣ����ڣ�ƫ�Ƶ��ض��������С�
+	<small>CTID</small> �ڼ�¼�����Ļ����غ����ı䡣�������ʹ������ָ�������С�
+</p>
+
+
+<h4><a name="4.13"></a>4.13)Ϊʲô���յ�������Ϣ��<i>ERROR: Memory exhausted in AllocSetAlloc()</i>����</h4>
+<p>
+	��ܿ�����ϵͳ�������ڴ��ù��ˣ������ں˶�ĳЩ��Դ�нϵ͵�����ֵ�������� postmaster ֮ǰ������������
+</p>
+<pre>
+	ulimit -d 262144
+	limit datasize 256m
+</pre>
+<p>
+	ȡ�������õ� shell����������ֻ��һ���ܳɹ���������������Ľ������ݶ�������ñȽϸߣ�
+	���Ҳ�����ò�ѯ��ɡ���������Ӧ���ڵ�ǰ���̣��Լ������������������к󴴽����ӽ��̡�
+	�������������SQL�ͻ���ʱ��Ϊ��̨������̫������ݶ��������⣬�������пͻ���֮ǰִ���������
+</p>
+
+<h4><a name="4.14"></a>4.14)����β���֪�������е� PostgreSQL �İ汾��</h4>
+<p>
+	�� psql ����� <code>SELECT version();</code>ָ�
+</p>
+
+<h4><a name="4.15"></a>4.15)����δ���һ��ȱʡֵ�ǵ�ǰʱ����ֶΣ�</h4>
+<p>
+	ʹ�� CURRENT_TIMESTAMP��
+</p>
+<pre>
+	CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
+</pre>
+
+
+<h4><a name="4.16"></a>4.16)���������� outer join �������ӣ���</h4>
+<p>
+	PostgreSQL ���ñ�׼�� SQL �﷨֧�������ӡ��������������ӣ�
+</p>
+<pre>
+	SELECT *
+	FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
+</pre>
+<p>����</p>
+<pre>
+	SELECT *
+	FROM t1 LEFT OUTER JOIN t2 USING (col);
+</pre>
+<p>
+	�������ȼ۵Ĳ�ѯ�� t1.col �� t2.col �������ӣ����ҷ��� t1 ������δ���ӵ��У���Щ�� t2 ��û��ƥ����У���
+	��[��]����(RIGHT OUTER JOIN)������ t2 ��δ���ӵ��С�
+	��ȫ�����ӣ�FULL OUTER JOIN�������� t1 �� t2 ��δ���ӵ��С�
+	�ؼ��� OUTER ����[��]���ӡ���[��]���Ӻ���ȫ[��]�������ǿ�ѡ�ģ���ͨ���ӱ���Ϊ�����ӣ�INNER JOIN����
+</p>
+
+
+<h4><a name="4.17"></a>4.17)���ʹ���漰������ݿ�Ĳ�ѯ��</h4>
+<p>
+	û�а취��ѯ��ǰ���ݿ�֮������ݿ⡣
+	��Ϊ PostgreSQL Ҫ���������ݿ���ص�ϵͳĿ¼��ϵͳ��������˿����ݿ�Ĳ�ѯ���ִ���ǲ����ġ�
+</p>
+<p>
+	������ֵģ��contrib/dblink�������ú�������ʵ�ֿ���ѯ����Ȼ�û�Ҳ����ͬʱ���ӵ���ͬ�����ݿ�ִ�в�ѯȻ���ڿͻ��˺ϲ������
+</p>
+
+<h4><a name="4.18"></a>4.18)����ú������ض��л���У�</h4>
+<p>
+	�ں����з������ݼ�¼���Ĺ����Ǻ�����ʹ�õģ�����μ���
+	<a href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</a>
+</p>
+
+<h4><a name="4.19"></a>4.19)Ϊʲô����ʹ��PL/PgSQL������ȡ��ʱ��ʱ���յ�������Ϣ��relation with OID ##### does not exist����</h4>
+<p>
+	PL/PgSQL�Ỻ�溯�������ݣ��ɴ˴�����һ�����õĸ���������һ�� PL/PgSQL
+    ����������һ����ʱ����Ȼ��ñ���ɾ�����ؽ��ˣ����ٴε��øú�����ʧ�ܣ�
+	��Ϊ����ĺ���������Ȼָ��ɵ���ʱ��������ķ������� PL/PgSQL ����<small>EXECUTE</small>
+    ����ʱ�����з��ʡ������ᱣ֤��ѯ��ִ��ǰ�ܻᱻ���½�����
+</p>
+
+<h4><a name="4.27"></a>4.27)Ŀǰ����Щ���ݸ��Ʒ������ã�</h4>
+<p>
+	�����ơ�ֻ��һ������кü��ָ��Ƽ�����ʹ�ã�ÿ�ֶ����ŵ��ȱ�㣺
+</p>
+<p>
+	��/�Ӹ��Ʒ�ʽ������һ�������������ܶ�/д�����룬������ӷ�����ֻ�ܽ��ܶ�/<small>SELECT</small>��ѯ�����룬
+	Ŀǰ������������ѵ���/�� PostgreSQL���Ʒ����� 
+	<a href="http://gborg.postgresql.org/project/slony1/projdisplay.php">Slony-I </a>��
+</p>
+<p>
+	������������ĸ��Ʒ�ʽ��������/д�����뷢�͸���̨�ļ���������ַ�ʽ������Ҫ�ڶ�̨������֮��ͬ�����ݱ䶯
+	���ܻ���������ص�������ʧ��<a href="http://pgfoundry.org/projects/pgcluster/">Pgcluster</a>��Ŀǰ���ַ���
+	����õģ����һ�����������ء�
+</p>
+<p>
+	Ҳ��һЩ��ҵ�踶�Ѻͻ���Ӳ�������ݸ��Ʒ�����֧���������ָ���ģ�͡�
+</p>
+
+
+
+</body>
+</html>
+
diff --git a/doc/src/FAQ/FAQ_czech.html b/doc/src/FAQ/FAQ_czech.html
index cb91c8e..c69f97e 100644
--- a/doc/src/FAQ/FAQ_czech.html
+++ b/doc/src/FAQ/FAQ_czech.html
@@ -129,7 +129,7 @@
  
    <H2 align="center">Obecn� ot�zky</H2>
 
-   <H4><A name="1.1">1.1</A>) Co je PostgreSQL? Jak se vyslovuje?</H2>
+   <H4><A name="1.1">1.1</A>) Co je PostgreSQL? Jak se vyslovuje?</H4>
 
    <P>PostgreSQL se vyslovuje <I>Post-Gres-Q-L</I>. Zvukov� z�znam je 
    dostupn� na adrese <A href="http://www.postgresql.org/postgresql.mp3"></A>.</P>
@@ -206,18 +206,18 @@
    Win32 knihovny <I>libpq</I> a <I>psql</I>. K datab�zi PostgerSQL lze p�istupovat skrze
    rozhran� <SMALL>ODBC</SMALL>.</P>
 
-   <P><STRONG>Server</STRONG><P>
+   <P><STRONG>Server</STRONG></P>
 
    <P>Server m��e b�t na WindowsNT a Win2k provozov�n pouze s knihovnou
    Cygwin, Cygnus Unix/NT porting library. V�ce <I>pgsql/doc/FAQ_MSWIN</I> v
    distribuci nebo MS Windows FAQ na adrese
-   <A href="http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN">http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN</A>.
+   <A href="http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN">http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN</A>.</P>
 
    <P>Na nativn�m portu pro MS Win NT/2000/XP se pracuje. Dal�� informace
    o aktu�ln�m stavu PostgreSQL pro Windows naleznet na adrese
    <A href="http://techdocs.postgresql.org/guides/Windows">http://techdocs.postgresql.org/guides/Windows</A> a
    <A href="http://momjian.postgresql.org/main/writings/pgsql/win32.html">
-   http://momjian.postgresql.org/main/writings/pgsql/win32.html</A>.
+   http://momjian.postgresql.org/main/writings/pgsql/win32.html</A>.</P>
 
    <P>Existuj�c� port pro Novell Netware 6 naleznete na
    <A href="http://forge.novell.com">http://forge.novell.com</A>.</P>
@@ -238,7 +238,7 @@
     subscribe
     end
 </PRE>
-   na adresu <A href="mailto:pgsql-general-request@PostgreSQL.org">
+<P>na adresu <A href="mailto:pgsql-general-request@PostgreSQL.org">
    pgsql-general-request@PostgreSQL.org</A>.</P>
 
    <P>M��ete si vy��dat denn� p�ehled (diggest), kter� m� zhruba 30K denn�
@@ -254,7 +254,7 @@
 
    <P>Seznam dal��ch konferenc� naleznete na str�nk�ch PostgreSQL:</P>
    <BLOCKQUOTE>
-   <A href="http://www.postgresql.org">http://www.postgresql.org</A>
+   <P><A href="http://www.postgresql.org">http://www.postgresql.org</A></P>
    </BLOCKQUOTE>
    <H4><A name="1.7">1.7</A>) Jak� je posledn� verze?</H4>
 
@@ -283,7 +283,7 @@
    <H4><A name="1.9">1.9</A>) Kde najdu seznam zn�m�ch chyb nebo nepodporovan�ch vlastnost�?</H4>
 
    <P>PostgreSQL podporuje roz���enou podmno�inu <SMALL>SQL-92</SMALL>. V na�em 
-   <A href="http://developer.PostgreSQL.org/todo.php">TODO</A>
+   <A href="http://www.postgresql.org/docs/faqs.TODO.html">TODO</A>
    najdete seznam zn�m�ch chyb, chyb�j�c�ch vlastnost� a seznam vlastnost�,
    kter� budou do syst�mu implementov�ny v budoucnu (v�etn� priorit).</P>
 
@@ -315,7 +315,7 @@
 
    <P>Nejd��ve si st�hn�te nejnov�j�� zdroje a p�e�t�te si v�voj��skou
    dokumentaci na na�em webu nebo v distribuci. Pak se p�ihla�te do
-   konferenc� <I>pgsql-hackers</I> a <P>pgsql-patches</I>. Kvalitn� z�platy pos�lejte do
+   konferenc� <I>pgsql-hackers</I> a <I>pgsql-patches</I>. Kvalitn� z�platy pos�lejte do
    pgsql-patches.</P>
 
    <P>Pr�vo commit m� v <SMALL>CVS</SMALL> archivu asi t�in�cti lid�. Ka�d� z nich poslal
@@ -341,7 +341,7 @@
 	<SMALL>DBMS</SMALL>, nap�. transakce, vno�en� dotazy, spou�t�, pohledy, kontrolu 
 	referen�n� integrity a sofistikovan� zamyk�n�. Podporuje n�kter� 
 	vlastnosti, kter� tyto syst�my nemaj�, u�ivatelem definovan� typy, 
-	d�di�nost, pravidla, MVCC redukuj�c� zamyk�n�.</BR></BR></DD>
+	d�di�nost, pravidla, MVCC redukuj�c� zamyk�n�.<BR><BR></DD>
 
    <DT><B>V�kon</B></DT>
 	<DD>V�konnostn� je na tom PostgreSQL podobn� jako dal�� komer�n� ale 
@@ -363,7 +363,7 @@
 	k�d s minimem chyb. Ka�d� verze je v�ce ne� m�s�c v beta testov�n�, 
 	a na�e historie verz� ukazuje, �e m��eme nab�dnout stabiln�, solidn� 
 	verze, kter� jsou p�ipraveny pro re�ln� nasazen�. V t�to oblasti 
-	jsme srovnateln� s dal��mi datab�zemi.</BR></BR></DD>
+	jsme srovnateln� s dal��mi datab�zemi.<BR><BR></DD>
 
    <DT><B>Podpora</B></DT>
 	<DD>Na na�� mailov� konferenci m��ete kontaktovat velkou skupinu 
@@ -375,7 +375,7 @@
 	kte�� vy�aduj� podporu ke konkr�tn�m p��pad�m, existuje placen� 
 	podpora (<A href="#1.6">FAQ sekce 1.6</A>).<BR><BR></DD>
 
-   <DT><B>Cena</B><DT>
+   <DT><B>Cena</B></DT>
 	<DD>PosgreSQL lze voln� pou��vat pro nekomer�n� i komer�n� pou�it�. 
 	M��ete do sv�ch produkt� p�idat n� k�d bez omezen�, respektive 
 	v souladu s podm�nkami na�� licen�n� smlouvy (v duchu BSD licence).<BR>
@@ -553,7 +553,7 @@
    nap��klad:</P>
 <PRE>
     cd /usr/local/pgsql
-    ./bin/postmaster > server.log 2>&1 &
+    ./bin/postmaster > server.log 2>&amp;1 &amp;
 </PRE>
    <P>T�m se vytvo�� log v adres��i PostgreSQL, Tento soubor obsahuje u�ite�n�
    informace o probl�mech a chyb�ch vyskytl�ch se na serveru. Postmaster m�
@@ -773,7 +773,7 @@
 
    <P>Jinak je tomu v p��pad� pou�it� <SMALL>LIMIT</SMALL> a <SMALL>ORDER BY</SMALL>, p�i kter�m se v�t�inou
    index pou�ije, v�sledkem je pouze mal� ��st tabulky. Funkce MAX() a
-   MIN() nepou��vaj� indexy, ale je mo�n� tut� hodnotu z�skat:
+   MIN() nepou��vaj� indexy, ale je mo�n� tut� hodnotu z�skat:</P>
 <PRE>
     SELECT col 
     FROM tab
@@ -791,7 +791,7 @@
       <UL>
         <LI>vzor <SMALL>LIKE</SMALL> nesm� za��nat <I>%</I></LI>
         <LI><I>~</I> regul�rn� v�raz mus� za��nat <I>^</I></LI>
-      </UL>
+      </UL></LI>
     <LI>vzor nesm� za��nat intervalem, nap�. [a-e]</LI>
     <LI>vyhled�van�, kter� nen� Case sensitiv jako je <SMALL>ILIKE</SMALL> nebo <I>~*</I> 
       nepou��v� indexy. M��ete ale pou��t funkcion�ln� indexy, kter� jsou 
@@ -926,7 +926,7 @@ BYTEA       bytea               pole byt
    <P>Kone�n� m��ete pou��t <SMALL>OID</SMALL> hodnotu vr�cenou p��kazem <SMALL>INSERT</SMALL>, ale to je
    pravd�podobn� nejm�n� p�enositeln� �e�en�. V Perlu p�i pou�it� DBI
    modulu Edmunda Mergleho DBD:Pg oid hodnotu z�sk�me <I>$sth->{pg_oid_status}</I>
-   po ka�d�m <I>$sth->execute()</I>.
+   po ka�d�m <I>$sth->execute()</I>.</P>
 
    <H4><A name="4.15.3">4.15.3</A>) Nepovede <I>currval()</I> a <I>nextval()</I> k rozhozen� 
      podm�nek p�i soub�hu s jin�mi u�ivateli?</H4>
@@ -986,7 +986,7 @@ BYTEA       bytea               pole byt
       <LI> p�id�n�, vkl�d�n� (append, insert)</LI>
       <LI> OID, serial value (OID, serial value)</LI>
       <LI> portal, kurzor (portal, cursor)</LI>
-      <LI> range variable, jm�no tabulky, alias tabulky (range</LI>
+      <LI> range variable, jm�no tabulky, alias tabulky (range
         variable, table name, table alias)</LI>
    </UL>
 
@@ -1038,13 +1038,13 @@ CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
    <P>D��v�j�� verze (p�ed 7.4) spojovali vno�en� dotazy k vn�j��m sekven�n�m
    �ten�m v�sledku poddotazu pro ka�d� ��dek vn�j��ho dotazu. Pokud poddotaz
    vr�til n�kolik m�lo ��dk� <SMALL>IN</SMALL> bylo rychl�. Pro ostatn� p��pady je vhodn�
-   nahradit <SMALL>IN</SMALL> <SMALL>EXISTS</SMALL>:
+   nahradit <SMALL>IN</SMALL> <SMALL>EXISTS</SMALL>:</P>
 <PRE>
     SELECT * 
     FROM tab
     WHERE col IN (SELECT subcol FROM subtab);
 </PRE>
-  na:
+<p>na:</p>
 <PRE>
    SELECT * 
    FROM tab
@@ -1101,7 +1101,7 @@ CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
 
    <P>V PostgreSQL 7.3 m��ete jednodu�e vracet v�ce ��dk� nebo sloupc� z
    funkce, viz:
-   <A href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</A>.
+   <A href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</A>.</P>
 
    <H4><A name="4.26">4.26</A>) Pro� nelze spolehliv� vytv��et a ru�it do�asn� tabulky v PL/pgSQL funkc�ch?</H4>
 
@@ -1164,4 +1164,4 @@ CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
    p�ep�na� <I>--enable-depend</I> p��kazu <I>configure</I> k automatick�mu �e�en�
    z�vislost� p�eklada�em.</P>
  </BODY>
-</HTML>
\ No newline at end of file
+</HTML>
diff --git a/doc/src/FAQ/FAQ_farsi.html b/doc/src/FAQ/FAQ_farsi.html
index 71f6f40..b304095 100644
--- a/doc/src/FAQ/FAQ_farsi.html
+++ b/doc/src/FAQ/FAQ_farsi.html
@@ -1,388 +1,394 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!-- saved from url=(0122) -->
-<HTML dir="ltr"><HEAD><TITLE>PostgreSQL FAQ</TITLE>
+<HTML dir="rtl"><HEAD><TITLE>PostgreSQL FAQ</TITLE>
 <META content="Microsoft FrontPage 6.0" name=GENERATOR>
-<META http-equiv=Content-Type content="text/html; charset=windows-1252"></HEAD>
-<BODY text=#000000 vLink=#a00000 aLink=#0000ff link=#ff0000 bgColor=#ffffff>
-<h1 dir="rtl"><span lang="fa"><font face="Tahoma">&#1587;&#1608;&#1575;&#1604;&#1575;&#1578;&#1610; &#1603;&#1607; &#1575;&#1594;&#1604;&#1576; &#1583;&#1585; &#1605;&#1608;&#1585;&#1583; </font>
-</span><font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma">&#8204; 
-&#1662;&#1585;&#1587;&#1610;&#1583;&#1607; &#1605;&#1610; &#1588;&#1608;&#1606;&#1583;</font></span></h1>
-<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1578;&#1575;&#1585;&#1610;&#1582; &#1570;&#1582;&#1585;&#1610;&#1606; &#1575;&#1589;&#1604;&#1575;&#1581; &#1575;&#1610;&#1606; &#1601;&#1575;&#1610;&#1604;: 
-28 &#1588;&#1607;&#1585;&#1740;&#1608;&#1585; 1383 &#1607;&#1580;&#1585;&#1740; &#1588;&#1605;&#1587;&#1740;</span></font></p>
-<P dir="rtl"><span lang="fa"><font face="Tahoma">&#1606;&#1711;&#1607;&#1583;&#1575;&#1585;&#1606;&#1583;&#1607; &#1575;&#1589;&#1604;&#1610; &#1601;&#1575;&#1610;&#1604; (&#1586;&#1576;&#1575;&#1606; 
-&#1575;&#1606;&#1711;&#1604;&#1610;&#1587;&#1610;)&#1583;&#1585; &#1581;&#1575;&#1604; &#1581;&#1575;&#1590;&#1585; </font></span><font face="Tahoma">: Bruce Momjian
+<META http-equiv=Content-Type content="text/html; charset=utf-8"></HEAD>
+<BODY text=#000000 vLink=#A00000 aLink=#0000FF link=#FF0000 bgColor=#ffffff>
+<h1 dir="rtl"><font face="Tahoma"><span lang="fa">سوالاتي كه اغلب در مورد
+</span> </font>
+<font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma">‌ 
+پرسيده مي شوند</font></span></h1>
+<p dir="rtl"><font face="Tahoma"><span lang="fa">تاريخ آخرين اصلاح اين فايل: 28 
+شهریور 1383 هجری شمسی</span></font></p>
+<P dir="rtl"><span lang="fa"><font face="Tahoma">نگهدارنده اصلي فايل (زبان 
+انگليسي)در حال حاضر </font></span><font face="Tahoma">: Bruce Momjian
 <A 
 href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A></font></P>
-<P dir="rtl"><span lang="fa"><font face="Tahoma">&#1606;&#1711;&#1607;&#1583;&#1575;&#1585;&#1606;&#1583;&#1607; &#1601;&#1575;&#1610;&#1604; &#1576;&#1607; &#1586;&#1576;&#1575;&#1606; &#1601;&#1575;&#1585;&#1587;&#1610;:
+<P dir="rtl"><span lang="fa"><font face="Tahoma">نگهدارنده فايل به زبان فارسي:
 </font></span><font face="Tahoma"><a href="mailto:m.taghizadeh@imenafzar.net">
-m.taghizadeh@imenafzar.net</a> </font><span lang="fa"><font face="Tahoma">&nbsp;&#1605;&#1581;&#1605;&#1608;&#1583; 
-&#1578;&#1602;&#1610;&#8204;&#1586;&#1575;&#1583;&#1607; &#1605;&#1607;&#1585;&#1580;&#1585;&#1583;&#1740;</font></span><font face="Tahoma"><BR></font></P>
-<P dir="rtl"><span lang="fa"><font face="Tahoma">&#1570;&#1582;&#1585;&#1610;&#1606; &#1606;&#1587;&#1582;&#1607; &#1575;&#1610;&#1606; &#1601;&#1575;&#1610;&#1604; &#1585;&#1575; 
-&#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1610;&#1583; &#1575;&#1586; &#1575;&#1610;&#1606; &#1570;&#1583;&#1585;&#1587; &#1576;&#1711;&#1610;&#1585;&#1610;&#1583; </font></span><font face="Tahoma">&nbsp;<A 
+m.taghizadeh@imenafzar.net</a> </font><span lang="fa"><font face="Tahoma">&nbsp;محمود 
+تقي‌زاده مهرجردی</font></span><font face="Tahoma"><BR></font></P>
+<P dir="rtl"><span lang="fa"><font face="Tahoma">آخرين نسخه اين فايل را 
+مي‌توانيد از اين آدرس بگيريد </font></span><font face="Tahoma">&nbsp;<A 
 href="http://www.postgresql.org/docs/faqs/FAQ.html">http://www.PostgreSQL.org/docs/faqs/FAQ.html</A></font></P>
-<P dir="rtl"><span lang="fa"><font face="Tahoma">&#1587;&#1608;&#1575;&#1604;&#1575;&#1578;&#1610; &#1603;&#1607; &#1583;&#1585; &#1605;&#1608;&#1585;&#1583; &#1610;&#1603; 
-&#1587;&#1705;&#1608;&#1740;(&#1662;&#1604;&#1578;&#1601;&#1585;&#1605;) 
-&#1582;&#1575;&#1589; &#1575;&#1587;&#1578; &#1583;&#1585; &#1575;&#1610;&#1606; &#1570;&#1583;&#1585;&#1587; &#1580;&#1608;&#1575;&#1576; &#1583;&#1575;&#1583;&#1607; &#1588;&#1583;&#1607; &#1575;&#1606;&#1583; </font></span><font face="Tahoma">&nbsp;<A 
+<P dir="rtl"><span lang="fa"><font face="Tahoma">سوالاتي كه در مورد يك 
+سکوی(پلتفرم) خاص است در اين آدرس جواب داده شده اند </font></span><font face="Tahoma">
+&nbsp;<A 
 href="http://www.postgresql.org/docs/index.html">http://www.PostgreSQL.org/docs/index.html</A></font></P>
 <HR dir="rtl">
 
-<H2 align=center dir="rtl"><font face="Tahoma"><span lang="fa">&#1587;&#1608;&#1575;&#1604;&#1575;&#1578; &#1593;&#1605;&#1608;&#1605;&#1610;</span></font></H2>
-<p dir="rtl"><font face="Tahoma"><a href="#1.1">1.1</a>) 
-PostgreSQL</font><span lang="fa"><font face="Tahoma"> &#1670;&#1610;&#1587;&#1578; &#1608; &#1670;&#1711;&#1608;&#1606;&#1607; &#1576;&#1575;&#1610;&#1583; &#1570;&#1606; &#1585;&#1575; 
-&#1578;&#1604;&#1601;&#1592; &#1603;&#1585;&#1583;&#1567;</font></span><font face="Tahoma"><BR><A 
+<H2 align=center dir="rtl"><font face="Tahoma"><span lang="fa">سوالات عمومي</span></font></H2>
+<p dir="rtl"><font face="Tahoma"><a href="#1.1">1.1</a>) PostgreSQL</font><span lang="fa"><font face="Tahoma"> 
+چيست و چگونه بايد آن را تلفظ كرد؟</font></span><font face="Tahoma"><BR><A 
 href="#1.2">1.2</A>)
-<span lang="fa">&#1602;&#1575;&#1606;&#1608;&#1606; &#1603;&#1662;&#1610; &#1585;&#1575;&#1610;&#1578;&#8204; (&#1581;&#1602;&#1608;&#1602; &#1605;&#1593;&#1606;&#1608;&#1610;) &#1583;&#1585; &#1605;&#1608;&#1585;&#1583; </span>PostgreSQL
-<span lang="fa">&nbsp;&#1576;&#1607; &#1670;&#1607; &#1589;&#1608;&#1585;&#1578; &#1575;&#1587;&#1578;&#1567;</span><BR><A 
+<span lang="fa">قانون كپي رايت‌ (حقوق معنوي) در مورد </span>PostgreSQL
+<span lang="fa">&nbsp;به چه صورت است؟</span><BR><A 
 href="#1.3">1.3</A>)<span lang="fa">
-</span>PostgreSQL</font><span lang="fa"><font face="Tahoma">&#8204; &#1585;&#1608;&#1610; &#1670;&#1607; &#1606;&#1608;&#1593; 
-&#1610;&#1608;&#1606;&#1610;&#1603;&#1587;&#1607;&#1575;&#1610;&#1610; &#1575;&#1580;&#1585;&#1575; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583;&#1567;</font></span><font face="Tahoma"><BR><A 
+</span>PostgreSQL</font><span lang="fa"><font face="Tahoma">‌ روي چه نوع 
+يونيكسهايي اجرا مي‌شود؟</font></span><font face="Tahoma"><BR><A 
 href="#1.4">1.4</A>)
-</font><span lang="fa"><font face="Tahoma">&#1585;&#1608;&#1610; &#1670;&#1607; &#1605;&#1581;&#1610;&#1591;&#1607;&#1575;&#1610; &#1594;&#1610;&#1585; &#1610;&#1608;&#1606;&#1610;&#1603;&#1587;&#1610; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606; &#1570;&#1606; 
-&#1585;&#1575; &#1575;&#1580;&#1585;&#1575; &#1603;&#1585;&#1583;&#1567;</font></span><font face="Tahoma"><BR><A 
+</font><span lang="fa"><font face="Tahoma">روي چه محيطهاي غير يونيكسي مي‌توان آن 
+را اجرا كرد؟</font></span><font face="Tahoma"><BR><A 
 href="#1.5">1.5</A>) PostgreSQL</font><span lang="fa"><font face="Tahoma"> 
-&#1585;&#1575; &#1575;&#1586; &#1603;&#1580;&#1575; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1576;&#1711;&#1610;&#1585;&#1605;&#1567;</font></span><font face="Tahoma"><BR><A 
+را از كجا مي‌توانم بگيرم؟</font></span><font face="Tahoma"><BR><A 
 href="#1.6">1.6</A>) 
-</font><span lang="fa"><font face="Tahoma">&#1575;&#1586; &#1603;&#1580;&#1575; &#1582;&#1583;&#1605;&#1575;&#1578; &#1662;&#1588;&#1578;&#1610;&#1576;&#1575;&#1606;&#1610; &#1576;&#1711;&#1610;&#1585;&#1605;&#1567;</font></span><font face="Tahoma"><BR><A 
+</font><span lang="fa"><font face="Tahoma">از كجا خدمات پشتيباني بگيرم؟</font></span><font face="Tahoma"><BR><A 
 href="#1.7">1.7</A>)</font><span lang="fa"><font face="Tahoma"> 
-&#1570;&#1582;&#1585;&#1610;&#1606; &#1606;&#1587;&#1582;&#1607; &#1575;&#1593;&#1604;&#1575;&#1605; &#1588;&#1583;&#1607; &#1670;&#1610;&#1587;&#1578;&#1567;</font></span><font face="Tahoma"><BR><A 
+آخرين نسخه اعلام شده چيست؟</font></span><font face="Tahoma"><BR><A 
 href="#1.8">1.8</A>) 
-</font><span lang="fa"><font face="Tahoma">&#1670;&#1607; &#1605;&#1587;&#1578;&#1606;&#1583;&#1575;&#1578; &#1608; &#1585;&#1575;&#1607;&#1606;&#1605;&#1575;&#1574;&#1610;&#1607;&#1575;&#1610;&#1610; &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1606;&#1583;&#1567;</font></span><font face="Tahoma"><BR><A 
+</font><span lang="fa"><font face="Tahoma">چه مستندات و راهنمائيهايي وجود دارند؟</font></span><font face="Tahoma"><BR><A 
 href="#1.9">1.9</A>) 
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1575;&#1586;&#1575;&#1588;&#1603;&#1575;&#1604;&#1575;&#1578; &#1588;&#1606;&#1575;&#1582;&#1578;&#1607; &#1588;&#1583;&#1607; &#1608; &#1610;&#1575; &#1575;&#1605;&#1603;&#1575;&#1606;&#1575;&#1578;&#1610; &#1603;&#1607; &#1583;&#1585; &#1575;&#1610;&#1606; 
-&#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1608;&#1580;&#1608;&#1583; &#1606;&#1583;&#1575;&#1585;&#1583;&nbsp; &#1605;&#1591;&#1604;&#1593; &#1588;&#1608;&#1605;&#1567;</span><BR><A 
+<span lang="fa">چگونه مي‌توانم ازاشكالات شناخته شده و يا امكاناتي كه در اين 
+پايگاه داده وجود ندارد&nbsp; مطلع شوم؟</span><BR><A 
 href="#1.10">1.10</A>)
-</font><span lang="fa"><font face="Tahoma">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1586;&#1576;&#1575;&#1606; </font></span>
-<font face="Tahoma">SQL</font><span lang="fa"><font face="Tahoma"> &#1585;&#1575; &#1610;&#1575;&#1583; &#1576;&#1711;&#1610;&#1585;&#1605;&#1567;</font></span><font face="Tahoma"><BR><A 
+</font><span lang="fa"><font face="Tahoma">چگونه مي‌توانم زبان </font></span>
+<font face="Tahoma">SQL</font><span lang="fa"><font face="Tahoma"> را ياد بگيرم؟</font></span><font face="Tahoma"><BR><A 
 href="#1.11">1.11</A>)</font><span lang="fa"><font face="Tahoma"> 
-&#1570;&#1610;&#1575; </font></span><font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma"> 
-&#1605;&#1588;&#1603;&#1604; </font></span><font face="Tahoma">Y2K</font><span lang="fa"><font face="Tahoma">&#8204; 
-&#1583;&#1575;&#1585;&#1583; &#1610;&#1575; &#1582;&#1610;&#1585;&#1567;</font></span><font face="Tahoma"><BR><A 
+آيا </font></span><font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma"> 
+مشكل </font></span><font face="Tahoma">Y2K</font><span lang="fa"><font face="Tahoma">‌ 
+دارد يا خير؟</font></span><font face="Tahoma"><BR><A 
 href="#1.12">1.12</A>) 
-</font><span lang="fa"><font face="Tahoma">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1576;&#1607; &#1578;&#1610;&#1605; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; &#1606;&#1608;&#1610;&#1587;
+</font><span lang="fa"><font face="Tahoma">چگونه مي‌توانم به تيم برنامه نويس
 </font></span><font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma"> 
-&#1605;&#1604;&#1581;&#1602; &#1588;&#1608;&#1605;&#1567;</font></span><font face="Tahoma"><BR><A 
+ملحق شوم؟</font></span><font face="Tahoma"><BR><A 
 href="#1.13">1.13</A>) 
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1610;&#1603; &#1575;&#1588;&#1603;&#1575;&#1604; &#1585;&#1575; &#1576;&#1607; &#1711;&#1585;&#1608;&#1607; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; &#1606;&#1608;&#1610;&#1587; &#1575;&#1593;&#1604;&#1575;&#1605; &#1603;&#1606;&#1605;&#1567;</span><BR><A 
+<span lang="fa">چگونه مي‌توانم يك اشكال را به گروه برنامه نويس اعلام كنم؟</span><BR><A 
 href="#1.14">1.14</A>)
-</font><span lang="fa"><font face="Tahoma">&nbsp;&#1608;&#1590;&#1593;&#1610;&#1578; </font></span>
-<font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma">&#8204; &#1583;&#1585; 
-&#1605;&#1602;&#1575;&#1610;&#1587;&#1607; &#1576;&#1575; &#1587;&#1575;&#1610;&#1585; </font></span><font face="Tahoma">DBMS<span lang="fa">&#1607;&#1575; &#1576;&#1607; &#1670;&#1607; 
-&#1589;&#1608;&#1585;&#1578; &#1575;&#1587;&#1578;&#1567;</span><BR><A 
+</font><span lang="fa"><font face="Tahoma">&nbsp;وضعيت </font></span>
+<font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma">‌ در 
+مقايسه با ساير </font></span><font face="Tahoma">DBMS<span lang="fa">ها به چه 
+صورت است؟</span><BR><A 
 href="#1.15">1.15</A>)
-<span lang="fa">&#1605;&#1606; &#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1575;&#1586; &#1606;&#1592;&#1585; &#1605;&#1575;&#1604;&#1610; &#1576;&#1607; </span>PostgreSQL<span lang="fa"> 
-&#1603;&#1605;&#1603; &#1603;&#1606;&#1605;&#1567;</span><BR>
+<span lang="fa">من چگونه مي‌توانم از نظر مالي به </span>PostgreSQL<span lang="fa"> 
+كمك كنم؟</span><BR>
 </font></p>
-<h2 align="center" dir="rtl"><font face="Tahoma"><span lang="fa">&#1587;&#1608;&#1575;&#1604;&#1575;&#1578; &#1605;&#1585;&#1576;&#1608;&#1591; &#1576;&#1607; 
-&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607;</span></font></h2>
+<h2 align="center" dir="rtl"><font face="Tahoma"><span lang="fa">سوالات مربوط به 
+استفاده از پايگاه داده</span></font></h2>
 <p dir="rtl"><font face="Tahoma"><A 
 href="#2.1">2.1</A>)
-<span lang="fa">&#1570;&#1610;&#1575; &#1607;&#1610;&#1670; &#1583;&#1585;&#1575;&#1610;&#1608;&#1585; </span>ODBC</font><span lang="fa"><font face="Tahoma">&#8204; 
-&#1576;&#1585;&#1575;&#1610; </font></span><font face="Tahoma">PostgreSQL</font><font face="Tahoma"><span lang="fa"> 
-&#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;&#1567;</span><BR><A 
+<span lang="fa">آيا هيچ درايور </span>ODBC</font><span lang="fa"><font face="Tahoma">‌ 
+براي </font></span><font face="Tahoma">PostgreSQL</font><font face="Tahoma"><span lang="fa"> 
+وجود دارد؟</span><BR><A 
 href="#2.2">2.2</A>)
-<span lang="fa">&#1670;&#1607; &#1575;&#1576;&#1586;&#1575;&#1585;&#1607;&#1575;&#1610;&#1610; &#1576;&#1585;&#1575;&#1610; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; </span>PostgreSQL<span lang="fa">&#8204; 
-&#1576;&#1575; &#1589;&#1601;&#1581;&#1575;&#1578; &#1608;&#1576; &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;&#1567;</span><BR><A 
+<span lang="fa">چه ابزارهايي براي استفاده از </span>PostgreSQL<span lang="fa">‌ 
+با صفحات وب وجود دارد؟</span><BR><A 
 href="#2.3">2.3</A>)
-<span lang="fa">&#1570;&#1610;&#1575; </span>PostgreSQL<span lang="fa">&#8204; &#1610;&#1603; &#1608;&#1575;&#1587;&#1591; &#1603;&#1575;&#1585;&#1576;&#1585;&#1610; &#1711;&#1585;&#1575;&#1601;&#1610;&#1603;&#1610; 
-&#1583;&#1575;&#1585;&#1583;&#1567;</span><BR><A 
+<span lang="fa">آيا </span>PostgreSQL<span lang="fa">‌ يك واسط كاربري گرافيكي 
+دارد؟</span><BR><A 
 href="#2.4">2.4</A>)
-<span lang="fa">&#1576;&#1575; &#1670;&#1607; &#1586;&#1576;&#1575;&#1606;&#1607;&#1575;&#1610; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607;&#8204;&#1606;&#1608;&#1610;&#1587;&#1610; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606; &#1576;&#1575; </span>PostgreSQL<span lang="fa">&#8204; 
-&#1575;&#1585;&#1578;&#1576;&#1575;&#1591; &#1576;&#1585;&#1602;&#1585;&#1575;&#1585; &#1603;&#1585;&#1583;&#1567;</span><BR>
+<span lang="fa">با چه زبانهاي برنامه‌نويسي مي‌توان با </span>PostgreSQL<span lang="fa">‌ 
+ارتباط برقرار كرد؟</span><BR>
 </font></p>
-<h2 align="center" dir="rtl"><span lang="fa"><font face="Tahoma">&#1587;&#1608;&#1575;&#1604;&#1575;&#1578; &#1605;&#1585;&#1576;&#1608;&#1591; &#1576;&#1607; 
-&#1585;&#1575;&#1607;&#1576;&#1585;&#1610;</font></span></h2>
+<h2 align="center" dir="rtl"><span lang="fa"><font face="Tahoma">سوالات مربوط به 
+راهبري</font></span></h2>
 <p dir="rtl"><font face="Tahoma"><A 
 href="#3.1">3.1</A>)
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; </span>PostgreSQL<span lang="fa">&#8204; &#1585;&#1575; &#1583;&#1585; &#1588;&#1575;&#1582;&#1607;&#8204;&#1575;&#1610; 
-&#1594;&#1610;&#1585; &#1575;&#1586; </span>/usr/local/pgsql/<span lang="fa">&nbsp; &#1606;&#1589;&#1576; &#1603;&#1606;&#1605;&#1567;</span><BR><A 
+<span lang="fa">چگونه مي‌توانم </span>PostgreSQL<span lang="fa">‌ را در شاخه‌اي 
+غير از </span>/usr/local/pgsql/<span lang="fa">&nbsp; نصب كنم؟</span><BR><A 
 href="#3.2">3.2</A>)
-<span lang="fa">&#1670;&#1585;&#1575; &#1605;&#1608;&#1602;&#1593;&#1610; &#1603;&#1607; &#1605;&#1606; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; </span>postmaster<span lang="fa">&#8204; &#1585;&#1575; 
-&#1575;&#1580;&#1585;&#1575; &#1605;&#1610; &#1603;&#1606;&#1605; &#1662;&#1610;&#1575;&#1605; </span>Bad system call<span lang="fa">&#8204; &#1608; &#1610;&#1575; </span>core dump
-<span lang="fa">&#8204;&#1605;&#1610;&#8204;&#1711;&#1610;&#1585;&#1605;&#1567;</span><BR><A 
+<span lang="fa">چرا موقعي كه من برنامه </span>postmaster<span lang="fa">‌ را 
+اجرا مي كنم پيام </span>Bad system call<span lang="fa">‌ و يا </span>core dump
+<span lang="fa">‌مي‌گيرم؟</span><BR><A 
 href="#3.3">3.3</A>)
-<span lang="fa">&#1670;&#1585;&#1575; &#1605;&#1608;&#1602;&#1593;&#1610; &#1603;&#1607; &#1605;&#1606; &#1587;&#1593;&#1610; &#1605;&#1610;&#8204;&#1603;&#1606;&#1605; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; </span>postmaster<span lang="fa">&#8204; 
-&#1585;&#1575; &#1575;&#1580;&#1585;&#1575; &#1603;&#1606;&#1605; &#1582;&#1591;&#1575;&#1610;</span> <I>IpcMemoryCreate</I>&nbsp; <span lang="fa">&#1605;&#1610;&#8204;&#1711;&#1610;&#1585;&#1605;&#1567;</span><BR><A 
+<span lang="fa">چرا موقعي كه من سعي مي‌كنم برنامه </span>postmaster<span lang="fa">‌ 
+را اجرا كنم خطاي</span> <I>IpcMemoryCreate</I>&nbsp; <span lang="fa">مي‌گيرم؟</span><BR><A 
 href="#3.4">3.4</A>)<I><span lang="fa">
-</span></I><span lang="fa">&#1670;&#1585;&#1575; &#1605;&#1608;&#1602;&#1593;&#1610; &#1603;&#1607; &#1605;&#1606; &#1587;&#1593;&#1610; &#1605;&#1610;&#8204;&#1603;&#1606;&#1605; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; </span>postmaster<span lang="fa">&#8204; 
-&#1585;&#1575; &#1575;&#1580;&#1585;&#1575; &#1603;&#1606;&#1605; &#1582;&#1591;&#1575;&#1610;</span> <I><span lang="fa">&nbsp;</span>IpcSemaphoreCreate<span lang="fa">
-</span></I><span lang="fa">&#1605;&#1610;&#8204;&#1711;&#1610;&#1585;&#1605;&#1567;</span><BR><A 
+</span></I><span lang="fa">چرا موقعي كه من سعي مي‌كنم برنامه </span>postmaster<span lang="fa">‌ 
+را اجرا كنم خطاي</span> <I><span lang="fa">&nbsp;</span>IpcSemaphoreCreate<span lang="fa">
+</span></I><span lang="fa">مي‌گيرم؟</span><BR><A 
 href="#3.5">3.5</A>) 
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1575;&#1578;&#1589;&#1575;&#1604;&#1575;&#1578; &#1587;&#1575;&#1610;&#1585; &#1605;&#1575;&#1588;&#1610;&#1606;&#1607;&#1575; &#1585;&#1575; &#1603;&#1606;&#1578;&#1585;&#1604; &#1603;&#1606;&#1605;&#1567;</span><BR><A 
+<span lang="fa">چگونه مي‌توانم اتصالات ساير ماشينها را كنترل كنم؟</span><BR><A 
 href="#3.6">3.6</A>) 
-<span lang="fa">&#1576;&#1585;&#1575;&#1610; &#1603;&#1575;&#1585;&#1575;&#1610;&#1610; &#1576;&#1575;&#1604;&#1575;&#1578;&#1585; &#1608; &#1576;&#1607;&#1578;&#1585; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1605;&#1606; &#1670;&#1607; &#1578;&#1606;&#1592;&#1610;&#1605;&#1575;&#1578;&#1610; &#1585;&#1575; &#1576;&#1575;&#1610;&#1583; 
-&#1575;&#1606;&#1580;&#1575;&#1605; &#1583;&#1607;&#1605;&#1567;</span><BR><A 
+<span lang="fa">براي كارايي بالاتر و بهتر پايگاه داده من چه تنظيماتي را بايد 
+انجام دهم؟</span><BR><A 
 href="#3.7">3.7</A>) 
-<span lang="fa">&#1670;&#1607; &#1575;&#1605;&#1603;&#1575;&#1606;&#1575;&#1578;&#1610; &#1576;&#1585;&#1575;&#1610; &#1662;&#1610;&#1583;&#1575; &#1603;&#1585;&#1583;&#1606; &#1575;&#1588;&#1603;&#1575;&#1604;&#8204; &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;&#1567;</span><BR><A 
+<span lang="fa">چه امكاناتي براي پيدا كردن اشكال‌ وجود دارد؟</span><BR><A 
 href="#3.8">3.8</A>)
-<span lang="fa">&#1670;&#1585;&#1575; &#1605;&#1608;&#1602;&#1593;&#1610; &#1603;&#1607; &#1605;&#1606; &#1605;&#1610;&#8204;&#1582;&#1608;&#1575;&#1607;&#1605; &#1576;&#1607; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1608;&#1589;&#1604; &#1588;&#1608;&#1605; &#1662;&#1610;&#1575;&#1605;</span> <I>"Sorry, too many clients&quot;
-<span lang="fa">&#8204;</span></I><span lang="fa">&#1605;&#1610;&#8204;&#1711;&#1610;&#1585;&#1605;&#1567;</span><BR><A 
+<span lang="fa">چرا موقعي كه من مي‌خواهم به پايگاه داده وصل شوم پيام</span> <I>
+&quot;Sorry, too many clients&quot;
+<span lang="fa">‌</span></I><span lang="fa">مي‌گيرم؟</span><BR><A 
 href="#3.9">3.9</A>)<span lang="fa"> 
-&#1583;&#1585; &#1588;&#1575;&#1582;&#1607; </span>&nbsp;<I>pgsql_tmp</I> <span lang="fa">&nbsp;&#1670;&#1607; &#1670;&#1610;&#1586;&#1610; &#1602;&#1585;&#1575;&#1585; &#1583;&#1575;&#1585;&#1583;&#1567;</span><BR><A 
+در شاخه </span>&nbsp;<I>pgsql_tmp</I> <span lang="fa">&nbsp;چه چيزي قرار دارد؟</span><BR><A 
 href="#3.10">3.10</A>)
-<span lang="fa">&#1670;&#1585;&#1575; &#1576;&#1585;&#1575;&#1610; &#1576;&#1607; &#1585;&#1608;&#1586; &#1603;&#1585;&#1583;&#1606; &#1606;&#1587;&#1582;&#1607; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1605;&#1606; &#1576;&#1575;&#1610;&#1583; &#1603;&#1604; &#1583;&#1575;&#1583;&#1607; &#1607;&#1575; &#1585;&#1575;
-</span>dump<span lang="fa">&#8204; &#1608; &#1605;&#1580;&#1583;&#1583;&#1575;&#1611; </span>restore<span lang="fa"> &#1603;&#1606;&#1605;&#1567;</span><BR><A 
+<span lang="fa">چرا براي به روز كردن نسخه پايگاه داده من بايد كل داده ها را
+</span>dump<span lang="fa">‌ و مجدداً </span>restore<span lang="fa"> كنم؟</span><BR><A 
 href="#3.11">3.11</A>) 
-<span lang="fa">&#1575;&#1586; &#1670;&#1607; &#1587;&#1582;&#1578; &#1575;&#1601;&#1586;&#1575;&#1585;&#1610; &#1576;&#1575;&#1610;&#1583; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1603;&#1606;&#1605;&#1567;</span><BR>
+<span lang="fa">از چه سخت افزاري بايد استفاده كنم؟</span><BR>
 </font></p>
-<H2 align=center dir="rtl"><span lang="fa"><font face="Tahoma">&#1587;&#1608;&#1575;&#1604;&#1575;&#1578; &#1593;&#1605;&#1604;&#1610;&#1575;&#1578;&#1610;</font></span></H2>
+<H2 align=center dir="rtl"><span lang="fa"><font face="Tahoma">سوالات عملياتي</font></span></H2>
 <p dir="rtl"><font face="Tahoma"><A 
-href="#4.1">4.1</A>) 
-&#1578;&#1601;&#1575;&#1608;&#1578; &#1576;&#1610;&#1606; <span lang="en-us">binary cursors</span> &#1608; <span lang="en-us">Normal 
-cursors</span> &#1670;&#1610;&#1587;&#1578;&#1567;<BR><A 
+href="#4.1">4.1</A>) تفاوت بين <span lang="en-us">binary cursors</span> و <span lang="en-us">
+Normal cursors</span> چيست؟<BR><A 
 href="#4.2">4.2</A>)
-<span lang="fa">&#1605;&#1606; &#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1601;&#1602;&#1591; &#1585;&#1608;&#1610; &#1670;&#1606;&#1583; &#1585;&#1583;&#1610;&#1601; &#1575;&#1608;&#1604; 
-&#1610;&#1575; &#1610;&#1603; &#1585;&#1583;&#1610;&#1601; &#1578;&#1589;&#1575;&#1583;&#1601;&#1610; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578; </span>SELECT<span lang="fa">&#8204; 
-&#1576;&#1586;&#1606;&#1605;&#1567;</span><BR><A 
+<span lang="fa">من چگونه مي‌توانم فقط روي چند رديف اول يا يك رديف تصادفي درخواست </span>
+SELECT<span lang="fa">‌ بزنم؟</span><BR><A 
 href="#4.3">4.3</A>)
-<span lang="fa">&#1605;&#1606; &#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1604;&#1610;&#1587;&#1578;&#1610; &#1575;&#1586; &#1580;&#1583;&#1575;&#1608;&#1604; &#1610;&#1575; &#1587;&#1575;&#1610;&#1585; &#1670;&#1610;&#1586;&#1607;&#1575;&#1610;&#1610; &#1603;&#1607; &#1583;&#1585; </span>
-psql<span lang="fa">&#8204; &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583; &#1585;&#1575; &#1576;&#1576;&#1610;&#1606;&#1605;&#1567;</span><BR><A 
+<span lang="fa">من چگونه مي‌توانم ليستي از جداول يا ساير چيزهايي كه در </span>
+psql<span lang="fa">‌ وجود دارد را ببينم؟</span><BR><A 
 href="#4.4">4.4</A>) 
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1610;&#1603; &#1587;&#1578;&#1608;&#1606; &#1580;&#1583;&#1608;&#1604; &#1585;&#1575; &#1581;&#1584;&#1601; &#1605;&#1610;&#8204;&#1603;&#1606;&#1610;&#1583;&#1567; &#1670;&#1711;&#1608;&#1606;&#1607; &#1606;&#1608;&#1593; &#1583;&#1575;&#1583;&#1607; &#1570;&#1606; &#1585;&#1575; &#1593;&#1608;&#1590; 
-&#1603;&#1606;&#1610;&#1605;&#1567;</span><BR><A 
+<span lang="fa">چگونه يك ستون جدول را حذف مي‌كنيد؟ چگونه نوع داده آن را عوض 
+كنيم؟</span><BR><A 
 href="#4.5">4.5</A>) 
-<span lang="fa">&#1581;&#1583;&#1575;&#1603;&#1579;&#1585; &#1575;&#1606;&#1583;&#1575;&#1586;&#1607; &#1610;&#1603; &#1585;&#1583;&#1610;&#1601;&#1548;&#8204; &#1580;&#1583;&#1608;&#1604; &#1608; &#1582;&#1608;&#1583; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1670;&#1602;&#1583;&#1585; &#1575;&#1587;&#1578;&#1567;</span><BR><A 
+<span lang="fa">حداكثر اندازه يك رديف،‌ جدول و خود پايگاه داده چقدر است؟</span><BR><A 
 href="#4.6">4.6</A>)
-<span lang="fa">&#1670;&#1602;&#1583;&#1585; &#1601;&#1590;&#1575;&#1610; &#1583;&#1610;&#1587;&#1603; &#1587;&#1582;&#1578; &#1576;&#1585;&#1575;&#1610; &#1584;&#1582;&#1610;&#1585;&#1607; &#1603;&#1585;&#1583;&#1606; &#1583;&#1575;&#1583;&#1607;&#8204;&#8204;&#1607;&#1575;&#1610; &#1610;&#1603; &#1601;&#1575;&#1610;&#1604; &#1605;&#1578;&#1606;&#1610; &#1605;&#1608;&#1585;&#1583; 
-&#1606;&#1610;&#1575;&#1586; &#1575;&#1587;&#1578;&#1567;</span><BR><A 
+<span lang="fa">چقدر فضاي ديسك سخت براي ذخيره كردن داده‌‌هاي يك فايل متني مورد 
+نياز است؟</span><BR><A 
 href="#4.7">4.7</A>)
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1576;&#1601;&#1607;&#1605;&#1605; &#1603;&#1607; &#1670;&#1607; &#1603;&#1575;&#1585;&#1576;&#1585;&#1575;&#1606;&#1548;&#8204; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607;&#1548;&#8204; &#1606;&#1605;&#1575;&#1610;&#1607; &#1608; 
-&#1580;&#1583;&#1575;&#1608;&#1604;&#1610; &#1583;&#1585; &#1587;&#1610;&#1587;&#1578;&#1605; &#1578;&#1593;&#1585;&#1610;&#1601; &#1588;&#1583;&#1607; &#1575;&#1587;&#1578;&#1567;</span><BR><A 
+<span lang="fa">چگونه مي‌توانم بفهمم كه چه كاربران،‌ پايگاه داده،‌ نمايه و 
+جداولي در سيستم تعريف شده است؟</span><BR><A 
 href="#4.8">4.8</A>) 
-<span lang="fa">&#1670;&#1585;&#1575; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578;&#1607;&#1575;&#1610; &#1605;&#1606; &#1603;&#1606;&#1583; &#1575;&#1580;&#1585;&#1575; &#1605;&#1610;&#8204;&#1588;&#1608;&#1606;&#1583; &#1610;&#1575; &#1670;&#1585;&#1575; &#1575;&#1586; &#1606;&#1605;&#1575;&#1610;&#1607; &#1607;&#1575; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; 
-&#1606;&#1605;&#1610;&#8204;&#1603;&#1606;&#1606;&#1583;&#1567;</span><BR><A 
+<span lang="fa">چرا درخواستهاي من كند اجرا مي‌شوند يا چرا از نمايه ها استفاده 
+نمي‌كنند؟</span><BR><A 
 href="#4.9">4.9</A>) 
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1606;&#1581;&#1608;&#1607; &#1576;&#1585;&#1585;&#1587;&#1610; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578; &#1585;&#1575; &#1578;&#1608;&#1587;&#1591; &#1576;&#1607;&#1610;&#1606;&#1607;&#8204;&#1587;&#1575;&#1586; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578;&#1607;&#1575; 
-&#1605;&#1588;&#1575;&#1607;&#1583;&#1607; &#1603;&#1606;&#1605;&#1567;</span><BR><A 
+<span lang="fa">چگونه مي‌توانم نحوه بررسي درخواست را توسط بهينه‌ساز درخواستها 
+مشاهده كنم؟</span><BR><A 
 href="#4.10">4.10</A>) 
-<span lang="fa">&#1606;&#1605;&#1575;&#1610;&#1607; </span>R-tree<span lang="fa">&#8204; &#1670;&#1610;&#1587;&#1578;&#1567;</span><BR><A 
+<span lang="fa">نمايه </span>R-tree<span lang="fa">‌ چيست؟</span><BR><A 
 href="#4.11">4.11</A>)
-<span lang="fa">&#1576;&#1607;&#1610;&#1606;&#1607; &#1587;&#1575;&#1586; &#1578;&#1603;&#1608;&#1610;&#1606;&#1610; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578; &#1670;&#1610;&#1587;&#1578;&#1567;</span> (Genetic Query Optimizer)<BR><A 
+<span lang="fa">بهينه ساز تكويني درخواست چيست؟</span> (Genetic Query Optimizer)<BR><A 
 href="#4.12">4.12</A>)
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1575;&#1586; &#1593;&#1576;&#1575;&#1585;&#1575;&#1578; &#1605;&#1606;&#1592;&#1605; &#1576;&#1585;&#1575;&#1610; &#1580;&#1587;&#1578;&#1580;&#1608; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1603;&#1606;&#1605;&#1567; &#1670;&#1711;&#1608;&#1606;&#1607; &#1580;&#1587;&#1578;&#1580;&#1608;&#1610;&#1610; &#1575;&#1606;&#1580;&#1575;&#1605; 
-&#1583;&#1607;&#1605; &#1603;&#1607; &#1581;&#1587;&#1575;&#1587; &#1576;&#1607; &#1605;&#1578;&#1606; &#1606;&#1576;&#1575;&#1588;&#1583;&#1567; &#1670;&#1711;&#1608;&#1606;&#1607; &#1576;&#1585;&#1575;&#1610; &#1610;&#1603; &#1580;&#1587;&#1578;&#1580;&#1608;&#1610; &#1594;&#1610;&#1585; &#1581;&#1587;&#1575;&#1587; &#1576;&#1607; &#1605;&#1578;&#1606; &#1575;&#1586; &#1606;&#1605;&#1575;&#1610;&#1607; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; 
-&#1603;&#1606;&#1605;&#1567;</span><BR><A 
+<span lang="fa">چگونه از عبارات منظم براي جستجو استفاده كنم؟ چگونه جستجويي انجام 
+دهم كه حساس به متن نباشد؟ چگونه براي يك جستجوي غير حساس به متن از نمايه استفاده 
+كنم؟</span><BR><A 
 href="#4.13">4.13</A>)
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1583;&#1585; &#1610;&#1603; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578; &#1578;&#1588;&#1582;&#1610;&#1589; &#1583;&#1607;&#1605; &#1603;&#1607; &#1610;&#1603; &#1601;&#1610;&#1604;&#1583; </span>NULL<span lang="fa">&#8204; 
-&#1575;&#1587;&#1578;&#1567;</span><BR><A 
+<span lang="fa">چگونه مي‌توانم در يك درخواست تشخيص دهم كه يك فيلد </span>NULL<span lang="fa">‌ 
+است؟</span><BR><A 
 href="#4.14">4.14</A>)
-<span lang="fa">&#1578;&#1601;&#1575;&#1608;&#1578; &#1576;&#1610;&#1606; &#1711;&#1608;&#1606;&#1607;&#8204;&#1607;&#1575;&#1610; &#1605;&#1582;&#1578;&#1604;&#1601; </span>character<span lang="fa"> &#1670;&#1610;&#1587;&#1578;&#1567;</span><BR><A 
+<span lang="fa">تفاوت بين گونه‌هاي مختلف </span>character<span lang="fa"> چيست؟</span><BR><A 
 href="#4.15.1">4.15.1</A>)
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1610;&#1603; &#1601;&#1610;&#1604;&#1583; &#1587;&#1585;&#1610;&#1575;&#1604; &#1610;&#1575; &#1575;&#1601;&#1586;&#1575;&#1610;&#1588;&#1610; &#1575;&#1610;&#1580;&#1575;&#1583; &#1603;&#1606;&#1605;&#1567;</span><BR><A 
+<span lang="fa">چگونه مي‌توانم يك فيلد سريال يا افزايشي ايجاد كنم؟</span><BR><A 
 href="#4.15.2">4.15.2</A>)
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1605;&#1602;&#1583;&#1575;&#1585; &#1610;&#1603; &#1583;&#1585;&#1580; &#1587;&#1585;&#1610;&#1575;&#1604;&#1610; &#1585;&#1575; &#1576;&#1583;&#1575;&#1606;&#1605;&#1567;</span><BR><A 
-href="#4.15.3">4.15.3</A>) <span lang="fa">&#1570;&#1740;&#1575; &#1578;&#1608;&#1575;&#1576;&#1593; ()</span>nextval<span lang="fa"> 
-&#1608; ()</span>currval<span lang="fa"> &#1605;&#1606;&#1580;&#1585; &#1576;&#1607; &#1575;&#1740;&#1580;&#1575;&#1583; &#1588;&#1585;&#1575;&#1740;&#1591; </span>race<span lang="fa"> 
-&#1576;&#1585;&#1575;&#1740; &#1587;&#1575;&#1740;&#1585; &#1705;&#1575;&#1585;&#1576;&#1585;&#1575;&#1606; &#1605;&#1740; &#1588;&#1608;&#1606;&#1583;&#1567;</span><BR><A 
+<span lang="fa">چگونه مي‌توانم مقدار يك درج سريالي را بدانم؟</span><BR><A 
+href="#4.15.3">4.15.3</A>) <span lang="fa">آیا توابع ()</span>nextval<span lang="fa"> 
+و ()</span>currval<span lang="fa"> منجر به ایجاد شرایط </span>race<span lang="fa"> 
+برای سایر کاربران می شوند؟</span><BR><A 
 href="#4.15.4">4.15.4</A>) 
-<span lang="fa">&#1670;&#1585;&#1575; &#1575;&#1593;&#1583;&#1575;&#1583; &#1587;&#1585;&#1740;&#1575;&#1604;&#1740; &#1605;&#1585;&#1576;&#1608;&#1591; &#1576;&#1607; &#1578;&#1585;&#1575;&#1705;&#1606;&#1588;&#1607;&#1575;&#1740; </span>abort<span lang="fa"> 
-&#1588;&#1583;&#1607; &#1605;&#1580;&#1583;&#1583;&#1575;&#1611; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1606;&#1605;&#1740; &#1588;&#1608;&#1583;&#1567; &#1670;&#1585;&#1575; &#1576;&#1740;&#1606; &#1575;&#1593;&#1583;&#1575;&#1583; &#1587;&#1585;&#1740;&#1575;&#1604;&#1740; &#1740;&#1705; &#1601;&#1575;&#1589;&#1604;&#1607; &#1582;&#1575;&#1604;&#1740; &#1575;&#1740;&#1580;&#1575;&#1583; &#1605;&#1740; &#1588;&#1608;&#1583;&#1567;</span><BR><A 
-href="#4.16">4.16</A>) 
-OID<span lang="fa"> &#1608; </span>TID<span lang="fa"> &#1670;&#1607; &#1607;&#1587;&#1578;&#1606;&#1583;&#1567;</span><BR><A 
+<span lang="fa">چرا اعداد سریالی مربوط به تراکنشهای </span>abort<span lang="fa"> 
+شده مجدداً استفاده نمی شود؟ چرا بین اعداد سریالی یک فاصله خالی ایجاد می شود؟</span><BR><A 
+href="#4.16">4.16</A>) OID<span lang="fa"> و </span>TID<span lang="fa"> چه 
+هستند؟</span><BR><A 
 href="#4.17">4.17</A>)
-<span lang="fa">&#1605;&#1593;&#1606;&#1610; &#1576;&#1593;&#1590;&#1610; &#1575;&#1586; &#1578;&#1585;&#1605;&#1607;&#1575; &#1608; &#1603;&#1604;&#1605;&#1575;&#1578;&#1610; &#1603;&#1607; &#1583;&#1585; </span>PostgreSQL<span lang="fa">&#8204; 
-&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583; &#1670;&#1610;&#1587;&#1578;&#1567;</span><BR><A 
+<span lang="fa">معني بعضي از ترمها و كلماتي كه در </span>PostgreSQL<span lang="fa">‌ 
+استفاده مي‌شود چيست؟</span><BR><A 
 href="#4.18">4.18</A>)<span lang="fa"> 
-&#1670;&#1585;&#1575; &#1605;&#1606; &#1582;&#1591;&#1575;&#1610; </span><i>&quot;ERROR: Memory exhausted in AllocSetAlloc&quot;</i><span lang="fa"> 
-&#1605;&#1610;&#8204;&#1711;&#1610;&#1585;&#1605;&#1567;</span><BR><A 
+چرا من خطاي </span><i>&quot;ERROR: Memory exhausted in AllocSetAlloc&quot;</i><span lang="fa"> 
+مي‌گيرم؟</span><BR><A 
 href="#4.19">4.19</A>)
-<span lang="fa">&#1575;&#1586; &#1603;&#1580;&#1575; &#1578;&#1588;&#1582;&#1610;&#1589; &#1583;&#1607;&#1605; &#1603;&#1607; &#1608;&#1610;&#1585;&#1575;&#1610;&#1588; &#1610;&#1575; &#1606;&#1587;&#1582;&#1607; </span>PostgreSQL<span lang="fa">&#1610;&#1610; 
-&#1603;&#1607; &#1605;&#1606; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1605;&#1610;&#8204;&#1603;&#1606;&#1605; &#1670;&#1610;&#1587;&#1578;&#1567;</span><BR><A 
-href="#4.20">4.20</A>) <span lang="fa">&#1670;&#1585;&#1575; &#1583;&#1585; &#1581;&#1740;&#1606; &#1575;&#1580;&#1585;&#1575;&#1740; &#1593;&#1605;&#1604;&#1740;&#1575;&#1578; &#1585;&#1608;&#1740; </span>
-large-object<span lang="fa">&#1607;&#1575; &#1582;&#1591;&#1575;&#1740; </span>&quot;<I>invalid large obj descriptor</I>&quot;<span lang="fa">&#1576;&#1607; 
-&#1608;&#1580;&#1608;&#1583; &#1605;&#1740; &#1570;&#1740;&#1583;&#1567;</span><BR><A 
+<span lang="fa">از كجا تشخيص دهم كه ويرايش يا نسخه </span>PostgreSQL<span lang="fa">يي 
+كه من استفاده مي‌كنم چيست؟</span><BR><A 
+href="#4.20">4.20</A>) <span lang="fa">چرا در حین اجرای عملیات روی </span>
+large-object<span lang="fa">ها خطای </span>&quot;<I>invalid large obj descriptor</I>&quot;<span lang="fa">به 
+وجود می آید؟</span><BR><A 
 href="#4.21">4.21</A>)
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1610;&#1603; &#1587;&#1578;&#1608;&#1606; &#1575;&#1610;&#1580;&#1575;&#1583; &#1603;&#1606;&#1605; &#1603;&#1607; &#1605;&#1602;&#1583;&#1575;&#1585; &#1586;&#1605;&#1575;&#1606; &#1580;&#1575;&#1585;&#1610; &#1585;&#1575; &#1576;&#1607; &#1593;&#1606;&#1608;&#1575;&#1606; &#1605;&#1602;&#1583;&#1575;&#1585; 
-&#1662;&#1610;&#1588;&#8204;&#1601;&#1585;&#1590; &#1583;&#1575;&#1588;&#1578;&#1607; &#1576;&#1575;&#1588;&#1583;&#1567;</span><BR><A 
+<span lang="fa">چگونه يك ستون ايجاد كنم كه مقدار زمان جاري را به عنوان مقدار 
+پيش‌فرض داشته باشد؟</span><BR><A 
 href="#4.22">4.22</A>)
-<span lang="fa">&#1670;&#1585;&#1575; &#1586;&#1610;&#1585; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578;&#1607;&#1575;&#1610;&#1610; &#1603;&#1607; &#1575;&#1586; </span>IN<span lang="fa"> &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; 
-&#1605;&#1610;&#8204;&#1603;&#1606;&#1606;&#1583; &#1603;&#1606;&#1583; &#1607;&#1587;&#1578;&#1606;&#1583;&#1567;</span><BR><A 
+<span lang="fa">چرا زير درخواستهايي كه از </span>IN<span lang="fa"> استفاده 
+مي‌كنند كند هستند؟</span><BR><A 
 href="#4.23">4.23</A>) 
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1610;&#1603; &#1575;&#1604;&#1581;&#1575;&#1602; &#1582;&#1575;&#1585;&#1580;&#1610; (</span>outer join<span lang="fa">) 
-&#1575;&#1606;&#1580;&#1575;&#1605; &#1583;&#1607;&#1605;&#1567;</span><BR><A 
+<span lang="fa">چگونه مي‌توانم يك الحاق خارجي (</span>outer join<span lang="fa">) 
+انجام دهم؟</span><BR><A 
 href="#4.24">4.24</A>)
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578;&#1607;&#1575;&#1610;&#1610; &#1575;&#1586; &#1670;&#1606;&#1583; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1578;&#1608;&#1604;&#1610;&#1583; &#1603;&#1585;&#1583;&#1567;</span><BR><A 
+<span lang="fa">چگونه مي‌توان درخواستهايي از چند پايگاه داده توليد كرد؟</span><BR><A 
 href="#4.25">4.25</A>) 
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1582;&#1585;&#1608;&#1580;&#1610; &#1610;&#1603; &#1578;&#1575;&#1576;&#1593; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1583;&nbsp; &#1670;&#1606;&#1583; &#1585;&#1583;&#1610;&#1601; &#1610;&#1575; &#1587;&#1578;&#1608;&#1606; &#1576;&#1575;&#1588;&#1583;&#1567;</span><BR><A 
+<span lang="fa">چگونه خروجي يك تابع مي‌تواند&nbsp; چند رديف يا ستون باشد؟</span><BR><A 
 href="#4.26">4.26</A>)&nbsp;
-<span lang="fa">&#1583;&#1585; &#1578;&#1608;&#1575;&#1576;&#1593; </span>PL/PgSQL<span lang="fa"> &#1670;&#1585;&#1575; &#1606;&#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606; &#1576;&#1575; &#1575;&#1591;&#1605;&#1610;&#1606;&#1575;&#1606; 
-&#1580;&#1583;&#1575;&#1608;&#1604; &#1605;&#1608;&#1602;&#1578; &#1585;&#1575; &#1575;&#1610;&#1580;&#1575;&#1583; &#1610;&#1575; &#1581;&#1584;&#1601; &#1603;&#1585;&#1583;&#1567;</span><BR><A 
+<span lang="fa">در توابع </span>PL/PgSQL<span lang="fa"> چرا نمي‌توان با اطمينان 
+جداول موقت را ايجاد يا حذف كرد؟</span><BR><A 
 href="#4.27">4.27</A>) 
-<span lang="fa">&#1670;&#1607; &#1711;&#1586;&#1610;&#1606;&#1607;&#8204;&#1607;&#1575;&#1610;&#1610; &#1576;&#1585;&#1575;&#1610; &#1578;&#1603;&#1585;&#1575;&#1585; (</span>replication<span lang="fa">)</span>
-<span lang="fa">&#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;&#1567;</span><BR><A 
+<span lang="fa">چه گزينه‌هايي براي تكرار (</span>replication<span lang="fa">)</span>
+<span lang="fa">وجود دارد؟</span><BR><A 
 href="#4.28">4.28</A>) 
-<span lang="fa">&#1670;&#1607; &#1711;&#1586;&#1610;&#1606;&#1607;&#8204;&#1607;&#1575;&#1610;&#1610; &#1576;&#1585;&#1575;&#1610; &#1585;&#1605;&#1586;&#1606;&#1711;&#1575;&#1585;&#1610; &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;&#1567;</span><BR>
+<span lang="fa">چه گزينه‌هايي براي رمزنگاري وجود دارد؟</span><BR>
 </font></p>
-<h2 align="center" dir="rtl"><font face="Tahoma"><span lang="fa">&#1578;&#1608;&#1587;&#1593;&#1607; </span>
+<h2 align="center" dir="rtl"><font face="Tahoma"><span lang="fa">توسعه </span>
 PostgreSQL</font></h2>
 <p dir="rtl"><font face="Tahoma"><A 
 href="#5.1">5.1</A>)
-<span lang="fa">&#1605;&#1606; &#1610;&#1603; &#1578;&#1575;&#1576;&#1593; &#1606;&#1608;&#1588;&#1578;&#1607;&#8204;&#1575;&#1605;. &#1670;&#1711;&#1608;&#1606;&#1607; &#1570;&#1606; &#1585;&#1575; &#1583;&#1585; </span>psql<span lang="fa"> 
-&#1575;&#1580;&#1585;&#1575; &#1603;&#1606;&#1605;&#1567; &#1670;&#1585;&#1575; &#1576;&#1575; &#1575;&#1580;&#1585;&#1575;&#1610; &#1570;&#1606; </span>core dump<span lang="fa"> &#1605;&#1610;&#8204;&#1711;&#1610;&#1585;&#1605;&#1567;</span><BR><A 
+<span lang="fa">من يك تابع نوشته‌ام. چگونه آن را در </span>psql<span lang="fa"> 
+اجرا كنم؟ چرا با اجراي آن </span>core dump<span lang="fa"> مي‌گيرم؟</span><BR><A 
 href="#5.2">5.2</A>)
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1583;&#1585; &#1578;&#1608;&#1604;&#1610;&#1583; &#1606;&#1608;&#1593;&#8204;&#1607;&#1575; &#1608; &#1578;&#1608;&#1575;&#1576;&#1593; &#1580;&#1583;&#1610;&#1583; &#1608; &#1580;&#1575;&#1604;&#1576; &#1576;&#1585;&#1575;&#1610; </span>
-PostgreSQL<span lang="fa">&#8204; &#1607;&#1605;&#1603;&#1575;&#1585;&#1610; &#1608; &#1605;&#1588;&#1575;&#1585;&#1603;&#1578; &#1583;&#1575;&#1588;&#1578;&#1607; &#1576;&#1575;&#1588;&#1605;.</span><BR><A 
+<span lang="fa">چگونه مي‌توانم در توليد نوع‌ها و توابع جديد و جالب براي </span>
+PostgreSQL<span lang="fa">‌ همكاري و مشاركت داشته باشم.</span><BR><A 
 href="#5.3">5.3</A>)
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1610;&#1603; &#1578;&#1575;&#1576;&#1593; &#1576;&#1607; &#1586;&#1576;&#1575;&#1606; </span>C<span lang="fa"> &#1576;&#1606;&#1608;&#1610;&#1587;&#1605; 
-&#1603;&#1607; &#1582;&#1585;&#1608;&#1580;&#1610; &#1570;&#1606; &#1610;&#1603;</span> <span lang="fa">&#8204;</span>tuple<span lang="fa"> </span>&nbsp;<span lang="fa">(&#1670;&#1606;&#1583; 
-&#1578;&#1575;&#1610;&#1610;) &#1576;&#1575;&#1588;&#1583;&#1567;</span><BR><A 
+<span lang="fa">چگونه مي‌توانم يك تابع به زبان </span>C<span lang="fa"> بنويسم 
+كه خروجي آن يك</span> <span lang="fa">‌</span>tuple<span lang="fa"> </span>&nbsp;<span lang="fa">(چند 
+تايي) باشد؟</span><BR><A 
 href="#5.4">5.4</A>) 
-<span lang="fa">&#1605;&#1606; &#1610;&#1603; &#1601;&#1575;&#1610;&#1604; &#1605;&#1606;&#1576;&#1593; &#1585;&#1575; &#1593;&#1608;&#1590; &#1603;&#1585;&#1583;&#1607; &#1575;&#1605; &#1670;&#1585;&#1575; &#1583;&#1585; &#1593;&#1605;&#1604;&#1610;&#1575;&#1578; &#1603;&#1575;&#1605;&#1662;&#1610;&#1604; &#1605;&#1580;&#1583;&#1583; &#1570;&#1606; 
-&#1578;&#1594;&#1610;&#1610;&#1585; &#1583;&#1610;&#1583;&#1607; &#1606;&#1605;&#1610;&#8204;&#1588;&#1608;&#1583;&#1567;</span><BR>
+<span lang="fa">من يك فايل منبع را عوض كرده ام چرا در عمليات كامپيل مجدد آن 
+تغيير ديده نمي‌شود؟</span><BR>
 </font></p>
 <HR dir="rtl">
 
-<H2 align=center dir="rtl"><font face="Tahoma"><span lang="fa">&#1587;&#1608;&#1575;&#1604;&#1575;&#1578; &#1593;&#1605;&#1608;&#1605;&#1610;</span></font></H2>
+<H2 align=center dir="rtl"><font face="Tahoma"><span lang="fa">سوالات عمومي</span></font></H2>
 <H4 dir="rtl"><font face="Tahoma"><A name=1.1>1.1</A>) <span lang="en-us">
-PostgreSQL</span> &#1670;&#1610;&#1587;&#1578; &#1608; &#1670;&#1711;&#1608;&#1606;&#1607; &#1570;&#1606; &#1585;&#1575; &#1576;&#1575;&#1610;&#1583; &#1578;&#1604;&#1601;&#1592; &#1603;&#1585;&#1583;&#1567;</font></H4>
-<p dir="rtl"><span lang="en-us">PostgreSQL</span> &#1576;&#1607; &#1589;&#1608;&#1585;&#1578; <span lang="en-us">
-Post-Gres-Q-L</span>&#8204; &#1578;&#1604;&#1601;&#1592; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583;. &#1610;&#1603; &#1601;&#1575;&#1610;&#1604; &#1589;&#1608;&#1578;&#1610; &#1583;&#1585; &#1570;&#1583;&#1585;&#1587;
+PostgreSQL</span> چيست و چگونه آن را بايد تلفظ كرد؟</font></H4>
+<p dir="rtl"><span lang="en-us">PostgreSQL</span> به صورت <span lang="en-us">
+Post-Gres-Q-L</span>‌ تلفظ مي‌شود. يك فايل صوتي در آدرس
 <a href="http://www.postfresql.org/postgresql.mp3&#8204;"><span lang="en-us">
-http://www.postfresql.org/postgresql.mp3</span>&#8204;</a> &#1576;&#1585;&#1575;&#1610; &#1603;&#1587;&#1575;&#1606;&#1610; &#1603;&#1607; &#1605;&#1575;&#1610;&#1604;&#1606;&#1583; &#1578;&#1604;&#1601;&#1592; 
-&#1589;&#1581;&#1610;&#1581; &#1585;&#1575; &#1576;&#1588;&#1606;&#1608;&#1606;&#1583; &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;.</p>
-<P dir="rtl"><span lang="en-us">PostgreSQL</span> &#1575;&#1586; &#1585;&#1608;&#1610; &#1587;&#1610;&#1587;&#1578;&#1605; &#1605;&#1583;&#1610;&#1585;&#1610;&#1578; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; 
-&#1583;&#1575;&#1583;&#1607; <span lang="en-us">POSTGRES</span> &#1578;&#1608;&#1587;&#1593;&#1607; &#1583;&#1575;&#1583;&#1607; &#1588;&#1583;&#1607; &#1575;&#1587;&#1578; (&#1607;&#1606;&#1608;&#1586; &#1607;&#1605; &#1576;&#1593;&#1590;&#1610; &#1605;&#1608;&#1575;&#1602;&#1593; 
-&#1576;&#1585;&#1575;&#1610; &#1587;&#1575;&#1583;&#1711;&#1610; &#1576;&#1607; &#1570;&#1606; <span lang="en-us">Postgres</span> &#1711;&#1601;&#1578;&#1607; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583;) &#1603;&#1607; &#1610;&#1603; &#1606;&#1605;&#1608;&#1606;&#1607; 
-&#1578;&#1581;&#1602;&#1610;&#1602;&#1575;&#1578;&#1610; &#1575;&#1586; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607;&#8204;&#1607;&#1575;&#1610; &#1606;&#1587;&#1604; &#1576;&#1593;&#1583; &#1575;&#1587;&#1578;. <span lang="en-us">PostgreSQL</span> 
-&#1607;&#1605;&#1575;&#1606; &#1575;&#1604;&#1711;&#1608;&#1610; &#1583;&#1575;&#1583;&#1607; &#1602;&#1608;&#1610; &#1608; &#1575;&#1606;&#1608;&#1575;&#1593; &#1583;&#1575;&#1583;&#1607;&nbsp; &#1585;&#1575; &#1581;&#1601;&#1592; &#1603;&#1585;&#1583;&#1607; &#1575;&#1587;&#1578; &#1608;&#1604;&#1610; &#1586;&#1576;&#1575;&#1606;
-<span lang="en-us">PostQuel</span> &#1585;&#1575; &#1576;&#1575; &#1610;&#1603; &#1586;&#1610;&#1585;&#1605;&#1580;&#1605;&#1608;&#1593;&#1607; &#1662;&#1610;&#1588;&#1585;&#1601;&#1578;&#1607; &#1575;&#1586;
-<span lang="en-us">SQL</span> &#1580;&#1575;&#1610;&#1711;&#1586;&#1610;&#1606; &#1603;&#1585;&#1583;&#1607; &#1575;&#1587;&#1578;. <span lang="en-us">PostgreSQL</span> 
-&#1605;&#1578;&#1606; &#1576;&#1575;&#1586; &#1576;&#1608;&#1583;&#1607; &#1608; &#1605;&#1578;&#1606; &#1603;&#1575;&#1605;&#1604; &#1570;&#1606; &#1583;&#1585; &#1583;&#1587;&#1578;&#1585;&#1587; &#1575;&#1587;&#1578;.</P>
-<P dir="rtl"><font face="Tahoma"><span lang="en-us">PostgreSQL </span>&nbsp;&#1578;&#1608;&#1587;&#1591; 
-&#1610;&#1603; &#1578;&#1610;&#1605; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607;&#8204;&#1606;&#1608;&#1610;&#1587; &#1603;&#1607; &#1607;&#1605;&#1711;&#1610; &#1583;&#1585; &#1711;&#1585;&#1608;&#1607; &#1662;&#1587;&#1578; &#1575;&#1604;&#1603;&#1578;&#1585;&#1608;&#1606;&#1610;&#1603; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607;&#8204;&#1606;&#1608;&#1610;&#1587;&#1575;&#1606;
-<span lang="en-us">PostgreSQL</span>&nbsp; &#1593;&#1590;&#1608; &#1607;&#1587;&#1578;&#1606;&#1583;&#1548; &#1575;&#1606;&#1580;&#1575;&#1605; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583;. &#1607;&#1605;&#1575;&#1607;&#1606;&#1711; &#1603;&#1606;&#1606;&#1583;&#1607; 
-&#1575;&#1589;&#1604;&#1610; &#1583;&#1585; &#1581;&#1575;&#1604; &#1581;&#1575;&#1590;&#1585; <span lang="en-us">Marc G. Fournier</span>&#8204; &#1576;&#1607; &#1570;&#1583;&#1585;&#1587;
+http://www.postfresql.org/postgresql.mp3</span>‌</a> براي كساني كه مايلند تلفظ 
+صحيح را بشنوند وجود دارد.</p>
+<P dir="rtl"><span lang="en-us">PostgreSQL</span> از روي سيستم مديريت پايگاه 
+داده <span lang="en-us">POSTGRES</span> توسعه داده شده است (هنوز هم بعضي مواقع 
+براي سادگي به آن <span lang="en-us">Postgres</span> گفته مي‌شود) كه يك نمونه 
+تحقيقاتي از پايگاه داده‌هاي نسل بعد است. <span lang="en-us">PostgreSQL</span> 
+همان الگوي داده قوي و انواع داده&nbsp; را حفظ كرده است ولي زبان
+<span lang="en-us">PostQuel</span> را با يك زيرمجموعه پيشرفته از
+<span lang="en-us">SQL</span> جايگزين كرده است. <span lang="en-us">PostgreSQL</span> 
+متن باز بوده و متن كامل آن در دسترس است.</P>
+<P dir="rtl"><font face="Tahoma"><span lang="en-us">PostgreSQL </span>&nbsp;توسط يك 
+تيم برنامه‌نويس كه همگي در گروه پست الكترونيك برنامه‌نويسان
+<span lang="en-us">PostgreSQL</span>&nbsp; عضو هستند، انجام مي‌شود. هماهنگ كننده 
+اصلي در حال حاضر <span lang="en-us">Marc G. Fournier</span>‌ به آدرس
 <span lang="en-us"><a href="mailto:scrappy@PostgreSQL.org">
-scrappy@PostgreSQL.org</a></span>&nbsp; &#1605;&#1610;&#8204;&#1576;&#1575;&#1588;&#1583;. (&#1576;&#1585;&#1575;&#1610; &#1583;&#1610;&#1583;&#1606; &#1606;&#1581;&#1608;&#1607; &#1605;&#1604;&#1581;&#1602; &#1588;&#1583;&#1606; &#1576;&#1607; &#1575;&#1610;&#1606; 
-&#1578;&#1610;&#1605; &#1602;&#1587;&#1605;&#1578; <A 
+scrappy@PostgreSQL.org</a></span>&nbsp; مي‌باشد. (براي ديدن نحوه ملحق شدن به اين 
+تيم قسمت <A 
 href="#1.6">1.6</A> 
-&#1585;&#1575; &#1576;&#1576;&#1610;&#1606;&#1610;&#1583;). &#1575;&#1610;&#1606; &#1578;&#1610;&#1605; &#1583;&#1585; &#1581;&#1575;&#1590;&#1585; &#1605;&#1587;&#1574;&#1608;&#1604;&#1610;&#1578; &#1578;&#1605;&#1575;&#1605; &#1605;&#1587;&#1575;&#1574;&#1604; &#1605;&#1585;&#1576;&#1608;&#1591; &#1576;&#1607; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607;&#8204;&#1606;&#1608;&#1610;&#1587;&#1610;
-<span lang="en-us">PostgreSQL</span> &#1585;&#1575; &#1576;&#1585; &#1593;&#1607;&#1583;&#1607; &#1583;&#1575;&#1585;&#1583;. &#1575;&#1610;&#1606; &#1610;&#1603; &#1662;&#1585;&#1608;&#1688;&#1607; &#1711;&#1585;&#1608;&#1607;&#1610; &#1575;&#1587;&#1578; &#1608; 
-&#1578;&#1581;&#1578; &#1603;&#1606;&#1578;&#1585;&#1604; &#1607;&#1610;&#1670; &#1588;&#1585;&#1603;&#1578;&#1610; &#1606;&#1610;&#1587;&#1578;. &#1576;&#1585;&#1575;&#1610; &#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578; &#1576;&#1610;&#1588;&#1578;&#1585; &#1583;&#1585; &#1605;&#1608;&#1585;&#1583; &#1575;&#1610;&#1606; &#1578;&#1610;&#1605; &#1576;&#1607; &#1570;&#1583;&#1585;&#1587;
+را ببينيد). اين تيم در حاضر مسئوليت تمام مسائل مربوط به برنامه‌نويسي
+<span lang="en-us">PostgreSQL</span> را بر عهده دارد. اين يك پروژه گروهي است و 
+تحت كنترل هيچ شركتي نيست. براي اطلاعات بيشتر در مورد اين تيم به آدرس
 <A 
-href="http://www.postgresql.org/docs/faqs/FAQ_DEV.html">http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html</A> 
-&#1605;&#1585;&#1575;&#1580;&#1593;&#1607; &#1603;&#1606;&#1610;&#1583;.</font></P>
-<P dir="rtl"><font face="Tahoma">&#1575;&#1608;&#1604;&#1610;&#1606; &#1606;&#1587;&#1582;&#1607; <span lang="en-us">PostgreSQL</span>&#8204; 
-&#1578;&#1608;&#1587;&#1591; Andrew Yu and Jolly Chen &#1576;&#1607; &#1608;&#1580;&#1608;&#1583; &#1570;&#1605;&#1583;. &#1575;&#1601;&#1585;&#1575;&#1583; &#1576;&#1587;&#1610;&#1575;&#1585;&#1610; &#1583;&#1585; &#1578;&#1608;&#1587;&#1593;&#1607; &#1608; &#1585;&#1601;&#1593; &#1575;&#1588;&#1603;&#1575;&#1604; &#1608; 
-&#1575;&#1606;&#1578;&#1602;&#1575;&#1604; &#1570;&#1606; &#1588;&#1585;&#1603;&#1578; &#1603;&#1585;&#1583;&#1607;&#8204;&#1575;&#1606;&#1583;. &#1605;&#1578;&#1606; &#1575;&#1589;&#1604;&#1610; <span lang="en-us">Postgres</span> &#1603;&#1607;
-<span lang="en-us">PostgreSQL</span> &#1575;&#1586; &#1585;&#1608;&#1610; &#1570;&#1606; &#1606;&#1608;&#1588;&#1578;&#1607; &#1588;&#1583;&#1607; &#1575;&#1587;&#1578;&#1548; &#1578;&#1608;&#1587;&#1591; &#1578;&#1593;&#1583;&#1575;&#1583; &#1586;&#1610;&#1575;&#1583;&#1610; 
-&#1583;&#1575;&#1606;&#1588;&#1580;&#1608;&#1610; &#1603;&#1575;&#1585;&#1588;&#1606;&#1575;&#1587;&#1610; &#1575;&#1585;&#1588;&#1583;&#1608; &#1583;&#1575;&#1606;&#1588;&#1580;&#1608;&#1610; &#1603;&#1575;&#1585;&#1588;&#1606;&#1575;&#1587;&#1610; &#1608; &#1578;&#1610;&#1605; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607;&#8204;&#1606;&#1608;&#1610;&#1587;&#1610; &#1603;&#1607; &#1578;&#1581;&#1578; &#1606;&#1592;&#1585; &#1662;&#1585;&#1608;&#1601;&#1587;&#1608;&#1585; 
-Michael Stonebrake &#1583;&#1585; &#1583;&#1575;&#1606;&#1588;&#1711;&#1575;&#1607; &#1576;&#1585;&#1603;&#1604;&#1610;&#1548;&#8204;&#1603;&#1575;&#1604;&#1610;&#1601;&#1585;&#1606;&#1610;&#1575; &#1603;&#1575;&#1585; &#1605;&#1610;&#8204;&#1603;&#1585;&#1583;&#1607;&#8204;&#1575;&#1606;&#1583; &#1606;&#1608;&#1588;&#1578;&#1607; &#1588;&#1583;&#1607; &#1575;&#1587;&#1578;.</font></P>
-<P dir="rtl"><font face="Tahoma">&#1606;&#1575;&#1605; &#1575;&#1589;&#1604;&#1610; &#1606;&#1585;&#1605; &#1575;&#1601;&#1586;&#1575;&#1585; &#1583;&#1585; &#1583;&#1575;&#1606;&#1588;&#1711;&#1575;&#1607; &#1576;&#1585;&#1603;&#1604;&#1610;
-<span lang="en-us">Postgres</span>&#8204; &#1576;&#1608;&#1583;. &#1583;&#1585; &#1587;&#1575;&#1604; 1995 &#1576;&#1593;&#1583; &#1575;&#1586; &#1575;&#1590;&#1575;&#1601;&#1607; &#1588;&#1583;&#1606;
-<span lang="en-us">SQL</span> &#1606;&#1575;&#1605; &#1570;&#1606; &#1576;&#1607;<span lang="en-us"> Postgres95</span> 
-&#1578;&#1594;&#1610;&#1610;&#1585; &#1583;&#1575;&#1583;&#1607; &#1588;&#1583;.<span lang="en-us"> </span>&#1583;&#1585; &#1587;&#1575;&#1604; 1996 &#1606;&#1575;&#1605; &#1570;&#1606; &#1576;&#1607;
-<span lang="en-us">PostgreSQL</span> &#1578;&#1594;&#1610;&#1610;&#1585; &#1583;&#1575;&#1583;&#1607; &#1588;&#1583;.</font></P>
-<H4 dir="rtl"><font face="Tahoma"><A name=1.2>1.2</A>) &#1602;&#1608;&#1575;&#1606;&#1610;&#1606; &#1603;&#1662;&#1610; &#1585;&#1575;&#1610;&#1578; &#1583;&#1585; &#1605;&#1608;&#1585;&#1583;
-<span lang="en-us">PostgreSQL</span> &#1576;&#1607; &#1670;&#1607; &#1589;&#1608;&#1585;&#1578; &#1575;&#1587;&#1578;&#1567;</font></H4>
-<p dir="rtl"><font face="Tahoma"><span lang="en-us">PostgreSQL</span> &#1578;&#1581;&#1578; &#1602;&#1575;&#1606;&#1608;&#1606; 
-&#1603;&#1662;&#1610; &#1585;&#1575;&#1610;&#1578; &#1586;&#1610;&#1585; &#1602;&#1585;&#1575;&#1585; &#1583;&#1575;&#1585;&#1583;:</font></p>
+href="http://www.postgresql.org/docs/faqs/FAQ_DEV.html">
+http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html</A> 
+مراجعه كنيد.</font></P>
+<P dir="rtl"><font face="Tahoma">اولين نسخه <span lang="en-us">PostgreSQL</span>‌ 
+توسط Andrew Yu and Jolly Chen به وجود آمد. افراد بسياري در توسعه و رفع اشكال و 
+انتقال آن شركت كرده‌اند. متن اصلي <span lang="en-us">Postgres</span> كه
+<span lang="en-us">PostgreSQL</span> از روي آن نوشته شده است، توسط تعداد زيادي 
+دانشجوي كارشناسي ارشدو دانشجوي كارشناسي و تيم برنامه‌نويسي كه تحت نظر پروفسور 
+Michael Stonebrake در دانشگاه بركلي،‌كاليفرنيا كار مي‌كرده‌اند نوشته شده است.</font></P>
+<P dir="rtl"><font face="Tahoma">نام اصلي نرم افزار در دانشگاه بركلي
+<span lang="en-us">Postgres</span>‌ بود. در سال 1995 بعد از اضافه شدن
+<span lang="en-us">SQL</span> نام آن به<span lang="en-us"> Postgres95</span> 
+تغيير داده شد.<span lang="en-us"> </span>در سال 1996 نام آن به
+<span lang="en-us">PostgreSQL</span> تغيير داده شد.</font></P>
+<H4 dir="rtl"><font face="Tahoma"><A name=1.2>1.2</A>) قوانين كپي رايت در مورد
+<span lang="en-us">PostgreSQL</span> به چه صورت است؟</font></H4>
+<p dir="rtl"><font face="Tahoma"><span lang="en-us">PostgreSQL</span> تحت قانون 
+كپي رايت زير قرار دارد:</font></p>
 <P dir="ltr"><font face="Tahoma">PostgreSQL Data Base Management System</font></P>
-<P dir="ltr"><font face="Tahoma">Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group 
-Portions Copyright (c) 1994-6 Regents of the University of California</font></P>
-<P dir="ltr"><font face="Tahoma">Permission to use, copy, modify, and distribute this software and its 
-documentation for any purpose, without fee, and without a written agreement is 
-hereby granted, provided that the above copyright notice and this paragraph and 
-the following two paragraphs appear in all copies.</font></P>
-<P dir="ltr"><font face="Tahoma">IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR 
-DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST 
-PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF 
-THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 
-DAMAGE.</font></P>
-<P dir="ltr"><font face="Tahoma">THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, 
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS 
-IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE 
-MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.</font></P>
-<P dir="rtl"><font face="Tahoma">&#1602;&#1575;&#1606;&#1608;&#1606; &#1576;&#1575;&#1604;&#1575; &#1604;&#1610;&#1587;&#1575;&#1606;&#1587; <span lang="en-us">BSD</span> 
-&#1603;&#1607; &#1610;&#1603; &#1604;&#1610;&#1587;&#1575;&#1606;&#1587; &#1603;&#1604;&#1575;&#1587;&#1610;&#1603; &#1576;&#1585;&#1575;&#1610; &#1605;&#1578;&#1606;&#8204;&#1607;&#1575;&#1610; &#1576;&#1575;&#1586; &#1575;&#1587;&#1578; &#1605;&#1610;&#8204;&#1576;&#1575;&#1588;&#1583;. &#1607;&#1610;&#1670; &#1605;&#1581;&#1583;&#1608;&#1583;&#1610;&#1578;&#1610; &#1583;&#1585; &#1605;&#1608;&#1585;&#1583; &#1606;&#1581;&#1608;&#1607; 
-&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1605;&#1578;&#1606; &#1583;&#1585; &#1570;&#1606; &#1583;&#1610;&#1583;&#1607; &#1606;&#1605;&#1610;&#8204;&#1588;&#1608;&#1583;. &#1605;&#1575; &#1570;&#1606; &#1585;&#1575; &#1583;&#1608;&#1587;&#1578; &#1583;&#1575;&#1585;&#1610;&#1605; &#1608; &#1607;&#1610;&#1670; &#1602;&#1589;&#1583;&#1610; &#1576;&#1585;&#1575;&#1610; &#1578;&#1594;&#1610;&#1610;&#1585; &#1570;&#1606; 
-&#1606;&#1583;&#1575;&#1585;&#1610;&#1605;.</font></P>
-<H4 dir="rtl"><font face="Tahoma"><A name=1.3>1.3</A>) PostgreSQL</font><span lang="fa"><font face="Tahoma">&#8204; &#1585;&#1608;&#1610; &#1670;&#1607; &#1606;&#1608;&#1593; 
-&#1610;&#1608;&#1606;&#1610;&#1603;&#1587;&#1607;&#1575;&#1610;&#1610; &#1575;&#1580;&#1585;&#1575; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583;&#1567;</font></span></H4>
-<p dir="rtl"><font face="Tahoma">&#1583;&#1585; &#1581;&#1575;&#1604;&#1578; &#1603;&#1604;&#1610; <span lang="en-us">PostgreSQL</span> 
-&#1585;&#1608;&#1610; &#1607;&#1585; &#1662;&#1604;&#1578;&#1601;&#1585;&#1605; (&#1587;&#1603;&#1608;&#1610;) &#1587;&#1575;&#1586;&#1711;&#1575;&#1585; &#1576;&#1575; &#1610;&#1608;&#1606;&#1610;&#1603;&#1587; &#1575;&#1580;&#1585;&#1575; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583;. &#1604;&#1610;&#1587;&#1578; &#1662;&#1604;&#1578;&#1601;&#1585;&#1605;&#1607;&#1575;&#1610;&#1610; &#1603;&#1607; &#1578;&#1575;&#1603;&#1606;&#1608;&#1606;
-<span lang="en-us">PostgreSQL</span>&#8204; &#1585;&#1608;&#1610; &#1570;&#1606;&#1607;&#1575; &#1606;&#1589;&#1576; &#1608; &#1578;&#1587;&#1578; &#1588;&#1583;&#1607; &#1575;&#1587;&#1578; &#1583;&#1585;&#1602;&#1587;&#1605;&#1578; 
-&#1583;&#1587;&#1578;&#1608;&#1585;&#1575;&#1604;&#1593;&#1605;&#1604;&#1607;&#1575;&#1610; &#1606;&#1589;&#1576; &#1570;&#1605;&#1583;&#1607; &#1575;&#1587;&#1578;.</font></p>
-<H4 dir="rtl"><font face="Tahoma"><A name=1.4>1.4</A>) </font><span lang="fa"><font face="Tahoma">&#1585;&#1608;&#1610; &#1670;&#1607; &#1605;&#1581;&#1610;&#1591;&#1607;&#1575;&#1610; &#1594;&#1610;&#1585; &#1610;&#1608;&#1606;&#1610;&#1603;&#1587;&#1610; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606; &#1570;&#1606; 
-&#1585;&#1575; &#1575;&#1580;&#1585;&#1575; &#1603;&#1585;&#1583;&#1567;</font></span></H4>
+<P dir="ltr"><font face="Tahoma">Portions copyright (c) 1996-2004, PostgreSQL 
+Global Development Group Portions Copyright (c) 1994-6 Regents of the University 
+of California</font></P>
+<P dir="ltr"><font face="Tahoma">Permission to use, copy, modify, and distribute 
+this software and its documentation for any purpose, without fee, and without a 
+written agreement is hereby granted, provided that the above copyright notice 
+and this paragraph and the following two paragraphs appear in all copies.</font></P>
+<P dir="ltr"><font face="Tahoma">IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA 
+BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR 
+CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS 
+SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN 
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</font></P>
+<P dir="ltr"><font face="Tahoma">THE UNIVERSITY OF CALIFORNIA SPECIFICALLY 
+DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED 
+HEREUNDER IS ON AN &quot;AS IS&quot; BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO 
+OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR 
+MODIFICATIONS.</font></P>
+<P dir="rtl"><font face="Tahoma">قانون بالا ليسانس <span lang="en-us">BSD</span> 
+كه يك ليسانس كلاسيك براي متن‌هاي باز است مي‌باشد. هيچ محدوديتي در مورد نحوه 
+استفاده از متن در آن ديده نمي‌شود. ما آن را دوست داريم و هيچ قصدي براي تغيير آن 
+نداريم.</font></P>
+<H4 dir="rtl"><font face="Tahoma"><A name=1.3>1.3</A>) PostgreSQL</font><span lang="fa"><font face="Tahoma">‌ 
+روي چه نوع يونيكسهايي اجرا مي‌شود؟</font></span></H4>
+<p dir="rtl"><font face="Tahoma">در حالت كلي <span lang="en-us">PostgreSQL</span> 
+روي هر پلتفرم (سكوي) سازگار با يونيكس اجرا مي‌شود. ليست پلتفرمهايي كه تاكنون
+<span lang="en-us">PostgreSQL</span>‌ روي آنها نصب و تست شده است درقسمت 
+دستورالعملهاي نصب آمده است.</font></p>
+<H4 dir="rtl"><font face="Tahoma"><A name=1.4>1.4</A>) </font><span lang="fa"><font face="Tahoma">
+روي چه محيطهاي غير يونيكسي مي‌توان آن را اجرا كرد؟</font></span></H4>
 <P dir="rtl"><font face="Tahoma"><STRONG>Client</STRONG></font></P>
-<P dir="rtl"><font face="Tahoma">&#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606; <span lang="en-us">psql, </span>
-&#1603;&#1578;&#1575;&#1576;&#1582;&#1575;&#1606;&#1607; <span lang="en-us">libpq</span> &#1608; &#1587;&#1575;&#1610;&#1585; &#1608;&#1575;&#1587;&#1591;&#1607;&#1575; &#1608; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607;&#8204;&#1607;&#1575;&#1610; &#1603;&#1575;&#1585;&#1576;&#1585;&#1583;&#1610; &#1585;&#1575; 
-&#1591;&#1608;&#1585;&#1610; &#1603;&#1575;&#1605;&#1662;&#1610;&#1604; &#1603;&#1585;&#1583; &#1603;&#1607; &#1585;&#1608;&#1610; &#1605;&#1581;&#1610;&#1591;&#1607;&#1575;&#1610; &#1608;&#1610;&#1606;&#1583;&#1608;&#1586; &#1606;&#1610;&#1586; &#1575;&#1580;&#1585;&#1575; &#1588;&#1608;&#1606;&#1583;. &#1583;&#1585; &#1575;&#1610;&#1606; &#1581;&#1575;&#1604;&#1578;
-<span lang="en-us">Client</span> &#1585;&#1608;&#1610; &#1608;&#1610;&#1606;&#1583;&#1608;&#1586; &#1575;&#1580;&#1585;&#1575; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583; &#1608; &#1575;&#1586; &#1591;&#1585;&#1576;&#1602; &#1588;&#1576;&#1603;&#1607; &#1608; &#1662;&#1585;&#1608;&#1578;&#1603;&#1604;
-<span lang="en-us">TCP/IP</span> &#1576;&#1575; &#1610;&#1603; &#1587;&#1585;&#1608;&#1585; &#1603;&#1607; &#1585;&#1608;&#1610; &#1610;&#1603; &#1662;&#1604;&#1578;&#1601;&#1585;&#1605; &#1604;&#1610;&#1606;&#1608;&#1603;&#1587; &#1583;&#1585; &#1581;&#1575;&#1604; 
-&#1575;&#1580;&#1585;&#1575;&#1587;&#1578; &#1575;&#1585;&#1578;&#1576;&#1575;&#1591; &#1576;&#1585;&#1602;&#1585;&#1575;&#1585; &#1605;&#1610;&#8204;&#1603;&#1606;&#1583;.&#1610;&#1603; &#1601;&#1575;&#1610;&#1604; <span lang="en-us">win32.mak</span> &#1607;&#1605;&#1585;&#1575;&#1607; &#1576;&#1575; 
-&#1603;&#1583;&#1607;&#1575;&#1610; <span lang="en-us">PostgreSQL</span> &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583; &#1603;&#1607; &#1576;&#1585;&#1575;&#1610; &#1603;&#1575;&#1605;&#1662;&#1610;&#1604; &#1603;&#1585;&#1583;&#1606; 
-&#1603;&#1578;&#1575;&#1576;&#1582;&#1575;&#1606;&#1607; <span lang="en-us">libpq</span> &#1608; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; <span lang="en-us">psql</span> 
-&#1605;&#1610;&#8204;&#1576;&#1575;&#1588;&#1583;. <span lang="en-us">P</span>&#8204;<span lang="en-us">ostgreSQL</span>&#8204; &#1607;&#1605;&#1670;&#1606;&#1610;&#1606; 
-&#1575;&#1605;&#1603;&#1575;&#1606; &#1575;&#1585;&#1578;&#1576;&#1575;&#1591; &#1576;&#1607; &#1589;&#1608;&#1585;&#1578; <span lang="en-us">ODBC</span>&#8204;&nbsp; &#1585;&#1575; &#1606;&#1610;&#1586; &#1583;&#1575;&#1585;&#1583;.</font></P>
+<P dir="rtl"><font face="Tahoma">مي‌توان <span lang="en-us">psql, </span>
+كتابخانه <span lang="en-us">libpq</span> و ساير واسطها و برنامه‌هاي كاربردي را 
+طوري كامپيل كرد كه روي محيطهاي ويندوز نيز اجرا شوند. در اين حالت
+<span lang="en-us">Client</span> روي ويندوز اجرا مي‌شود و از طربق شبكه و پروتكل
+<span lang="en-us">TCP/IP</span> با يك سرور كه روي يك پلتفرم لينوكس در حال 
+اجراست ارتباط برقرار مي‌كند.يك فايل <span lang="en-us">win32.mak</span> همراه با 
+كدهاي <span lang="en-us">PostgreSQL</span> وجود دارد كه براي كامپيل كردن 
+كتابخانه <span lang="en-us">libpq</span> و برنامه <span lang="en-us">psql</span> 
+مي‌باشد. <span lang="en-us">P</span>‌<span lang="en-us">ostgreSQL</span>‌ همچنين 
+امكان ارتباط به صورت <span lang="en-us">ODBC</span>‌&nbsp; را نيز دارد.</font></P>
 <P dir="rtl"><font face="Tahoma"><STRONG>Server</STRONG></font></P>
-<P dir="rtl"><strong style="font-weight: 400"><font face="Tahoma">&#1576;&#1575; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586;
-<span lang="en-us">Cygwin</span>&#8204; &#1608; &#1603;&#1578;&#1575;&#1576;&#1582;&#1575;&#1606;&#1607; <span lang="en-us">Cygnus</span> 
-&#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1585;&#1575; &#1585;&#1608;&#1610; &#1608;&#1610;&#1606;&#1583;&#1608;&#1586; <span lang="en-us">NT</span> &#1608; &#1610;&#1575;
-<span lang="en-us">Win2K</span> &#1575;&#1580;&#1585;&#1575; &#1603;&#1585;&#1583;.&#1576;&#1585;&#1575;&#1610; &#1583;&#1610;&#1583;&#1606; &#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578; &#1576;&#1610;&#1588;&#1578;&#1585; &#1601;&#1575;&#1610;&#1604;<span lang="en-us">
+<P dir="rtl"><strong style="font-weight: 400"><font face="Tahoma">با استفاده از
+<span lang="en-us">Cygwin</span>‌ و كتابخانه <span lang="en-us">Cygnus</span> 
+مي‌توان پايگاه داده را روي ويندوز <span lang="en-us">NT</span> و يا
+<span lang="en-us">Win2K</span> اجرا كرد.براي ديدن اطلاعات بيشتر فايل<span lang="en-us">
 </span></font></strong><font face="Tahoma"> <I>pgsql/doc/FAQ_MSWIN<span lang="en-us">
-</span>&#8204;</I>&#1585;&#1575; &#1603;&#1607; &#1576;&#1607;&#1605;&#1585;&#1575;&#1607; &#1578;&#1608;&#1586;&#1576;&#1593;&#8204;&#1607;&#1575;&#1610; <span lang="en-us">PostgreSQL</span> &#1570;&#1605;&#1583;&#1607; &#1575;&#1587;&#1578; 
-&#1576;&#1576;&#1610;&#1606;&#1610;&#1583; &#1608; &#1610;&#1575; &#1575;&#1610;&#1606;&#1603;&#1607; &#1576;&#1607; &#1575;&#1610;&#1606; &#1589;&#1601;&#1581;&#1607; <A 
-href="http://www.postgresql.org/docs/faqs/text/FAQ_MSWIN">http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN</A> 
-&#1605;&#1585;&#1575;&#1580;&#1593;&#1607; &#1603;&#1606;&#1610;&#1583;.</font></P>
-<P dir="rtl"><font face="Tahoma">&#1583;&#1585; &#1581;&#1575;&#1604; &#1581;&#1575;&#1590;&#1585; &#1610;&#1603; &#1593;&#1605;&#1604;&#1610;&#1575;&#1578; &#1575;&#1606;&#1578;&#1602;&#1575;&#1604; <span lang="en-us">
-PostgreSQL</span> &#1576;&#1607; &#1585;&#1608;&#1610; &#1587;&#1603;&#1608;&#1607;&#1575;&#1610; <span lang="en-us">Win NT/2000/XP</span> &#1583;&#1585; 
-&#1580;&#1585;&#1610;&#1575;&#1606; &#1575;&#1587;&#1578;. &#1576;&#1585;&#1575;&#1610; &#1583;&#1610;&#1583;&#1606; &#1608;&#1590;&#1593;&#1610;&#1578; &#1575;&#1610;&#1606; &#1662;&#1585;&#1608;&#1688;&#1607; &#1576;&#1607; &#1587;&#1575;&#1610;&#1578;&#8204;&#1607;&#1575;&#1610; <A 
+</span>‌</I>را كه بهمراه توزبع‌هاي <span lang="en-us">PostgreSQL</span> آمده است 
+ببينيد و يا اينكه به اين صفحه <A 
+href="http://www.postgresql.org/docs/faqs/text/FAQ_MSWIN">
+http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN</A> 
+مراجعه كنيد.</font></P>
+<P dir="rtl"><font face="Tahoma">در حال حاضر يك عمليات انتقال <span lang="en-us">
+PostgreSQL</span> به روي سكوهاي <span lang="en-us">Win NT/2000/XP</span> در 
+جريان است. براي ديدن وضعيت اين پروژه به سايت‌هاي <A 
 href="http://momjian.postgresql.org/main/writings/pgsql/win32.html">
-http://momjian.postgresql.org/main/writings/pgsql/win32.htm</A> &#1608; <A 
-href="http://techdocs.postgresql.org/guides/Windows">http://techdocs.postgresql.org/guides/Windows</A> 
-&#1605;&#1585;&#1575;&#1580;&#1593;&#1607; &#1603;&#1606;&#1610;&#1583;. </font></P>
-<P dir="rtl"><font face="Tahoma">&#1607;&#1605;&#1670;&#1606;&#1610;&#1606; &#1610;&#1603; &#1593;&#1605;&#1604;&#1610;&#1575;&#1578; &#1575;&#1606;&#1578;&#1602;&#1575;&#1604; &#1576;&#1585; &#1585;&#1608;&#1610;
-<span lang="en-us">Novell Netware 6</span> &#1606;&#1610;&#1586; &#1583;&#1585; &#1581;&#1575;&#1604; &#1575;&#1606;&#1580;&#1575;&#1605; &#1575;&#1587;&#1578; &#1603;&#1607; &#1583;&#1585; &#1587;&#1575;&#1610;&#1578; <A 
-href="http://forge.novell.com/">http://forge.novell.com</A> &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1610;&#1583; &#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578; 
-&#1576;&#1610;&#1588;&#1578;&#1585; &#1585;&#1575; &#1576;&#1576;&#1610;&#1606;&#1610;&#1583;.</font></P>
+http://momjian.postgresql.org/main/writings/pgsql/win32.htm</A> و <A 
+href="http://techdocs.postgresql.org/guides/Windows">
+http://techdocs.postgresql.org/guides/Windows</A> 
+مراجعه كنيد. </font></P>
+<P dir="rtl"><font face="Tahoma">همچنين يك عمليات انتقال بر روي
+<span lang="en-us">Novell Netware 6</span> نيز در حال انجام است كه در سايت <A 
+href="http://forge.novell.com/">http://forge.novell.com</A> مي‌توانيد اطلاعات 
+بيشتر را ببينيد.</font></P>
 <H4 dir="rtl"><font face="Tahoma"><A name=1.5>1.5</A>) PostgreSQL</font><span lang="fa"><font face="Tahoma"> 
-&#1585;&#1575; &#1575;&#1586; &#1603;&#1580;&#1575; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1576;&#1711;&#1610;&#1585;&#1605;&#1567;</font></span></H4>
-<p dir="rtl"><font face="Tahoma"><span lang="en-us">PostgreSQL</span>&#8204; &#1585;&#1575; &#1575;&#1586; 
-&#1587;&#1575;&#1610;&#1578; &#1575;&#1589;&#1604;&#1610; &#1570;&#1606;&nbsp; <A 
-href="ftp://ftp.postgresql.org/pub">ftp://ftp.PostgreSQL.org/pub</A> &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1610;&#1583; 
-&#1576;&#1711;&#1610;&#1585;&#1610;&#1583;. &#1583;&#1585; &#1589;&#1601;&#1581;&#1607; &#1575;&#1589;&#1604;&#1610; &#1587;&#1575;&#1610;&#1578; &#1604;&#1610;&#1587;&#1578; &#1587;&#1575;&#1610;&#1585; &#1570;&#1583;&#1585;&#1587;&#1607;&#1575;&#1610;&#1610; &#1603;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1610;&#1583; <span lang="en-us">
-PostgreSQL</span>&#8204; &#1585;&#1575; &#1575;&#1586; &#1570;&#1606;&#1607;&#1575; &#1576;&#1711;&#1610;&#1585;&#1610;&#1583; &#1570;&#1605;&#1583;&#1607; &#1575;&#1587;&#1578;.</font></p>
-<H4 dir="rtl"><font face="Tahoma"><A name=1.6>1.6</A>) </font><span lang="fa"><font face="Tahoma">&#1575;&#1586; &#1603;&#1580;&#1575; &#1582;&#1583;&#1605;&#1575;&#1578; &#1662;&#1588;&#1578;&#1610;&#1576;&#1575;&#1606;&#1610; &#1576;&#1711;&#1610;&#1585;&#1605;&#1567;</font></span></H4>
-<p dir="rtl"><font face="Tahoma">&#1711;&#1585;&#1608;&#1607; &#1662;&#1587;&#1578;&#1610; &#1575;&#1589;&#1604;&#1610; <A 
+را از كجا مي‌توانم بگيرم؟</font></span></H4>
+<p dir="rtl"><font face="Tahoma"><span lang="en-us">PostgreSQL</span>‌ را از 
+سايت اصلي آن&nbsp; <A 
+href="ftp://ftp.postgresql.org/pub">ftp://ftp.PostgreSQL.org/pub</A> مي‌توانيد 
+بگيريد. در صفحه اصلي سايت ليست ساير آدرسهايي كه مي‌توانيد <span lang="en-us">
+PostgreSQL</span>‌ را از آنها بگيريد آمده است.</font></p>
+<H4 dir="rtl"><font face="Tahoma"><A name=1.6>1.6</A>) </font><span lang="fa"><font face="Tahoma">
+از كجا خدمات پشتيباني بگيرم؟</font></span></H4>
+<p dir="rtl"><font face="Tahoma">گروه پستي اصلي <A 
 href="mailto:pgsql-general@PostgreSQL.org">pgsql-general@PostgreSQL.org</A> 
-&#1605;&#1610;&#8204;&#1576;&#1575;&#1588;&#1583;. &#1575;&#1610;&#1606; &#1711;&#1585;&#1608;&#1607; &#1576;&#1585;&#1575;&#1610; &#1576;&#1581;&#1579; &#1583;&#1585; &#1605;&#1608;&#1585;&#1583; &#1605;&#1608;&#1590;&#1608;&#1593;&#1575;&#1578; &#1605;&#1582;&#1578;&#1604;&#1601; &#1583;&#1585; &#1586;&#1605;&#1610;&#1606;&#1607; <span lang="en-us">
-PostgreSQL</span> &#1575;&#1587;&#1578;. &#1576;&#1585;&#1575;&#1610; &#1593;&#1590;&#1608; &#1588;&#1583;&#1606; &#1583;&#1585; &#1575;&#1610;&#1606; &#1711;&#1585;&#1608;&#1607; &#1662;&#1587;&#1578;&#1610; &#1610;&#1603; &#1606;&#1575;&#1605;&#1607; &#1575;&#1604;&#1603;&#1578;&#1585;&#1608;&#1606;&#1610;&#1603;&#1610; 
-&#1576;&#1607; &#1570;&#1583;&#1585;&#1587; &#1711;&#1585;&#1608;&#1607; &#1576;&#1575; 
-&#1605;&#1581;&#1578;&#1608;&#1610;&#1575;&#1578;&#1740; &#1603;&#1607; &#1583;&#1585; &#1575;&#1583;&#1575;&#1605;&#1607; &#1570;&#1605;&#1583;&#1607; &#1575;&#1587;&#1578; &#1575;&#1585;&#1587;&#1575;&#1604; &#1603;&#1606;&#1610;&#1583;. &#1583;&#1585; &#1602;&#1587;&#1605;&#1578; <span lang="en-us">
-Subject</span> &#1670;&#1610;&#1586;&#1610; &#1606;&#1606;&#1608;&#1610;&#1587;&#1610;&#1583;.</font></p>
+مي‌باشد. اين گروه براي بحث در مورد موضوعات مختلف در زمينه <span lang="en-us">
+PostgreSQL</span> است. براي عضو شدن در اين گروه پستي يك نامه الكترونيكي به آدرس 
+گروه با محتوياتی كه در ادامه آمده است ارسال كنيد. در قسمت <span lang="en-us">
+Subject</span> چيزي ننويسيد.</font></p>
 <div dir="rtl">
 	<PRE><font face="Tahoma">    subscribe
     end
 </font></PRE>
 </div>
-<P dir="rtl"><font face="Tahoma">&#1570;&#1583;&#1585;&#1587; &#1711;&#1585;&#1608;&#1607;: <A 
-href="mailto:pgsql-general-request@PostgreSQL.org">pgsql-general-request@PostgreSQL.org</A></font></P>
-<P dir="rtl"><font face="Tahoma">&#1607;&#1605;&#1670;&#1606;&#1610;&#1606; &#1610;&#1603; &#1711;&#1585;&#1608;&#1607; &#1662;&#1587;&#1578;&#1610; &#1607;&#1605; &#1576;&#1607; &#1589;&#1608;&#1585;&#1578; &#1575;&#1585;&#1587;&#1575;&#1604; &#1670;&#1603;&#1610;&#1583;&#1607; 
-&#1662;&#1610;&#1575;&#1605;&#1607;&#1575; &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;. &#1576;&#1585;&#1575;&#1610; &#1593;&#1590;&#1608; &#1588;&#1583;&#1606; &#1583;&#1585; &#1575;&#1610;&#1606; &#1711;&#1585;&#1608;&#1607; &#1610;&#1603; &#1606;&#1575;&#1605;&#1607; &#1576;&#1575; &#1605;&#1581;&#1578;&#1608;&#1610;&#1575;&#1578; &#1586;&#1610;&#1585; &#1576;&#1607; 
-&#1575;&#1740;&#1606; &#1570;&#1583;&#1585;&#1587;&nbsp; 
-&#1575;&#1585;&#1587;&#1575;&#1604; &#1603;&#1606;&#1610;&#1583;. <A 
-href="mailto:pgsql-general-digest-request@PostgreSQL.org">pgsql-general-digest-request@PostgreSQL.org</A> 
+<P dir="rtl"><font face="Tahoma">آدرس گروه: <A 
+href="mailto:pgsql-general-request@PostgreSQL.org">
+pgsql-general-request@PostgreSQL.org</A></font></P>
+<P dir="rtl"><font face="Tahoma">همچنين يك گروه پستي هم به صورت ارسال چكيده 
+پيامها وجود دارد. براي عضو شدن در اين گروه يك نامه با محتويات زير به این آدرس&nbsp; 
+ارسال كنيد. <A 
+href="mailto:pgsql-general-digest-request@PostgreSQL.org">
+pgsql-general-digest-request@PostgreSQL.org</A> 
 </font></P>
 <div dir="rtl">
 	<PRE><font face="Tahoma">    subscribe
     end
 </font></PRE></div>
-<p dir="rtl"><font face="Tahoma">&#1583;&#1585; &#1575;&#1610;&#1606; &#1711;&#1585;&#1608;&#1607; &#1607;&#1585; &#1605;&#1608;&#1602;&#1593; &#1581;&#1580;&#1605; &#1606;&#1575;&#1605;&#1607;&#8204;&#1607;&#1575; &#1576;&#1607; 30 &#1603;&#1610;&#1604;&#1608;&#1576;&#1575;&#1610;&#1578; 
-&#1585;&#1587;&#1610;&#1583; &#1576;&#1585;&#1575;&#1610; &#1578;&#1605;&#1575;&#1605; &#1575;&#1593;&#1590;&#1575;&#1569; &#1575;&#1585;&#1587;&#1575;&#1604; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583;.</font></p>
-<p dir="rtl"><font face="Tahoma">&#1711;&#1585;&#1608;&#1607; &#1662;&#1587;&#1578;&#1610; &#1576;&#1585;&#1585;&#1587;&#1610; &#1575;&#1616;&#1588;&#1603;&#1575;&#1604;&#1575;&#1578; &#1607;&#1605; &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;. &#1576;&#1585;&#1575;&#1610; &#1593;&#1590;&#1608; 
-&#1588;&#1583;&#1606; &#1583;&#1585; &#1575;&#1610;&#1606; &#1711;&#1585;&#1608;&#1607; &#1610;&#1603; &#1606;&#1575;&#1605;&#1607; &#1576;&#1575; &#1605;&#1581;&#1578;&#1608;&#1610;&#1575;&#1578; &#1586;&#1610;&#1585; &#1576;&#1607; 
+<p dir="rtl"><font face="Tahoma">در اين گروه هر موقع حجم نامه‌ها به 30 كيلوبايت 
+رسيد براي تمام اعضاء ارسال مي‌شود.</font></p>
+<p dir="rtl"><font face="Tahoma">گروه پستي بررسي اِشكالات هم وجود دارد. براي عضو 
+شدن در اين گروه يك نامه با محتويات زير به 
 <A 
-href="mailto:pgsql-bugs-request@PostgreSQL.org">pgsql-bugs-request@PostgreSQL.org</A> 
-&#1575;&#1585;&#1587;&#1575;&#1604; &#1603;&#1606;&#1610;&#1583;.</font></p>
+href="mailto:pgsql-bugs-request@PostgreSQL.org">
+pgsql-bugs-request@PostgreSQL.org</A> 
+ارسال كنيد.</font></p>
 <div dir="rtl">
 	<PRE><font face="Tahoma">    subscribe
     end
 </font></PRE></div>
-<P dir="rtl"><font face="Tahoma" size="3">&#1711;&#1585;&#1608;&#1607; &#1662;&#1587;&#1578;&#1610; &#1605;&#1582;&#1589;&#1608;&#1589; &#1578;&#1608;&#1587;&#1593;&#1607; &#1583;&#1607;&#1606;&#1583;&#1711;&#1575;&#1606; 
-(&#1576;&#1585;&#1606;&#1575;&#1605;&#1607;&#8204;&#1606;&#1608;&#1610;&#1587;&#1575;&#1606;) &#1606;&#1610;&#1586; &#1608;&#1580;&#1608;&#1583;&#1583;&#1575;&#1585;&#1583;. &#1576;&#1585;&#1575;&#1610; &#1593;&#1590;&#1608;&#1610;&#1578; &#1583;&#1585; &#1575;&#1610;&#1606; &#1711;&#1585;&#1608;&#1607; &#1610;&#1603; &#1606;&#1575;&#1605;&#1607; &#1576;&#1607; &#1570;&#1583;&#1585;&#1587; &#1586;&#1610;&#1585; &#1576;&#1575; 
-&#1605;&#1581;&#1578;&#1608;&#1610;&#1575;&#1578; &#1605;&#1588;&#1582;&#1589; &#1588;&#1583;&#1607; &#1575;&#1585;&#1587;&#1575;&#1604; &#1603;&#1606;&#1610;&#1583;.&nbsp; </font><font face="Tahoma">
+<P dir="rtl"><font face="Tahoma" size="3">گروه پستي مخصوص توسعه دهندگان (برنامه‌نويسان) 
+نيز وجوددارد. براي عضويت در اين گروه يك نامه به آدرس زير با محتويات مشخص شده 
+ارسال كنيد.&nbsp; </font><font face="Tahoma">
 <A 
 href="mailto:pgsql-hackers-request@PostgreSQL.org"><font size="3">pgsql-hackers-request@PostgreSQL.org</font></A><span lang="en-us">
 </span>&nbsp;</font></p>
@@ -391,280 +397,293 @@ href="mailto:pgsql-hackers-request@PostgreSQL.org"><font size="3">pgsql-hackers-
     end
 </font></PRE>
 </div>
-<p dir="rtl"><font face="Tahoma">&#1711;&#1585;&#1608;&#1607;&#1607;&#1575;&#1610; &#1662;&#1587;&#1578;&#1610; &#1583;&#1610;&#1711;&#1585;&#1610; &#1606;&#1610;&#1586; &#1583;&#1585; &#1586;&#1605;&#1610;&#1606;&#1607;
-<span lang="en-us">PostgreSQL</span>&#8204; &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;&nbsp; &#1603;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1610;&#1583; &#1583;&#1585; &#1587;&#1575;&#1610;&#1578; <A 
-  href="http://www.postgresql.org/">http://www.postgresql.org</A> &#1576;&#1576;&#1610;&#1606;&#1610;&#1583;.</font></p>
-<p dir="rtl"><font face="Tahoma">&#1607;&#1605;&#1670;&#1606;&#1610;&#1606; &#1610;&#1603; &#1603;&#1575;&#1606;&#1575;&#1604; <span lang="en-us">IRC</span> 
-&#1585;&#1608;&#1610; <span lang="en-us">Freenode</span> &#1608; <span lang="en-us">EFNet</span> &#1576;&#1606;&#1575;&#1605; <I>PostgreSQL<span lang="en-us">#</span> </I>
-&#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;. &#1588;&#1605;&#1575; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1610;&#1583; &#1575;&#1586; &#1601;&#1585;&#1605;&#1575;&#1606; &#1610;&#1608;&#1606;&#1610;&#1603;&#1587;&#1610; </font> <CODE>
-<font face="Tahoma">irc -c '#PostgreSQL' 
-"$USER&quot; irc.phoenix.net.</font></CODE><font face="Tahoma"> &#1610;&#1575; </font> <CODE>
-<font face="Tahoma">irc -c '#PostgreSQL' &quot;$USER&quot; irc.freenode.net<span lang="en-us">
-</span>&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1603;&#1606;&#1610;&#1583;.</font></CODE></p>
-<p dir="rtl"><font face="Tahoma">&#1604;&#1610;&#1587;&#1578; &#1588;&#1585;&#1603;&#1578;&#1607;&#1575;&#1610;&#1610; &#1603;&#1607; &#1575;&#1586; &#1591;&#1585;&#1610;&#1602; &#1570;&#1606;&#1607;&#1575; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1610;&#1583; &#1582;&#1583;&#1605;&#1575;&#1578; 
-&#1662;&#1588;&#1578;&#1610;&#1576;&#1575;&#1606;&#1610; &#1578;&#1580;&#1575;&#1585;&#1610; &#1583;&#1585; &#1586;&#1605;&#1610;&#1606;&#1607; <span lang="en-us">PostgreSQL</span> &#1583;&#1585;&#1610;&#1575;&#1601;&#1578; &#1603;&#1606;&#1610;&#1583; &#1583;&#1585; &#1575;&#1610;&#1606; 
-&#1570;&#1583;&#1585;&#1587; <A 
-href="http://techdocs.postgresql.org/companies.php">http://techdocs.postgresql.org/companies.php</A></font><code><font face="Tahoma"> 
-&#1605;&#1608;&#1580;&#1608;&#1583; &#1575;&#1587;&#1578;.</font></code></p>
+<p dir="rtl"><font face="Tahoma">گروههاي پستي ديگري نيز در زمينه
+<span lang="en-us">PostgreSQL</span>‌ وجود دارد&nbsp; كه مي‌توانيد در سايت <A 
+  href="http://www.postgresql.org/">http://www.postgresql.org</A> ببينيد.</font></p>
+<p dir="rtl"><font face="Tahoma">همچنين يك كانال <span lang="en-us">IRC</span> 
+روي <span lang="en-us">Freenode</span> و <span lang="en-us">EFNet</span> بنام <I>
+PostgreSQL<span lang="en-us">#</span> </I>
+وجود دارد. شما مي‌توانيد از فرمان يونيكسي </font> <CODE>
+<font face="Tahoma">irc -c &#39;#PostgreSQL&#39; &quot;$USER&quot; irc.phoenix.net.</font></CODE><font face="Tahoma"> 
+يا </font> <CODE>
+<font face="Tahoma">irc -c &#39;#PostgreSQL&#39; &quot;$USER&quot; irc.freenode.net<span lang="en-us">
+</span>استفاده كنيد.</font></CODE></p>
+<p dir="rtl"><font face="Tahoma">ليست شركتهايي كه از طريق آنها مي‌توانيد خدمات 
+پشتيباني تجاري در زمينه <span lang="en-us">PostgreSQL</span> دريافت كنيد در اين 
+آدرس <A 
+href="http://techdocs.postgresql.org/companies.php">
+http://techdocs.postgresql.org/companies.php</A></font><code><font face="Tahoma"> 
+موجود است.</font></code></p>
 <H4 dir="rtl"><font face="Tahoma"><A name=1.7>1.7</A>) </font><span lang="fa"><font face="Tahoma"> 
-&#1570;&#1582;&#1585;&#1610;&#1606; &#1606;&#1587;&#1582;&#1607; &#1575;&#1593;&#1604;&#1575;&#1605; &#1588;&#1583;&#1607; &#1670;&#1610;&#1587;&#1578;&#1567;</font></span></H4>
-<p dir="rtl"><font face="Tahoma">&#1570;&#1582;&#1585;&#1610;&#1606; &#1606;&#1587;&#1582;&#1607; <span lang="en-us">PostgreSQL</span>&#8204;<span lang="en-us">
-</span>&nbsp;&#1603;&#1607; &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583; 7.4.3 &#1575;&#1587;&#1578;.</font></p>
-<p dir="rtl"><font face="Tahoma">&#1607;&#1583;&#1601; &#1605;&#1575; &#1570;&#1606; &#1575;&#1587;&#1578; &#1603;&#1607; &#1607;&#1585; 6 &#1605;&#1575;&#1607; &#1578;&#1575; 8 &#1605;&#1575;&#1607; &#1610;&#1603; &#1606;&#1587;&#1582;&#1607; &#1580;&#1583;&#1610;&#1583; 
-&#1575;&#1585;&#1575;&#1574;&#1607; &#1588;&#1608;&#1583;.</font></p>
-<H4 dir="rtl"><font face="Tahoma"><A name=1.8>1.8</A>) </font><span lang="fa"><font face="Tahoma">&#1670;&#1607; &#1605;&#1587;&#1578;&#1606;&#1583;&#1575;&#1578; &#1608; &#1585;&#1575;&#1607;&#1606;&#1605;&#1575;&#1574;&#1610;&#1607;&#1575;&#1610;&#1610; &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1606;&#1583;&#1567;</font></span></H4>
-<p dir="rtl"><font face="Tahoma">&#1670;&#1606;&#1583;&#1610;&#1606; &#1603;&#1578;&#1575;&#1576;&#1670;&#1607; &#1608; &#1589;&#1601;&#1581;&#1575;&#1578; &#1585;&#1575;&#1607;&#1606;&#1605;&#1575; &#1608; &#1605;&#1579;&#1575;&#1604;&#1607;&#1575;&#1610; &#1603;&#1608;&#1670;&#1603; 
-&#1607;&#1605;&#1585;&#1575;&#1607; &#1576;&#1575; &#1605;&#1578;&#1606; &#1575;&#1589;&#1604;&#1610; <span lang="en-us">PostgreSQL</span>&#8204; &#1583;&#1585; &#1588;&#1575;&#1582;&#1607;
-<span lang="en-us">doc </span>&#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;. &#1576;&#1585;&#1575;&#1610; &#1583;&#1610;&#1583;&#1606; &#1589;&#1601;&#1581;&#1575;&#1578; &#1585;&#1575;&#1607;&#1606;&#1605;&#1575; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1610;&#1583; &#1576;&#1607; 
-&#1587;&#1575;&#1610;&#1578; <A 
+آخرين نسخه اعلام شده چيست؟</font></span></H4>
+<p dir="rtl"><font face="Tahoma">آخرين نسخه <span lang="en-us">PostgreSQL</span>‌<span lang="en-us">
+</span>&nbsp;كه وجود دارد 7.4.3 است.</font></p>
+<p dir="rtl"><font face="Tahoma">هدف ما آن است كه هر 6 ماه تا 8 ماه يك نسخه جديد 
+ارائه شود.</font></p>
+<H4 dir="rtl"><font face="Tahoma"><A name=1.8>1.8</A>) </font><span lang="fa"><font face="Tahoma">
+چه مستندات و راهنمائيهايي وجود دارند؟</font></span></H4>
+<p dir="rtl"><font face="Tahoma">چندين كتابچه و صفحات راهنما و مثالهاي كوچك 
+همراه با متن اصلي <span lang="en-us">PostgreSQL</span>‌ در شاخه
+<span lang="en-us">doc </span>وجود دارد. براي ديدن صفحات راهنما مي‌توانيد به 
+سايت <A 
 href="http://www.postgresql.org/docs">http://www.PostgreSQL.org/docs</A><span lang="en-us">
-</span>&nbsp;&#1606;&#1610;&#1586; &#1605;&#1585;&#1575;&#1580;&#1593;&#1607; &#1606;&#1605;&#1575;&#1610;&#1610;&#1583;.</font></p>
-<p dir="rtl"><font face="Tahoma">&#1583;&#1608; &#1603;&#1578;&#1575;&#1576; &#1583;&#1585; &#1586;&#1605;&#1610;&#1606;&#1607; <span lang="en-us">PostgreSQL</span>&#8204;<span lang="en-us">
-</span>&nbsp;&#1583;&#1585; &#1570;&#1583;&#1585;&#1587;&#8204;&#1607;&#1575;&#1610; <A 
+</span>&nbsp;نيز مراجعه نماييد.</font></p>
+<p dir="rtl"><font face="Tahoma">دو كتاب در زمينه <span lang="en-us">PostgreSQL</span>‌<span lang="en-us">
+</span>&nbsp;در آدرس‌هاي <A 
 href="http://www.postgresql.org/docs/awbook.html">
 http://www.PostgreSQL.org/docs/awbook.htm</A> 
-&#1608; <A 
+و <A 
 href="http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook</A> 
-&#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;. &#1604;&#1610;&#1587;&#1578;&#1610; &#1575;&#1586; &#1603;&#1578;&#1575;&#1576;&#1607;&#1575;&#1610;&#1610; &#1603;&#1607; &#1602;&#1575;&#1576;&#1604; &#1582;&#1585;&#1610;&#1583; &#1575;&#1587;&#1578; &#1583;&#1585; &#1570;&#1583;&#1585;&#1587; <A 
-href="http://techdocs.postgresql.org/techdocs/bookreviews.php">http://techdocs.PostgreSQL.org/techdocs/bookreviews.php</A><span lang="en-us">
-</span>&#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;. &#1607;&#1605;&#1670;&#1606;&#1610;&#1606; &#1604;&#1610;&#1587;&#1578;&#1610; &#1575;&#1586; &#1605;&#1602;&#1575;&#1604;&#1575;&#1578; &#1601;&#1606;&#1610; &#1583;&#1585; &#1605;&#1608;&#1585;&#1583; <span lang="en-us">
-PostgreSQL</span> &#1583;&#1585; &#1570;&#1583;&#1585;&#1587; <A 
+وجود دارد. ليستي از كتابهايي كه قابل خريد است در آدرس <A 
+href="http://techdocs.postgresql.org/techdocs/bookreviews.php">
+http://techdocs.PostgreSQL.org/techdocs/bookreviews.php</A><span lang="en-us">
+</span>وجود دارد. همچنين ليستي از مقالات فني در مورد <span lang="en-us">
+PostgreSQL</span> در آدرس <A 
 href="http://techdocs.postgresql.org/">http://techdocs.PostgreSQL.org</A><span lang="en-us">
-</span>&#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;.</font></p>
-<p dir="rtl"><font face="Tahoma">&#1576;&#1585;&#1606;&#1575;&#1605;&#1607; <span lang="en-us">psql</span> &#1610;&#1603; &#1583;&#1587;&#1578;&#1608;&#1585;
-<span lang="en-us">d\</span> &#1583;&#1575;&#1585;&#1583; &#1603;&#1607; &#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578;&#1610; &#1583;&#1585; &#1605;&#1608;&#1585;&#1583; &#1575;&#1606;&#1608;&#1575;&#1593; &#1583;&#1575;&#1583;&#1607;&#8204;&#1607;&#1575;&#1610; &#1602;&#1575;&#1576;&#1604; &#1578;&#1593;&#1585;&#1610;&#1601; 
-&#1608; &#1593;&#1605;&#1604;&#1711;&#1585;&#8204;&#1607;&#1575; &#1608; &#1578;&#1608;&#1575;&#1576;&#1593; &#1608; ... &#1576;&#1607; &#1605;&#1575; &#1606;&#1588;&#1575;&#1606; &#1605;&#1610;&#8204;&#1583;&#1607;&#1583;. &#1583;&#1585; &#1587;&#1575;&#1610;&#1578; &#1575;&#1589;&#1604;&#1610; &#1605;&#1575; &#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578; &#1576;&#1610;&#1588;&#1578;&#1585;&#1610; &#1585;&#1575; 
-&#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1610;&#1583; &#1662;&#1610;&#1583;&#1575; &#1603;&#1606;&#1610;&#1583;.</font></p>
+</span>وجود دارد.</font></p>
+<p dir="rtl"><font face="Tahoma">برنامه <span lang="en-us">psql</span> يك دستور
+<span lang="en-us">d\</span> دارد كه اطلاعاتي در مورد انواع داده‌هاي قابل تعريف 
+و عملگر‌ها و توابع و ... به ما نشان مي‌دهد. در سايت اصلي ما اطلاعات بيشتري را 
+مي‌توانيد پيدا كنيد.</font></p>
 <H4 dir="rtl"><font face="Tahoma"><A name=1.9>1.9</A>)  
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1575;&#1586;&#1575;&#1588;&#1603;&#1575;&#1604;&#1575;&#1578; &#1588;&#1606;&#1575;&#1582;&#1578;&#1607; &#1588;&#1583;&#1607; &#1608; &#1610;&#1575; &#1575;&#1605;&#1603;&#1575;&#1606;&#1575;&#1578;&#1610; &#1603;&#1607; &#1583;&#1585; &#1575;&#1610;&#1606; 
-&#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1608;&#1580;&#1608;&#1583; &#1606;&#1583;&#1575;&#1585;&#1583;&nbsp; &#1605;&#1591;&#1604;&#1593; &#1588;&#1608;&#1605;&#1567;</span></font></H4>
-<p dir="rtl"><font face="Tahoma"><span lang="en-us">PostgreSQL</span> &#1610;&#1603; &#1586;&#1610;&#1585; 
-&#1605;&#1580;&#1605;&#1608;&#1593;&#1607; &#1662;&#1610;&#1588;&#1585;&#1601;&#1578;&#1607; &#1575;&#1586; <span lang="en-us">SQL-92</span> &#1585;&#1575; &#1662;&#1588;&#1578;&#1610;&#1576;&#1575;&#1606;&#1610; &#1605;&#1610;&#8204;&#1603;&#1606;&#1583;. &#1583;&#1585; &#1604;&#1610;&#1587;&#1578;
+<span lang="fa">چگونه مي‌توانم ازاشكالات شناخته شده و يا امكاناتي كه در اين 
+پايگاه داده وجود ندارد&nbsp; مطلع شوم؟</span></font></H4>
+<p dir="rtl"><font face="Tahoma"><span lang="en-us">PostgreSQL</span> يك زير 
+مجموعه پيشرفته از <span lang="en-us">SQL-92</span> را پشتيباني مي‌كند. در ليست
 <span lang="en-us">&nbsp;</span><A 
-href="http://developer.postgresql.org/todo.php">TODO</A>&nbsp;&nbsp; &#1575;&#1616;&#1588;&#1603;&#1575;&#1604;&#1575;&#1578; 
-&#1588;&#1606;&#1575;&#1582;&#1578;&#1607; &#1588;&#1583;&#1607; &#1610;&#1575; &#1575;&#1605;&#1603;&#1575;&#1606;&#1575;&#1578;&#1610; &#1603;&#1607; &#1608;&#1580;&#1608;&#1583; &#1606;&#1583;&#1575;&#1585;&#1583; &#1608; &#1610;&#1575; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607;&#8204;&#8204;&#1607;&#1575;&#1610; &#1570;&#1610;&#1606;&#1583;&#1607; &#1570;&#1605;&#1583;&#1607; &#1575;&#1587;&#1578;.</font></p>
-<H4 dir="rtl"><font face="Tahoma"><A name=1.10>1.10</A>) </font><span lang="fa"><font face="Tahoma">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1586;&#1576;&#1575;&#1606; </font></span>
-<font face="Tahoma">SQL</font><span lang="fa"><font face="Tahoma"> &#1585;&#1575; &#1610;&#1575;&#1583; &#1576;&#1711;&#1610;&#1585;&#1605;&#1567;</font></span></H4>
-<p dir="rtl"><font face="Tahoma">&#1603;&#1578;&#1575;&#1576; <span lang="en-us">PostgreSQL</span> &#1583;&#1585; 
-&#1570;&#1583;&#1585;&#1587; <span lang="en-us">SQL</span> <A 
-href="http://www.postgresql.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</A><span lang="en-us">
-</span>&#8204;&#1585;&#1575; &#1570;&#1605;&#1608;&#1586;&#1588; &#1605;&#1610;&#8204;&#1583;&#1607;&#1583;. &#1607;&#1605;&#1670;&#1606;&#1610;&#1606; &#1610;&#1603; &#1603;&#1578;&#1575;&#1576; &#1583;&#1585; &#1570;&#1583;&#1585;&#1587; <A 
+href="http://developer.postgresql.org/todo.php">TODO</A>&nbsp;&nbsp; اِشكالات 
+شناخته شده يا امكاناتي كه وجود ندارد و يا برنامه‌‌هاي آينده آمده است.</font></p>
+<H4 dir="rtl"><font face="Tahoma"><A name=1.10>1.10</A>) </font><span lang="fa"><font face="Tahoma">
+چگونه مي‌توانم زبان </font></span>
+<font face="Tahoma">SQL</font><span lang="fa"><font face="Tahoma"> را ياد بگيرم؟</font></span></H4>
+<p dir="rtl"><font face="Tahoma">كتاب <span lang="en-us">PostgreSQL</span> در 
+آدرس <span lang="en-us">SQL</span> <A 
+href="http://www.postgresql.org/docs/awbook.html">
+http://www.PostgreSQL.org/docs/awbook.html</A><span lang="en-us">
+</span>‌را آموزش مي‌دهد. همچنين يك كتاب در آدرس <A 
 href="http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook </A>
-&#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;. &#1610;&#1603; &#1585;&#1575;&#1607;&#1606;&#1605;&#1575;&#1610; &#1582;&#1610;&#1604;&#1610; &#1582;&#1608;&#1576; &#1607;&#1605; &#1583;&#1585; &#1587;&#1575;&#1610;&#1578;&#8204;&#1607;&#1575;&#1610;&nbsp; <A 
-href="http://www.intermedia.net/support/sql/sqltut.shtm">http://www.intermedia.net/support/sql/sqltut.shtm</A> 
-&#1608; <A 
-href="http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM">http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM</A> 
-&#1608;&nbsp; <A href="http://sqlcourse.com/">http://sqlcourse.com</A> &#1583;&#1585; &#1605;&#1608;&#1585;&#1583;
-<span lang="en-us">SQL</span> &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;.</font></p>
-<p dir="rtl"><font face="Tahoma">&#1603;&#1578;&#1575;&#1576; &#1583;&#1610;&#1711;&#1585;&#1610; &#1603;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606; &#1576;&#1585;&#1575;&#1610; &#1610;&#1575;&#1583;&#1711;&#1610;&#1585;&#1610;
-<span lang="en-us">SQL</span> &#1575;&#1586; &#1570;&#1606; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1603;&#1585;&#1583; &#1603;&#1578;&#1575;&#1576; <span lang="en-us">&quot;SQL</span> 
-&#1585;&#1575; &#1583;&#1585; 21 &#1585;&#1608;&#1586; &#1610;&#1575;&#1583; &#1576;&#1711;&#1610;&#1585;&#1610;&#1583;&#1548;&#8204; &#1608;&#1610;&#1585;&#1575;&#1610;&#1588; &#1583;&#1608;&#1605;<span lang="en-us">&quot; </span>&#1583;&#1585; &#1587;&#1575;&#1610;&#1578; <A 
-href="http://members.tripod.com/er4ebus/sql/index.htm">http://members.tripod.com/er4ebus/sql/index.htm</A><span lang="en-us">
-</span>&#1605;&#1610;&#8204;&#1576;&#1575;&#1588;&#1583;.</font></p>
-<p dir="rtl"><font face="Tahoma">&#1578;&#1593;&#1583;&#1575;&#1583; &#1586;&#1610;&#1575;&#1583;&#1610; &#1575;&#1586; &#1603;&#1575;&#1585;&#1576;&#1585;&#1575;&#1606; &#1603;&#1578;&#1575;&#1576; <span lang="en-us">
-The Practical SQL</span> &#1585;&#1575; &#1578;&#1585;&#1580;&#1610;&#1581; &#1605;&#1610;&#8204;&#1583;&#1607;&#1606;&#1583;. &#1603;&#1578;&#1575;&#1576; &#1583;&#1610;&#1711;&#1585; <span lang="en-us">The 
-Complete Refrence SQL</span> &#1575;&#1606;&#1578;&#1588;&#1575;&#1585;&#1575;&#1578; <span lang="en-us">McGraw-Hill</span> 
-&#1605;&#1610;&#8204;&#1576;&#1575;&#1588;&#1583;.</font></p>
+وجود دارد. يك راهنماي خيلي خوب هم در سايت‌هاي&nbsp; <A 
+href="http://www.intermedia.net/support/sql/sqltut.shtm">
+http://www.intermedia.net/support/sql/sqltut.shtm</A> 
+و <A 
+href="http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM">
+http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM</A> 
+و&nbsp; <A href="http://sqlcourse.com/">http://sqlcourse.com</A> در مورد
+<span lang="en-us">SQL</span> وجود دارد.</font></p>
+<p dir="rtl"><font face="Tahoma">كتاب ديگري كه مي‌توان براي يادگيري
+<span lang="en-us">SQL</span> از آن استفاده كرد كتاب <span lang="en-us">&quot;SQL</span> 
+را در 21 روز ياد بگيريد،‌ ويرايش دوم<span lang="en-us">&quot; </span>در سايت <A 
+href="http://members.tripod.com/er4ebus/sql/index.htm">
+http://members.tripod.com/er4ebus/sql/index.htm</A><span lang="en-us">
+</span>مي‌باشد.</font></p>
+<p dir="rtl"><font face="Tahoma">تعداد زيادي از كاربران كتاب <span lang="en-us">
+The Practical SQL</span> را ترجيح مي‌دهند. كتاب ديگر <span lang="en-us">The 
+Complete Refrence SQL</span> انتشارات <span lang="en-us">McGraw-Hill</span> 
+مي‌باشد.</font></p>
 <H4 dir="rtl"><font face="Tahoma"><A name=1.11>1.11</A>) </font><span lang="fa"><font face="Tahoma"> 
-&#1570;&#1610;&#1575; </font></span><font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma"> 
-&#1605;&#1588;&#1603;&#1604; </font></span><font face="Tahoma">Y2K</font><span lang="fa"><font face="Tahoma">&#8204; 
-&#1583;&#1575;&#1585;&#1583; &#1610;&#1575; &#1582;&#1610;&#1585;&#1567;</font></span></H4>
-<p dir="rtl"><font face="Tahoma">&#1582;&#1610;&#1585;&#1548;&#8204;<span lang="en-us">PostgreSQL</span>&#8204; &#1576;&#1575; 
-&#1578;&#1575;&#1585;&#1610;&#1582;&#8204;&#1607;&#1575;&#1610; &#1602;&#1576;&#1604; &#1608; &#1576;&#1593;&#1583; &#1575;&#1586; 2000 &#1605;&#1588;&#1603;&#1604;&#1610; &#1606;&#1583;&#1575;&#1585;&#1583;.</font></p>
-<H4 dir="rtl"><font face="Tahoma"><A name=1.12>1.12</A>) </font><span lang="fa"><font face="Tahoma">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1576;&#1607; &#1578;&#1610;&#1605; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; &#1606;&#1608;&#1610;&#1587;
+آيا </font></span><font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma"> 
+مشكل </font></span><font face="Tahoma">Y2K</font><span lang="fa"><font face="Tahoma">‌ 
+دارد يا خير؟</font></span></H4>
+<p dir="rtl"><font face="Tahoma">خير،‌<span lang="en-us">PostgreSQL</span>‌ با 
+تاريخ‌هاي قبل و بعد از 2000 مشكلي ندارد.</font></p>
+<H4 dir="rtl"><font face="Tahoma"><A name=1.12>1.12</A>) </font><span lang="fa"><font face="Tahoma">
+چگونه مي‌توانم به تيم برنامه نويس
 </font></span><font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma"> 
-&#1605;&#1604;&#1581;&#1602; &#1588;&#1608;&#1605;&#1567;</font></span></H4>
-<p dir="rtl"><font face="Tahoma">&#1575;&#1576;&#1578;&#1583;&#1575;&#1548;&#8204;&#1570;&#1582;&#1585;&#1610;&#1606; &#1587;&#1608;&#1585;&#1587; &#1585;&#1575; &#1583;&#1608;&#1606;&#1604;&#1608;&#1583; &#1603;&#1585;&#1583;&#1607; &#1608; &#1605;&#1587;&#1578;&#1606;&#1583;&#1575;&#1578; 
-&#1605;&#1585;&#1576;&#1608;&#1591; &#1576;&#1607; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607;&#8204;&#1606;&#1608;&#1610;&#1587;&#1610; <span lang="en-us">PostgreSQL</span> &#1585;&#1575; &#1583;&#1585; &#1587;&#1575;&#1610;&#1578; &#1605;&#1591;&#1575;&#1604;&#1593;&#1607; 
-&#1603;&#1606;&#1610;&#1583;. &#1587;&#1662;&#1587; &#1576;&#1607; &#1711;&#1585;&#1608;&#1607;&#1607;&#1575;&#1610; &#1662;&#1587;&#1578;&#1610; &#8204; <I>pgsql-patches </I>
-&#1608; <i><span lang="en-us">pgsql-hackers
-</span>&nbsp;</i>&#1593;&#1590;&#1608; &#1588;&#1608;&#1610;&#1583;. &#1583;&#1585; &#1605;&#1585;&#1581;&#1604;&#1607; &#1570;&#1582;&#1585; &#1608;&#1589;&#1604;&#1607;&#8204;&#1607;&#1575;&#1610; &#1576;&#1575; &#1603;&#1610;&#1601;&#1610;&#1578; &#1576;&#1575;&#1604;&#1575; &#1585;&#1575; &#1576;&#1607;
-<span lang="en-us">pgsql-patches</span> &#1575;&#1585;&#1587;&#1575;&#1604; &#1603;&#1606;&#1610;&#1583;.</font></p>
-<p dir="rtl"><font face="Tahoma">&#1578;&#1593;&#1583;&#1575;&#1583; &#1586;&#1610;&#1575;&#1583;&#1610; &#1575;&#1586; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607;&#8204;&#1606;&#1608;&#1610;&#1587;&#1575;&#1606; &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1606;&#1583; &#1603;&#1607; 
-&#1575;&#1605;&#1578;&#1610;&#1575;&#1586; &#1575;&#1606;&#1580;&#1575;&#1605; &#1578;&#1594;&#1610;&#1610;&#1585;&#1575;&#1578; &#1583;&#1585; <span lang="en-us">cvs</span>&#8204; &#1585;&#1575; &#1583;&#1575;&#1585;&#1606;&#1583;. &#1607;&#1585; &#1603;&#1583;&#1575;&#1605; &#1575;&#1586; &#1570;&#1606;&#1607;&#1575; 
-&#1578;&#1593;&#1583;&#1575;&#1583; &#1586;&#1610;&#1575;&#1583;&#1610; &#1608;&#1589;&#1604;&#1607;&#8204;&#8204; &#1576;&#1575; &#1603;&#1610;&#1601;&#1610;&#1578; &#1576;&#1575;&#1604;&#1575; &#1576;&#1607; &#1711;&#1585;&#1608;&#1607; &#1575;&#1585;&#1587;&#1575;&#1604; &#1603;&#1585;&#1583;&#1607;&#8204;&#1575;&#1606;&#1583; &#1603;&#1607; &#1575;&#1593;&#1578;&#1605;&#1575;&#1583; &#1711;&#1585;&#1583;&#1575;&#1606;&#1606;&#1583;&#1711;&#1575;&#1606;
-<span lang="en-us">PostgreSQL</span> &#1585;&#1575; &#1576;&#1607; &#1583;&#1587;&#1578; &#1570;&#1608;&#1585;&#1583;&#1607;&#8204;&#1575;&#1606;&#1583;.</font></p>
+ملحق شوم؟</font></span></H4>
+<p dir="rtl"><font face="Tahoma">ابتدا،‌آخرين سورس را دونلود كرده و مستندات 
+مربوط به برنامه‌نويسي <span lang="en-us">PostgreSQL</span> را در سايت مطالعه 
+كنيد. سپس به گروههاي پستي ‌ <I>pgsql-patches </I>
+و <i><span lang="en-us">pgsql-hackers
+</span>&nbsp;</i>عضو شويد. در مرحله آخر وصله‌هاي با كيفيت بالا را به
+<span lang="en-us">pgsql-patches</span> ارسال كنيد.</font></p>
+<p dir="rtl"><font face="Tahoma">تعداد زيادي از برنامه‌نويسان وجود دارند كه 
+امتياز انجام تغييرات در <span lang="en-us">cvs</span>‌ را دارند. هر كدام از آنها 
+تعداد زيادي وصله‌‌ با كيفيت بالا به گروه ارسال كرده‌اند كه اعتماد گردانندگان
+<span lang="en-us">PostgreSQL</span> را به دست آورده‌اند.</font></p>
 <H4 dir="rtl"><font face="Tahoma"><A name=1.13>1.13</A>)  
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1610;&#1603; &#1575;&#1616;&#1588;&#1603;&#1575;&#1604; &#1585;&#1575; &#1576;&#1607; &#1711;&#1585;&#1608;&#1607; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; &#1606;&#1608;&#1610;&#1587; &#1575;&#1593;&#1604;&#1575;&#1605; &#1603;&#1606;&#1605;&#1567;</span></font></H4>
-<p dir="rtl"><font face="Tahoma">&#1604;&#1591;&#1601;&#1575;&#1611; &#1589;&#1601;&#1581;&#1607; &#1605;&#1585;&#1576;&#1608;&#1591; &#1576;&#1607; &#1575;&#1616;&#1588;&#1603;&#1575;&#1604;&#1575;&#1578; <span lang="en-us">
-PostgreSQL</span> &#1585;&#1575; &#1583;&#1585; &#1587;&#1575;&#1610;&#1578; <A 
-href="http://www.postgresql.org/bugs/bugs.php">http://www.PostgreSQL.org/bugs/bugs.php</A><span lang="en-us">
-</span>&#1605;&#1588;&#1575;&#1607;&#1583;&#1607;&#8204;<span lang="en-us"> </span>&#1603;&#1606;&#1610;&#1583;. &#1583;&#1585; &#1575;&#1610;&#1606; &#1587;&#1575;&#1610;&#1578; &#1606;&#1581;&#1608;&#1607; &#1711;&#1586;&#1575;&#1585;&#1588; &#1608; &#1575;&#1585;&#1587;&#1575;&#1604; &#1610;&#1603; 
-&#1575;&#1588;&#1603;&#1575;&#1604; &#1578;&#1608;&#1590;&#1610;&#1581; &#1583;&#1575;&#1583;&#1607; &#1588;&#1583;&#1607; &#1575;&#1587;&#1578;.</font></p>
-<p dir="rtl"><font face="Tahoma"><span lang="en-us">&nbsp;</span>&#1607;&#1605;&#1670;&#1606;&#1610;&#1606; &#1576;&#1585;&#1575;&#1610; 
-&#1583;&#1610;&#1583;&#1606; &#1606;&#1587;&#1582;&#1607;&#8204;&#1607;&#1575;&#1610; &#1580;&#1583;&#1610;&#1583;&#1578;&#1585; <span lang="en-us">PostgreSQL</span> &#1608; &#1610;&#1575; &#1608;&#1580;&#1608;&#1583; &#1610;&#1603; &#1608;&#1589;&#1604;&#1607; &#1580;&#1583;&#1610;&#1583; 
-&#1575;&#1586; &#1587;&#1575;&#1610;&#1578; <A 
-href="ftp://ftp.postgresql.org/pub">ftp://ftp.PostgreSQL.org/pub</A> &#1576;&#1575;&#1586;&#1583;&#1610;&#1583; 
-&#1603;&#1606;&#1610;&#1583;.</font></p>
+<span lang="fa">چگونه مي‌توانم يك اِشكال را به گروه برنامه نويس اعلام كنم؟</span></font></H4>
+<p dir="rtl"><font face="Tahoma">لطفاً صفحه مربوط به اِشكالات <span lang="en-us">
+PostgreSQL</span> را در سايت <A 
+href="http://www.postgresql.org/bugs/bugs.php">
+http://www.PostgreSQL.org/bugs/bugs.php</A><span lang="en-us">
+</span>مشاهده‌<span lang="en-us"> </span>كنيد. در اين سايت نحوه گزارش و ارسال يك 
+اشكال توضيح داده شده است.</font></p>
+<p dir="rtl"><font face="Tahoma"><span lang="en-us">&nbsp;</span>همچنين براي ديدن 
+نسخه‌هاي جديدتر <span lang="en-us">PostgreSQL</span> و يا وجود يك وصله جديد از 
+سايت <A 
+href="ftp://ftp.postgresql.org/pub">ftp://ftp.PostgreSQL.org/pub</A> بازديد 
+كنيد.</font></p>
 <H4 dir="rtl"><font face="Tahoma"><A name=1.14>1.14</A>) </font><span lang="fa"><font face="Tahoma">
-&#1608;&#1590;&#1593;&#1610;&#1578; </font></span>
-<font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma">&#8204; &#1583;&#1585; 
-&#1605;&#1602;&#1575;&#1610;&#1587;&#1607; &#1576;&#1575; &#1587;&#1575;&#1610;&#1585; </font></span><font face="Tahoma">DBMS<span lang="fa">&#1607;&#1575; &#1576;&#1607; &#1670;&#1607; 
-&#1589;&#1608;&#1585;&#1578; &#1575;&#1587;&#1578;&#1567;</span></font></H4>
-<p dir="rtl"><font face="Tahoma">&#1585;&#1575;&#1607;&#1607;&#1575;&#1610; &#1605;&#1582;&#1578;&#1604;&#1601;&#1610; &#1576;&#1585;&#1575;&#1610; &#1575;&#1606;&#1583;&#1575;&#1586;&#1607;&#8204;&#1711;&#1610;&#1585;&#1610; &#1608; &#1605;&#1602;&#1575;&#1610;&#1587;&#1607; 
-&#1606;&#1585;&#1605;&#8204;&#1575;&#1601;&#1586;&#1575;&#1585;&#1607;&#1575; &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583; &#1603;&#1607; &#1593;&#1576;&#1575;&#1585;&#1578;&#1606;&#1583; &#1575;&#1586; &#1575;&#1605;&#1603;&#1575;&#1606;&#1575;&#1578;&#1548; &#1603;&#1575;&#1585;&#1575;&#1610;&#1610;&#1548; &#1602;&#1575;&#1576;&#1604;&#1610;&#1578; &#1575;&#1593;&#1578;&#1605;&#1575;&#1583;&#1548; &#1662;&#1588;&#1578;&#1610;&#1576;&#1575;&#1606;&#1610; &#1608; 
-&#1602;&#1610;&#1605;&#1578;</font></p>
+وضعيت </font></span>
+<font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma">‌ در 
+مقايسه با ساير </font></span><font face="Tahoma">DBMS<span lang="fa">ها به چه 
+صورت است؟</span></font></H4>
+<p dir="rtl"><font face="Tahoma">راههاي مختلفي براي اندازه‌گيري و مقايسه 
+نرم‌افزارها وجود دارد كه عبارتند از امكانات، كارايي، قابليت اعتماد، پشتيباني و 
+قيمت</font></p>
 <DL>
   <div dir="rtl">
   <dl>
-	<dt><b><font face="Tahoma">&#1575;&#1605;&#1603;&#1575;&#1606;&#1575;&#1578;</font></b></dt>
-	<dd><font face="Tahoma"><span lang="en-us">PostgreSQL</span> &#1576;&#1610;&#1588;&#1578;&#1585; &#1575;&#1605;&#1603;&#1575;&#1606;&#1575;&#1578; 
-	&#1605;&#1608;&#1580;&#1608;&#1583; &#1583;&#1585; &#1587;&#1610;&#1587;&#1578;&#1605;&#8204;&#1607;&#1575;&#1610; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1578;&#1580;&#1575;&#1585;&#1610; &#1576;&#1586;&#1585;&#1711; &#1606;&#1592;&#1610;&#1585; <span lang="en-us">
+	<dt><b><font face="Tahoma">امكانات</font></b></dt>
+	<dd><font face="Tahoma"><span lang="en-us">PostgreSQL</span> بيشتر امكانات 
+	موجود در سيستم‌هاي پايگاه داده تجاري بزرگ نظير <span lang="en-us">
 	transactions, subselets, triggers, views, foreign key referential integrity
-	</span>&#1608; <span lang="en-us">sophisticated locking</span>&#8204; &#1585;&#1575; &#1583;&#1575;&#1585;&#1583;. &#1583;&#1585;
-	<span lang="en-us">PostgreSQL</span>&#8204;&#8204; &#1575;&#1605;&#1603;&#1575;&#1606;&#1575;&#1578;&#1610; &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583; &#1603;&#1607; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607;&#1607;&#1575;&#1610; &#1583;&#1575;&#1583;&#1607; 
-	&#1583;&#1610;&#1711;&#1585; &#1570;&#1606; &#1585;&#1575; &#1606;&#1583;&#1575;&#1585;&#1606;&#1583; &#1606;&#1592;&#1610;&#1585; <span lang="en-us">user-defined types</span>&#8204;&#1608;
-	<span lang="en-us">Inheritance</span>&#8204;&#1608; <span lang="en-us">rules</span>&#8204;&#1608;
+	</span>و <span lang="en-us">sophisticated locking</span>‌ را دارد. در
+	<span lang="en-us">PostgreSQL</span>‌‌ امكاناتي وجود دارد كه پايگاههاي داده 
+	ديگر آن را ندارند نظير <span lang="en-us">user-defined types</span>‌و
+	<span lang="en-us">Inheritance</span>‌و <span lang="en-us">rules</span>‌و
 	<span lang="en-us">multi-version concurrency control</span></font></dd>
 	</dl>
 	</div>
   <DD>
 	<p dir="rtl">&nbsp;<div dir="rtl">
-  <b><font face="Tahoma">&#1603;&#1575;&#1585;&#1575;&#1610;&#1610;</font></b><p><font face="Tahoma"><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-	</b>&#1603;&#1575;&#1585;&#1575;&#1610;&#1610; <span lang="en-us">PostgreSQL</span> &#1583;&#1585; &#1581;&#1583; &#1576;&#1602;&#1610;&#1607; &#1587;&#1610;&#1587;&#1578;&#1605;&#8204;&#1607;&#1575;&#1610; &#1578;&#1580;&#1575;&#1585;&#1610; &#1608; 
-	&#1605;&#1578;&#1606; &#1576;&#1575;&#1586; &#1575;&#1587;&#1578;. &#1583;&#1585; &#1576;&#1593;&#1590;&#1610; &#1605;&#1608;&#1575;&#1585;&#1583; &#1587;&#1585;&#1610;&#1593;&#1578;&#1585; &#1608; &#1583;&#1585; &#1576;&#1593;&#1590;&#1610; &#1605;&#1608;&#1575;&#1585;&#1583; &#1575;&#1586; &#1570;&#1606;&#1607;&#1575; &#1603;&#1606;&#1583;&#1578;&#1585; &#1575;&#1587;&#1578;. &#1583;&#1585; 
-	&#1605;&#1602;&#1575;&#1610;&#1587;&#1607; &#1576;&#1575; <span lang="en-us">MySQL</span> &#1576;&#1585;&#1575;&#1610; &#1603;&#1575;&#1585;&#1576;&#1585;&#1575;&#1606; &#1576;&#1610;&#1588;&#1578;&#1585; &#1608; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578;&#8204;&#1607;&#1575;&#1610; 
-	&#1662;&#1610;&#1670;&#1610;&#1583;&#1607; &#1608; &#1576;&#1575;&#1585; &#1586;&#1610;&#1575;&#1583; &#1582;&#1608;&#1575;&#1606;&#1583;&#1606;/&#1606;&#1608;&#1588;&#1578;&#1606; &#1587;&#1585;&#1610;&#1593;&#1578;&#1585; &#1575;&#1587;&#1578;. &#1583;&#1585; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578;&#8204;&#1607;&#1575;&#1610; &#1587;&#1575;&#1583;&#1607;<span lang="en-us"> 
-	SELECT</span>&#8204; &#1575;&#1586; <span lang="en-us">MySQL</span> &#1603;&#1606;&#1583;&#1578;&#1585; &#1575;&#1587;&#1578;. &#1575;&#1604;&#1576;&#1578;&#1607;
-	<span lang="en-us">MySQL</span> &#1582;&#1610;&#1604;&#1610; &#1575;&#1586; &#1575;&#1605;&#1603;&#1575;&#1606;&#1575;&#1578; <span lang="en-us">
-	PostgreSQL</span> &#1603;&#1607; &#1583;&#1585; &#1576;&#1575;&#1604;&#1575; &#1576;&#1607; &#1570;&#1606; &#1575;&#1588;&#1575;&#1585;&#1607; &#1588;&#1583; &#1585;&#1575; &#1606;&#1583;&#1575;&#1585;&#1583;. &#1607;&#1583;&#1601; &#1575;&#1589;&#1604;&#1610; &#1605;&#1575; &#1575;&#1605;&#1603;&#1575;&#1606;&#1575;&#1578; &#1608; 
-	&#1602;&#1575;&#1576;&#1604;&#1610;&#1578; &#1575;&#1593;&#1578;&#1605;&#1575;&#1583; &#1576;&#1575;&#1604;&#1575;&#1587;&#1578; &#1583;&#1585; &#1590;&#1605;&#1606; &#1570;&#1606;&#1603;&#1607; &#1578;&#1604;&#1575;&#1588; &#1605;&#1610;&#8204;&#1603;&#1606;&#1610;&#1605; &#1578;&#1575; &#1603;&#1575;&#1585;&#1575;&#1610;&#1610; &#1570;&#1606; &#1606;&#1610;&#1586; &#1576;&#1607;&#1576;&#1608;&#1583; &#1610;&#1575;&#1576;&#1583;. 
-	&#1583;&#1585; &#1570;&#1583;&#1585;&#1587; <A 
-  href="http://openacs.org/philosophy/why-not-mysql.html">http://openacs.org/philosophy/why-not-mysql.html</A> 
-  &#1610;&#1603; &#1605;&#1602;&#1575;&#1610;&#1587;&#1607; &#1580;&#1575;&#1604;&#1576; &#1576;&#1610;&#1606; <span lang="en-us">MySQL</span> &#1608; <span lang="en-us">
-	PostgreSQL</span> &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;. &#1575;&#1586; &#1591;&#1585;&#1601; &#1583;&#1610;&#1711;&#1585; <span lang="en-us">MySQL</span>&#8204; &#1610;&#1603; 
-	&#1588;&#1585;&#1603;&#1578; &#1575;&#1587;&#1578; &#1603;&#1607; &#1605;&#1581;&#1589;&#1608;&#1604; &#1582;&#1608;&#1583; &#1585;&#1575; &#1576;&#1607; &#1589;&#1608;&#1585;&#1578; &#1605;&#1578;&#1606; &#1576;&#1575;&#1586; &#1575;&#1585;&#1575;&#1574;&#1607; &#1605;&#1610;&#8204;&#1603;&#1606;&#1583; &#1608;&#1604;&#1610; &#1576;&#1585;&#1575;&#1610; &#1606;&#1585;&#1605;&#8204;&#1575;&#1601;&#1586;&#1575;&#1585; &#1594;&#1610;&#1585; 
-	&#1605;&#1578;&#1606; &#1576;&#1575;&#1586; &#1582;&#1608;&#1583; &#1575;&#1581;&#1578;&#1610;&#1575;&#1580; &#1576;&#1607; &#1604;&#1610;&#1587;&#1575;&#1606;&#1587; &#1578;&#1580;&#1575;&#1585;&#1610; &#1583;&#1575;&#1585;&#1583; &#1576;&#1585; &#1582;&#1604;&#1575;&#1601; <span lang="en-us">
-	PostgreSQL</span> &#1603;&#1607; &#1610;&#1603; &#1711;&#1585;&#1608;&#1607; &#1603;&#1575;&#1605;&#1604;&#1575;&#1611; &#1605;&#1578;&#1606; &#1576;&#1575;&#1586; &#1607;&#1587;&#1578;&#1606;&#1583;.</font></div>
+  <b><font face="Tahoma">كارايي</font></b><p><font face="Tahoma"><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	</b>كارايي <span lang="en-us">PostgreSQL</span> در حد بقيه سيستم‌هاي تجاري و 
+	متن باز است. در بعضي موارد سريعتر و در بعضي موارد از آنها كندتر است. در 
+	مقايسه با <span lang="en-us">MySQL</span> براي كاربران بيشتر و درخواست‌هاي 
+	پيچيده و بار زياد خواندن/نوشتن سريعتر است. در درخواست‌هاي ساده<span lang="en-us"> 
+	SELECT</span>‌ از <span lang="en-us">MySQL</span> كندتر است. البته
+	<span lang="en-us">MySQL</span> خيلي از امكانات <span lang="en-us">
+	PostgreSQL</span> كه در بالا به آن اشاره شد را ندارد. هدف اصلي ما امكانات و 
+	قابليت اعتماد بالاست در ضمن آنكه تلاش مي‌كنيم تا كارايي آن نيز بهبود يابد. 
+	در آدرس <A 
+  href="http://openacs.org/philosophy/why-not-mysql.html">
+	http://openacs.org/philosophy/why-not-mysql.html</A> 
+  يك مقايسه جالب بين <span lang="en-us">MySQL</span> و <span lang="en-us">
+	PostgreSQL</span> وجود دارد. از طرف ديگر <span lang="en-us">MySQL</span>‌ يك 
+	شركت است كه محصول خود را به صورت متن باز ارائه مي‌كند ولي براي نرم‌افزار غير 
+	متن باز خود احتياج به ليسانس تجاري دارد بر خلاف <span lang="en-us">
+	PostgreSQL</span> كه يك گروه كاملاً متن باز هستند.</font></div>
   <DD>
 	<p dir="rtl">&nbsp;<div dir="rtl">
   <dl>
-	<dt><b><font face="Tahoma">&#1602;&#1575;&#1576;&#1604;&#1610;&#1578; &#1575;&#1591;&#1605;&#1610;&#1606;&#1575;&#1606;</font></b></dt>
-	<dd><font face="Tahoma">&#1605;&#1575; &#1601;&#1603;&#1585; &#1605;&#1610;&#8204;&#1603;&#1606;&#1610;&#1605; &#1603;&#1607; &#1610;&#1603; &#1587;&#1610;&#1587;&#1578;&#1605; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607;&#8204;&#1575;&#1610; &#1603;&#1607; &#1605;&#1591;&#1605;&#1574;&#1606; 
-	&#1606;&#1576;&#1575;&#1588;&#1583; &#1575;&#1585;&#1586;&#1588;&#1610; &#1606;&#1583;&#1575;&#1585;&#1583;. &#1605;&#1575; &#1578;&#1605;&#1575;&#1605; &#1578;&#1604;&#1575;&#1588;&#1605;&#1575;&#1606; &#1585;&#1575; &#1576;&#1585;&#1575;&#1610; &#1575;&#1585;&#1575;&#1574;&#1607; &#1603;&#1583;&#1607;&#1575;&#1610; &#1662;&#1575;&#1610;&#1583;&#1575;&#1585;&#1610; &#1603;&#1607; &#1576;&#1607; &#1582;&#1608;&#1576;&#1610; 
-	&#1578;&#1587;&#1578; &#1588;&#1583;&#1607; &#1576;&#1575;&#1588;&#1606;&#1583; &#1608; &#1603;&#1605;&#1578;&#1585;&#1610;&#1606; &#1575;&#1616;&#1588;&#1603;&#1575;&#1604;&#1575;&#1578; &#1585;&#1575; &#1583;&#1575;&#1588;&#1578;&#1607; &#1576;&#1575;&#1588;&#1606;&#1583; &#1605;&#1610;&#8204;&#1603;&#1606;&#1610;&#1605;. &#1607;&#1585; &#1606;&#1587;&#1582;&#1607; &#1580;&#1583;&#1610;&#1583;&#1610; &#1603;&#1607; 
-	&#1575;&#1585;&#1575;&#1574;&#1607; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583; &#1581;&#1583;&#1575;&#1602;&#1604; &#1610;&#1603; &#1605;&#1575;&#1607; &#1585;&#1575; &#1583;&#1585; &#1605;&#1585;&#1581;&#1604;&#1607; &#1578;&#1587;&#1578; &#1576;&#1578;&#1575; &#1605;&#1610;&#8204;&#1711;&#1584;&#1585;&#1575;&#1606;&#1583;. &#1605;&#1575; &#1576;&#1585; &#1575;&#1610;&#1606; &#1576;&#1575;&#1608;&#1585; 
-	&#1607;&#1587;&#1578;&#1610;&#1605; &#1603;&#1607; &#1602;&#1575;&#1576;&#1604;&#1610;&#1578; &#1575;&#1591;&#1605;&#1610;&#1606;&#1575;&#1606; <span lang="en-us">PostgreSQL</span>&#8204; &#1583;&#1585; &#1605;&#1602;&#1575;&#1610;&#1587;&#1607; &#1576;&#1575; 
-	&#1587;&#1575;&#1610;&#1585; &#1587;&#1610;&#1587;&#1578;&#1605;&#8204;&#1607;&#1575;&#1610; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1602;&#1575;&#1576;&#1604; &#1578;&#1608;&#1580;&#1607; &#1575;&#1587;&#1578; &#1608; &#1606;&#1587;&#1582;&#1607;&#8204;&#1607;&#1575;&#1610;&#1610; &#1603;&#1607; &#1578;&#1575;&#1603;&#1606;&#1608;&#1606; &#1575;&#1585;&#1575;&#1574;&#1607; &#1588;&#1583;&#1607; &#1575;&#1587;&#1578; 
-	&#1606;&#1588;&#1575;&#1606; &#1605;&#1610;&#8204;&#1583;&#1607;&#1583; &#1603;&#1607; &#1605;&#1575; &#1578;&#1608;&#1575;&#1606;&#1575;&#1610;&#1610; &#1575;&#1585;&#1575;&#1574;&#1607; &#1610;&#1603; &#1587;&#1610;&#1587;&#1578;&#1605; &#1602;&#1608;&#1610; &#1608; &#1605;&#1581;&#1603;&#1605; &#1608; &#1605;&#1591;&#1605;&#1574;&#1606; &#1585;&#1575; &#1603;&#1607; &#1570;&#1605;&#1575;&#1583;&#1607; 
-	&#1576;&#1607;&#1585;&#1607;&#8204;&#1576;&#1585;&#1583;&#1575;&#1585;&#1610; &#1575;&#1587;&#1578; &#1583;&#1575;&#1585;&#1610;&#1605;.</font></dd>
+	<dt><b><font face="Tahoma">قابليت اطمينان</font></b></dt>
+	<dd><font face="Tahoma">ما فكر مي‌كنيم كه يك سيستم پايگاه داده‌اي كه مطمئن 
+	نباشد ارزشي ندارد. ما تمام تلاشمان را براي ارائه كدهاي پايداري كه به خوبي 
+	تست شده باشند و كمترين اِشكالات را داشته باشند مي‌كنيم. هر نسخه جديدي كه 
+	ارائه مي‌شود حداقل يك ماه را در مرحله تست بتا مي‌گذراند. ما بر اين باور 
+	هستيم كه قابليت اطمينان <span lang="en-us">PostgreSQL</span>‌ در مقايسه با 
+	ساير سيستم‌هاي پايگاه داده قابل توجه است و نسخه‌هايي كه تاكنون ارائه شده است 
+	نشان مي‌دهد كه ما توانايي ارائه يك سيستم قوي و محكم و مطمئن را كه آماده 
+	بهره‌برداري است داريم.</font></dd>
 	</dl>
 	</div>
   <DD>
 	<div dir="rtl">
   <dl>
-	<dt><b><font face="Tahoma">&#1662;&#1588;&#1578;&#1610;&#1576;&#1575;&#1606;&#1610;</font></b></dt>
-	<dd><font face="Tahoma">&#1711;&#1585;&#1608;&#1607;&#1607;&#1575;&#1610; &#1662;&#1587;&#1578;&#1610; &#1605;&#1575; &#1575;&#1605;&#1603;&#1575;&#1606; &#1575;&#1585;&#1578;&#1576;&#1575;&#1591; &#1608; &#1578;&#1605;&#1575;&#1587; &#1576;&#1607; &#1711;&#1585;&#1608;&#1607; &#1576;&#1586;&#1585;&#1711;&#1610; &#1575;&#1586; 
-	&#1576;&#1585;&#1606;&#1575;&#1605;&#1607; &#1606;&#1608;&#1610;&#1587;&#1575;&#1606; &#1608; &#1603;&#1575;&#1585;&#1576;&#1585;&#1575;&#1606; &#1585;&#1575; &#1605;&#1610;&#8204;&#1583;&#1607;&#1583; &#1603;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1606;&#1583; &#1583;&#1585; &#1581;&#1604; &#1605;&#1588;&#1603;&#1604;&#1575;&#1578; &#1576;&#1607; &#1583;&#1610;&#1711;&#1585;&#1575;&#1606; &#1603;&#1605;&#1603; 
-	&#1603;&#1606;&#1606;&#1583;. &#1583;&#1587;&#1578;&#1585;&#1587;&#1610; &#1605;&#1587;&#1578;&#1602;&#1610;&#1605; &#1576;&#1607; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607;&#8204;&#1606;&#1608;&#1610;&#1587;&#1575;&#1606; &#1608; &#1711;&#1585;&#1608;&#1607;&#1607;&#1575;&#1610; &#1603;&#1575;&#1585;&#1576;&#1585;&#1575;&#1606; &#1608; &#1585;&#1575;&#1607;&#1606;&#1605;&#1575;&#1607;&#1575; &#1608; &#1603;&#1583;&#1575;&#1589;&#1604;&#1610; 
-	&#1576;&#1575;&#1593;&#1579; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583; &#1603;&#1607; &#1662;&#1588;&#1578;&#1610;&#1576;&#1575;&#1606;&#1610; <span lang="en-us">PostgreSQL</span> &#1606;&#1587;&#1576;&#1578; &#1576;&#1607; &#1587;&#1575;&#1610;&#1585; 
-	&#1662;&#1575;&#1610;&#1711;&#1575;&#1607;&#1607;&#1575;&#1610; &#1583;&#1575;&#1583;&#1607; &#1576;&#1607; &#1606;&#1581;&#1608; &#1576;&#1607;&#1578;&#1585;&#1610; &#1575;&#1606;&#1580;&#1575;&#1605; &#1588;&#1608;&#1583;. &#1607;&#1605;&#1670;&#1606;&#1610;&#1606; &#1575;&#1605;&#1603;&#1575;&#1606; &#1575;&#1585;&#1575;&#1574;&#1607; &#1582;&#1583;&#1605;&#1575;&#1578; &#1662;&#1588;&#1578;&#1610;&#1576;&#1575;&#1606;&#1610; &#1576;&#1607; 
-	&#1589;&#1608;&#1585;&#1578; &#1578;&#1580;&#1575;&#1585;&#1610; &#1606;&#1610;&#1586; &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;. &#1576;&#1585;&#1575;&#1610; &#1583;&#1610;&#1583;&#1606; &#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578; &#1576;&#1610;&#1588;&#1578;&#1585; &#1576;&#1607; <A 
-  href="#1.6">FAQ 
-  section 1.6</A>&nbsp; &#1605;&#1585;&#1575;&#1580;&#1593;&#1607; &#1603;&#1606;&#1610;&#1583;.</font></dd>
+	<dt><b><font face="Tahoma">پشتيباني</font></b></dt>
+	<dd><font face="Tahoma">گروههاي پستي ما امكان ارتباط و تماس به گروه بزرگي از 
+	برنامه نويسان و كاربران را مي‌دهد كه مي‌توانند در حل مشكلات به ديگران كمك 
+	كنند. دسترسي مستقيم به برنامه‌نويسان و گروههاي كاربران و راهنماها و كداصلي 
+	باعث مي‌شود كه پشتيباني <span lang="en-us">PostgreSQL</span> نسبت به ساير 
+	پايگاههاي داده به نحو بهتري انجام شود. همچنين امكان ارائه خدمات پشتيباني به 
+	صورت تجاري نيز وجود دارد. براي ديدن اطلاعات بيشتر به <A 
+  href="#1.6">FAQ section 1.6</A>&nbsp; مراجعه كنيد.</font></dd>
 	</dl>
 	</div>
   <DD>
 	<div dir="rtl">
   <dl>
-	<dt><b><font face="Tahoma">&#1602;&#1610;&#1605;&#1578;</font></b></dt>
-	<dd><font face="Tahoma">&#1607;&#1605; &#1576;&#1585;&#1575;&#1610; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1578;&#1580;&#1575;&#1585;&#1610; &#1608; &#1607;&#1605; &#1594;&#1610;&#1585; &#1578;&#1580;&#1575;&#1585;&#1610; &#1607;&#1610;&#1670; &#1607;&#1586;&#1610;&#1606;&#1607;&#8204;&#1575;&#1610; 
-	&#1606;&#1576;&#1575;&#1610;&#1583; &#1662;&#1585;&#1583;&#1575;&#1582;&#1578; &#1588;&#1608;&#1583;. &#1607;&#1610;&#1670; &#1605;&#1581;&#1583;&#1608;&#1583;&#1610;&#1578;&#1610; &#1576;&#1585;&#1575;&#1610; &#1575;&#1606;&#1580;&#1575;&#1605; &#1578;&#1594;&#1610;&#1610;&#1585;&#1575;&#1578; &#1583;&#1585; <span lang="en-us">
-	PostgreSQL</span> &#1578;&#1608;&#1587;&#1591; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1603;&#1606;&#1606;&#1583;&#1711;&#1575;&#1606; &#1608;&#1580;&#1608;&#1583; &#1606;&#1583;&#1575;&#1585;&#1583; &#1576;&#1607; &#1580;&#1586; &#1605;&#1608;&#1575;&#1585;&#1583;&#1610; &#1603;&#1607; &#1583;&#1585; &#1604;&#1610;&#1587;&#1575;&#1606;&#1587;
-	<span lang="en-us">BSD</span> &#1576;&#1607; &#1570;&#1606; &#1575;&#1588;&#1575;&#1585;&#1607; &#1588;&#1583;&#1607; &#1575;&#1587;&#1578;.</font></dd>
+	<dt><b><font face="Tahoma">قيمت</font></b></dt>
+	<dd><font face="Tahoma">هم براي استفاده تجاري و هم غير تجاري هيچ هزينه‌اي 
+	نبايد پرداخت شود. هيچ محدوديتي براي انجام تغييرات در <span lang="en-us">
+	PostgreSQL</span> توسط استفاده كنندگان وجود ندارد به جز مواردي كه در ليسانس
+	<span lang="en-us">BSD</span> به آن اشاره شده است.</font></dd>
 	</dl>
 	</div>
   </DL>
 <H4 dir="rtl"><font face="Tahoma"><A name=1.15>1.15</A>) 
-<span lang="fa">&#1605;&#1606; &#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1575;&#1586; &#1606;&#1592;&#1585; &#1605;&#1575;&#1604;&#1610; &#1576;&#1607; </span>PostgreSQL<span lang="fa"> 
-&#1603;&#1605;&#1603; &#1603;&#1606;&#1605;&#1567;</span></font></H4>
-<p dir="rtl"><font face="Tahoma"><span lang="en-us">PostgreSQL </span>&nbsp;&#1583;&#1575;&#1585;&#1575;&#1610; 
-&#1610;&#1603; &#1587;&#1575;&#1582;&#1578;&#1575;&#1585; &#1578;&#1588;&#1603;&#1610;&#1604;&#1575;&#1578;&#1610; &#1583;&#1585;&#1580;&#1607; &#1575;&#1608;&#1604; &#1575;&#1587;&#1578; &#1603;&#1607; &#1570;&#1606; &#1585;&#1575; &#1605;&#1583;&#1610;&#1608;&#1606; <span lang="en-us">Marc Fournier</span>&#8204; 
-&#1575;&#1587;&#1578; &#1603;&#1607; &#1575;&#1610;&#1606; &#1587;&#1575;&#1582;&#1578;&#1575;&#1585; &#1585;&#1575; &#1575;&#1610;&#1580;&#1575;&#1583; &#1603;&#1585;&#1583;&#1607; &#1575;&#1587;&#1578;.</font></p>
-<p dir="rtl"><font face="Tahoma">&#1603;&#1610;&#1601;&#1610;&#1578; &#1610;&#1603; &#1587;&#1575;&#1582;&#1578;&#1575;&#1585; &#1576;&#1585;&#1575;&#1610; &#1610;&#1603; &#1662;&#1585;&#1608;&#1688;&#1607; &#1605;&#1578;&#1606; &#1576;&#1575;&#1586; &#1576;&#1587;&#1610;&#1575;&#1585; 
-&#1575;&#1607;&#1605;&#1610;&#1578; &#1583;&#1575;&#1585;&#1583;. &#1610;&#1603; &#1587;&#1575;&#1582;&#1578;&#1575;&#1585; &#1582;&#1608;&#1576; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1583; &#1605;&#1575;&#1606;&#1593; &#1575;&#1586; &#1581;&#1608;&#1575;&#1583;&#1579;&#1610; &#1588;&#1608;&#1583; &#1603;&#1607; &#1583;&#1585; &#1581;&#1585;&#1603;&#1578; &#1585;&#1608;&#1576;&#1607;&#8204;&#1580;&#1604;&#1608;&#1610; &#1662;&#1585;&#1608;&#1688;&#1607; 
-&#1582;&#1604;&#1604;&#1610; &#1608;&#1575;&#1585;&#1583; &#1605;&#1610;&#8204;&#1603;&#1606;&#1606;&#1583;.</font></p>
-<p dir="rtl"><font face="Tahoma">&#1575;&#1604;&#1576;&#1578;&#1607; &#1575;&#1610;&#1606; &#1587;&#1575;&#1582;&#1578;&#1575;&#1585; &#1578;&#1588;&#1603;&#1610;&#1604;&#1575;&#1578;&#1610; &#1575;&#1585;&#1586;&#1575;&#1606; &#1606;&#1610;&#1587;&#1578;. &#1607;&#1586;&#1610;&#1606;&#1607;&#8204;&#1607;&#1575;&#1610; 
-&#1579;&#1575;&#1576;&#1578; &#1605;&#1575;&#1607;&#1575;&#1606;&#1607; &#1608; &#1585;&#1608;&#1586;&#1605;&#1585;&#1607; &#1576;&#1585;&#1575;&#1610; &#1606;&#1711;&#1607;&#1583;&#1575;&#1585;&#1610; &#1608; &#1581;&#1601;&#1592; &#1575;&#1610;&#1606; &#1587;&#1575;&#1582;&#1578;&#1575;&#1585; &#1605;&#1608;&#1585;&#1583; &#1606;&#1610;&#1575;&#1586; &#1575;&#1587;&#1578;. &#1575;&#1711;&#1585; &#1588;&#1605;&#1575; &#1610;&#1575; 
-&#1588;&#1585;&#1603;&#1578; &#1588;&#1605;&#1575; &#1605;&#1575;&#1610;&#1604; &#1575;&#1587;&#1578; &#1603;&#1607; &#1575;&#1586; &#1606;&#1592;&#1585; &#1605;&#1575;&#1604;&#1610; &#1576;&#1607; &#1575;&#1610;&#1606; &#1581;&#1585;&#1603;&#1578; &#1603;&#1605;&#1603; &#1603;&#1606;&#1583; &#1604;&#1591;&#1601;&#1575;&#1611; &#1576;&#1607; &#1587;&#1575;&#1610;&#1578; <A 
+<span lang="fa">من چگونه مي‌توانم از نظر مالي به </span>PostgreSQL<span lang="fa"> 
+كمك كنم؟</span></font></H4>
+<p dir="rtl"><font face="Tahoma"><span lang="en-us">PostgreSQL </span>&nbsp;داراي يك 
+ساختار تشكيلاتي درجه اول است كه آن را مديون <span lang="en-us">Marc Fournier</span>‌ 
+است كه اين ساختار را ايجاد كرده است.</font></p>
+<p dir="rtl"><font face="Tahoma">كيفيت يك ساختار براي يك پروژه متن باز بسيار 
+اهميت دارد. يك ساختار خوب مي‌تواند مانع از حوادثي شود كه در حركت روبه‌جلوي پروژه 
+خللي وارد مي‌كنند.</font></p>
+<p dir="rtl"><font face="Tahoma">البته اين ساختار تشكيلاتي ارزان نيست. هزينه‌هاي 
+ثابت ماهانه و روزمره براي نگهداري و حفظ اين ساختار مورد نياز است. اگر شما يا 
+شركت شما مايل است كه از نظر مالي به اين حركت كمك كند لطفاً به سايت <A 
 href="http://store.pgsql.com/shopping/">http://store.pgsql.com/shopping</A> 
-&#1605;&#1585;&#1575;&#1580;&#1593;&#1607; &#1603;&#1585;&#1583;&#1607; &#1608; &#1603;&#1605;&#1603; &#1582;&#1608;&#1583; &#1585;&#1575; &#1575;&#1607;&#1583;&#1575; &#1603;&#1606;&#1610;&#1583;.</font></p>
-<p dir="rtl"><font face="Tahoma">&#1607;&#1585; &#1670;&#1606;&#1583; &#1583;&#1585; &#1589;&#1601;&#1581;&#1607; &#1575;&#1589;&#1604;&#1610; &#1593;&#1576;&#1575;&#1585;&#1578; <span lang="en-us">
-PostgreSQL,Inc</span>&#8204; &#1584;&#1603;&#1585; &#1588;&#1583;&#1607; &#1575;&#1587;&#1578; &#1608;&#1604;&#1610; &#1605;&#1588;&#1575;&#1585;&#1603;&#1578; &#1593;&#1605;&#1583;&#1578;&#1575;&#1611; &#1576;&#1585;&#1575;&#1610; &#1662;&#1588;&#1578;&#1610;&#1576;&#1575;&#1606;&#1610; &#1575;&#1586; &#1662;&#1585;&#1608;&#1688;&#1607;
-<span lang="en-us">PostgreSQL</span>&#8204; &#1605;&#1610; &#1576;&#1575;&#1588;&#1583; &#1608; &#1606;&#1607; &#1576;&#1585;&#1575;&#1610; &#1610;&#1603; &#1588;&#1585;&#1603;&#1578; &#1605;&#1588;&#1582;&#1589;. &#1575;&#1711;&#1585; &#1578;&#1585;&#1580;&#1610;&#1581; 
-&#1605;&#1610;&#8204;&#1583;&#1607;&#1610;&#1583; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1610;&#1583; &#1610;&#1603; &#1670;&#1603; &#1576;&#1607; &#1570;&#1583;&#1585;&#1587; &#1605;&#1588;&#1582;&#1589; &#1588;&#1583;&#1607; &#1575;&#1585;&#1587;&#1575;&#1604; &#1603;&#1606;&#1610;&#1583;.</font></p>
-<p dir="rtl"><font face="Tahoma">&#1575;&#1711;&#1585; &#1610;&#1603; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1605;&#1608;&#1601;&#1602; &#1575;&#1586; <span lang="en-us">
-PostgreSQL</span> &#1587;&#1585;&#1575;&#1594; &#1583;&#1575;&#1585;&#1610;&#1583; &#1604;&#1591;&#1601;&#1575;&#1611; &#1570;&#1606; &#1585;&#1575; &#1576;&#1607; &#1587;&#1575;&#1610;&#1578; <A 
-href="http://advocacy.postgresql.org/">http://advocacy.postgresql.org</A> &#1711;&#1586;&#1575;&#1585;&#1588; 
-&#1583;&#1607;&#1610;&#1583;.</font></p>
+مراجعه كرده و كمك خود را اهدا كنيد.</font></p>
+<p dir="rtl"><font face="Tahoma">هر چند در صفحه اصلي عبارت <span lang="en-us">
+PostgreSQL,Inc</span>‌ ذكر شده است ولي مشاركت عمدتاً براي پشتيباني از پروژه
+<span lang="en-us">PostgreSQL</span>‌ مي باشد و نه براي يك شركت مشخص. اگر ترجيح 
+مي‌دهيد مي‌توانيد يك چك به آدرس مشخص شده ارسال كنيد.</font></p>
+<p dir="rtl"><font face="Tahoma">اگر يك استفاده موفق از <span lang="en-us">
+PostgreSQL</span> سراغ داريد لطفاً آن را به سايت <A 
+href="http://advocacy.postgresql.org/">http://advocacy.postgresql.org</A> گزارش 
+دهيد.</font></p>
 <HR dir="rtl">
 
-<h2 align="center" dir="rtl"><font face="Tahoma"><span lang="fa">&#1587;&#1608;&#1575;&#1604;&#1575;&#1578; &#1605;&#1585;&#1576;&#1608;&#1591; &#1576;&#1607; 
-&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607;</span></font></h2>
+<h2 align="center" dir="rtl"><font face="Tahoma"><span lang="fa">سوالات مربوط به 
+استفاده از پايگاه داده</span></font></h2>
 <H4 dir="rtl"><font face="Tahoma"><A name=2.1>2.1</A>)
-<span lang="fa">&#1570;&#1610;&#1575; &#1607;&#1610;&#1670; &#1583;&#1585;&#1575;&#1610;&#1608;&#1585; </span>ODBC</font><span lang="fa"><font face="Tahoma">&#8204; 
-&#1576;&#1585;&#1575;&#1610; </font></span><font face="Tahoma">PostgreSQL<span lang="fa"> 
-&#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;&#1567;</span></font></H4>
-<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1583;&#1608; &#1583;&#1585;&#1575;&#1610;&#1608;&#1585; </span>ODBC<span lang="fa"> 
-&#1576;&#1606;&#1575;&#1605;&#1607;&#1575;&#1610; </span>psqlODBC<span lang="fa">&#8204; &#1608; </span>OpenLink<span lang="fa"> &#1576;&#1585;&#1575;&#1610;
-</span>PostgreSQL<span lang="fa">&#8204; &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;.</span></font></p>
-<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1576;&#1585;&#1575;&#1610; &#1711;&#1585;&#1601;&#1578;&#1606; </span>psqlODBC<span lang="fa"> 
-&#1576;&#1607; &#1587;&#1575;&#1610;&#1578; </span> <A 
-href="http://gborg.postgresql.org/project/psqlodbc/projdisplay.php">http://gborg.postgresql.org/project/psqlodbc/projdisplay.php</A><span lang="fa"> 
-&#1605;&#1585;&#1575;&#1580;&#1593;&#1607; &#1603;&#1606;&#1610;&#1583;.</span></font></p>
-<p dir="rtl"><font face="Tahoma"><span lang="en-us">OpenLlink</span> &#1585;&#1575; &#1575;&#1586; &#1575;&#1610;&#1606; 
-&#1587;&#1575;&#1610;&#1578; <A 
-href="http://www.openlinksw.com/">http://www.openlinksw.com</A> &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1610;&#1583; 
-&#1576;&#1711;&#1610;&#1585;&#1610;&#1583;. &#1575;&#1610;&#1606; &#1583;&#1585;&#1575;&#1610;&#1608;&#1585; &#1576;&#1575; &#1606;&#1585;&#1605;&#8204;&#1575;&#1601;&#1586;&#1575;&#1585;&#1607;&#1575;&#1610; &#1605;&#1582;&#1578;&#1604;&#1601; <span lang="en-us">ODBC</span> &#1603;&#1575;&#1585; 
-&#1605;&#1610;&#8204;&#1603;&#1606;&#1583; &#1576;&#1606;&#1575;&#1576;&#1585;&#1575;&#1610;&#1606; &#1588;&#1605;&#1575; &#1602;&#1575;&#1583;&#1585; &#1582;&#1608;&#1575;&#1607;&#1610;&#1583; &#1576;&#1608;&#1583; &#1576;&#1575; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; <span lang="en-us">OpenLink</span> 
-&#1585;&#1608;&#1610; &#1575;&#1603;&#1579;&#1585; &#1587;&#1603;&#1608;&#8204;&#1607;&#1575;&#1610;&#1610; &#1603;&#1607; &#1606;&#1585;&#1605;&#8204;&#1575;&#1601;&#1586;&#1575;&#1585;<span lang="en-us">ODBC</span>&#8204;&#1583;&#1575;&#1585;&#1606;&#1583; &#1576;&#1583;&#1608;&#1606; &#1605;&#1588;&#1603;&#1604; &#1576;&#1607;
-<span lang="en-us">PostgreSQL</span> &#1606;&#1610;&#1586; &#1605;&#1578;&#1589;&#1604; &#1588;&#1608;&#1610;&#1583;.</font></p>
-<p dir="rtl"><font face="Tahoma">&#1575;&#1610;&#1606; &#1605;&#1581;&#1589;&#1608;&#1604; &#1576;&#1607; &#1603;&#1587;&#1575;&#1606;&#1610; &#1603;&#1607; &#1575;&#1581;&#1578;&#1610;&#1575;&#1580; &#1576;&#1607; &#1582;&#1583;&#1605;&#1575;&#1578; &#1662;&#1588;&#1578;&#1610;&#1576;&#1575;&#1606;&#1610; 
-&#1578;&#1580;&#1575;&#1585;&#1610; &#1583;&#1575;&#1585;&#1606;&#1583; &#1601;&#1585;&#1608;&#1582;&#1578;&#1607; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583;. &#1608;&#1604;&#1610; &#1606;&#1587;&#1582;&#1607; &#1570;&#1586;&#1575;&#1583; &#1575;&#1610;&#1606; &#1606;&#1585;&#1605;&#8204;&#1575;&#1601;&#1586;&#1575;&#1585; &#1607;&#1605;&#1610;&#1588;&#1607; &#1583;&#1585; &#1583;&#1585;&#1587;&#1578;&#1585;&#1587; &#1605;&#1610;&#8204;&#1576;&#1575;&#1588;&#1583;. 
-&#1576;&#1585;&#1575;&#1610; &#1603;&#1587;&#1576; &#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578; &#1576;&#1610;&#1588;&#1578;&#1585; &#1587;&#1608;&#1575;&#1604;&#1575;&#1578; &#1582;&#1608;&#1583; &#1585;&#1575; &#1576;&#1607; &#1570;&#1583;&#1585;&#1587; <A 
+<span lang="fa">آيا هيچ درايور </span>ODBC</font><span lang="fa"><font face="Tahoma">‌ 
+براي </font></span><font face="Tahoma">PostgreSQL<span lang="fa"> 
+وجود دارد؟</span></font></H4>
+<p dir="rtl"><font face="Tahoma"><span lang="fa">دو درايور </span>ODBC<span lang="fa"> 
+بنامهاي </span>psqlODBC<span lang="fa">‌ و </span>OpenLink<span lang="fa"> براي
+</span>PostgreSQL<span lang="fa">‌ وجود دارد.</span></font></p>
+<p dir="rtl"><font face="Tahoma"><span lang="fa">براي گرفتن </span>psqlODBC<span lang="fa"> 
+به سايت </span> <A 
+href="http://gborg.postgresql.org/project/psqlodbc/projdisplay.php">
+http://gborg.postgresql.org/project/psqlodbc/projdisplay.php</A><span lang="fa"> 
+مراجعه كنيد.</span></font></p>
+<p dir="rtl"><font face="Tahoma"><span lang="en-us">OpenLlink</span> را از اين 
+سايت <A 
+href="http://www.openlinksw.com/">http://www.openlinksw.com</A> مي‌توانيد 
+بگيريد. اين درايور با نرم‌افزارهاي مختلف <span lang="en-us">ODBC</span> كار 
+مي‌كند بنابراين شما قادر خواهيد بود با استفاده از <span lang="en-us">OpenLink</span> 
+روي اكثر سكو‌هايي كه نرم‌افزار<span lang="en-us">ODBC</span>‌دارند بدون مشكل به
+<span lang="en-us">PostgreSQL</span> نيز متصل شويد.</font></p>
+<p dir="rtl"><font face="Tahoma">اين محصول به كساني كه احتياج به خدمات پشتيباني 
+تجاري دارند فروخته مي‌شود. ولي نسخه آزاد اين نرم‌افزار هميشه در درسترس مي‌باشد. 
+براي كسب اطلاعات بيشتر سوالات خود را به آدرس <A 
 href="mailto:postgres95@openlink.co.uk">postgres95@openlink.co.uk</A><span lang="en-us">
-</span>&#8204;&#1575;&#1585;&#1587;&#1575;&#1604; &#1606;&#1605;&#1575;&#1610;&#1610;&#1583;.</font></p>
+</span>‌ارسال نماييد.</font></p>
 <H4 dir="rtl"><font face="Tahoma"><A name=2.2>2.2</A>) 
-<span lang="fa">&#1670;&#1607; &#1575;&#1576;&#1586;&#1575;&#1585;&#1607;&#1575;&#1610;&#1610; &#1576;&#1585;&#1575;&#1610; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; </span>PostgreSQL<span lang="fa">&#8204; 
-&#1576;&#1575; &#1589;&#1601;&#1581;&#1575;&#1578; &#1608;&#1576; &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;&#1567;</span></font></H4>
-<p dir="rtl"><font face="Tahoma">&#1583;&#1585; &#1587;&#1575;&#1610;&#1578; <A 
-href="http://www.webreview.com/">http://www.webreview.com</A> &#1576;&#1585;&#1575;&#1610; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586;
-<span lang="en-us">PostgreSQL</span>&#8204; &#1583;&#1585; &#1589;&#1601;&#1581;&#1575;&#1578; &#1608;&#1576; &#1585;&#1575;&#1607;&#1606;&#1605;&#1575;&#1610;&#1610;&#1607;&#1575;&#1610; &#1582;&#1608;&#1576;&#1610; &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;.</font></p>
-<P dir="rtl"><font face="Tahoma">&#1576;&#1585;&#1575;&#1610; &#1578;&#1585;&#1603;&#1610;&#1576; &#1608; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1583;&#1585; &#1589;&#1601;&#1581;&#1575;&#1578; &#1608;&#1576; &#1586;&#1576;&#1575;&#1606;
-<span lang="en-us">PHP</span>&#8204; &#1610;&#1603; &#1608;&#1575;&#1587;&#1591; &#1576;&#1587;&#1610;&#1575;&#1585; &#1605;&#1606;&#1575;&#1587;&#1576; &#1575;&#1587;&#1578;. &#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578; &#1576;&#1610;&#1588;&#1578;&#1585; &#1585;&#1575;&#1580;&#1593; &#1576;&#1607;
-<span lang="en-us">PHP</span>&#8204;&#1583;&#1585; &#1587;&#1575;&#1610;&#1578; <A 
-href="http://www.php.net/">http://www.php.net</A><span lang="en-us"> </span>&#1608;&#1580;&#1608;&#1583; 
-&#1583;&#1575;&#1585;&#1583;.</font></P>
-<P dir="rtl"><font face="Tahoma">&#1605;&#1579;&#1575;&#1604;&#1607;&#1575;&#1610;&#1610; &#1606;&#1610;&#1586; &#1576;&#1575; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; <span lang="en-us">
-Perl</span>&#8204; &#1608;<span lang="en-us"> CGI.pm</span> &#1608; <span lang="en-us">mod_perl</span> 
-&#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;.</font></P>
+<span lang="fa">چه ابزارهايي براي استفاده از </span>PostgreSQL<span lang="fa">‌ 
+با صفحات وب وجود دارد؟</span></font></H4>
+<p dir="rtl"><font face="Tahoma">در سايت <A 
+href="http://www.webreview.com/">http://www.webreview.com</A> براي استفاده از
+<span lang="en-us">PostgreSQL</span>‌ در صفحات وب راهنماييهاي خوبي وجود دارد.</font></p>
+<P dir="rtl"><font face="Tahoma">براي تركيب و استفاده در صفحات وب زبان
+<span lang="en-us">PHP</span>‌ يك واسط بسيار مناسب است. اطلاعات بيشتر راجع به
+<span lang="en-us">PHP</span>‌در سايت <A 
+href="http://www.php.net/">http://www.php.net</A><span lang="en-us"> </span>وجود 
+دارد.</font></P>
+<P dir="rtl"><font face="Tahoma">مثالهايي نيز با استفاده از <span lang="en-us">
+Perl</span>‌ و<span lang="en-us"> CGI.pm</span> و <span lang="en-us">mod_perl</span> 
+وجود دارد.</font></P>
 <H4 dir="rtl"><font face="Tahoma"><A name=2.3>2.3</A>) 
-<span lang="fa">&#1570;&#1610;&#1575; </span>PostgreSQL<span lang="fa">&#8204; &#1610;&#1603; &#1608;&#1575;&#1587;&#1591; &#1603;&#1575;&#1585;&#1576;&#1585;&#1610; &#1711;&#1585;&#1575;&#1601;&#1610;&#1603;&#1610; 
-&#1583;&#1575;&#1585;&#1583;&#1567;</span></font></H4>
-<p dir="rtl"><font face="Tahoma">&#1670;&#1606;&#1583; &#1606;&#1585;&#1605; &#1575;&#1601;&#1586;&#1575;&#1585; &#1711;&#1585;&#1575;&#1601;&#1610;&#1603;&#1610; &#1576;&#1585;&#1575;&#1610; <span lang="en-us">
-PostgreSQL</span>&#8204; &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583; &#1603;&#1607; &#1588;&#1575;&#1605;&#1604; <span lang="en-us">pgAccess</span> &#1583;&#1585;&#1587;&#1575;&#1610;&#1578; <A 
+<span lang="fa">آيا </span>PostgreSQL<span lang="fa">‌ يك واسط كاربري گرافيكي 
+دارد؟</span></font></H4>
+<p dir="rtl"><font face="Tahoma">چند نرم افزار گرافيكي براي <span lang="en-us">
+PostgreSQL</span>‌ وجود دارد كه شامل <span lang="en-us">pgAccess</span> درسايت <A 
 href="http://www.pgaccess.org/">http://www.pgaccess.org</A><span lang="en-us">
-</span>&#1608; <span lang="en-us">pgAdmin III</span> &#1583;&#1585; &#1587;&#1575;&#1610;&#1578; <A 
+</span>و <span lang="en-us">pgAdmin III</span> در سايت <A 
 href="http://www.pgadmin.org/">http://www.pgadmin.org</A><span lang="en-us">
-</span>&#1608; <span lang="en-us">RHDB Admin</span> &#1583;&#1585; &#1587;&#1575;&#1610;&#1578; <A 
+</span>و <span lang="en-us">RHDB Admin</span> در سايت <A 
 href="http://sources.redhat.com/rhdb/">http://sources.redhat.com/rhdb</A><span lang="en-us">
-</span>&#1608; <span lang="en-us">Rekall</span> &#1583;&#1585; &#1587;&#1575;&#1610;&#1578; <A href="http://www.thekompany.com/products/rekall/"> 
-http://www.thekompany.com/products/rekall<span lang="en-us"> </span></A>&nbsp;&#1605;&#1610;&#8204;&#1576;&#1575;&#1588;&#1583;. 
-&#1607;&#1605;&#1670;&#1606;&#1610;&#1606; &#1610;&#1603; <span lang="en-us">phpPgAdmin</span> &#1607;&#1605; &#1583;&#1585; &#1587;&#1575;&#1610;&#1578; <A href="http://phppgadmin.sourceforge.net/"> 
-http://phppgadmin.sourceforge.net</A><span lang="en-us"> </span>&#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583; &#1603;&#1607; &#1610;&#1603; 
-&#1608;&#1575;&#1587;&#1591; &#1608;&#1576;&#1610; &#1576;&#1585;&#1575;&#1610; &#1605;&#1583;&#1610;&#1585;&#1610;&#1578; <span lang="en-us">PostgreSQL</span> &#1605;&#1610;&#8204;&#1576;&#1575;&#1588;&#1583;.</font></p>
-<P dir="rtl"><font face="Tahoma">&#1576;&#1585;&#1575;&#1610; &#1583;&#1610;&#1583;&#1606; &#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578; &#1576;&#1610;&#1588;&#1578;&#1585; &#1585;&#1575;&#1580;&#1593; &#1576;&#1607; &#1606;&#1585;&#1605;&#8204;&#1575;&#1601;&#1586;&#1575;&#1585;&#1607;&#1575;&#1610; 
-&#1711;&#1585;&#1575;&#1601;&#1610;&#1603;&#1610; &#1576;&#1585;&#1575;&#1610; <span lang="en-us">PostgreSQL</span> &#1576;&#1607; &#1570;&#1583;&#1585;&#1587; <A 
-href="http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools</A><span lang="en-us">
-</span>&#1605;&#1585;&#1575;&#1580;&#1593;&#1607; &#1603;&#1606;&#1610;&#1583;.</font></P>
+</span>و <span lang="en-us">Rekall</span> در سايت <A href="http://www.thekompany.com/products/rekall/"> 
+http://www.thekompany.com/products/rekall<span lang="en-us"> </span></A>
+&nbsp;مي‌باشد. همچنين يك <span lang="en-us">phpPgAdmin</span> هم در سايت <A href="http://phppgadmin.sourceforge.net/"> 
+http://phppgadmin.sourceforge.net</A><span lang="en-us"> </span>وجود دارد كه يك 
+واسط وبي براي مديريت <span lang="en-us">PostgreSQL</span> مي‌باشد.</font></p>
+<P dir="rtl"><font face="Tahoma">براي ديدن اطلاعات بيشتر راجع به نرم‌افزارهاي 
+گرافيكي براي <span lang="en-us">PostgreSQL</span> به آدرس <A 
+href="http://techdocs.postgresql.org/guides/GUITools">
+http://techdocs.postgresql.org/guides/GUITools</A><span lang="en-us">
+</span>مراجعه كنيد.</font></P>
 <H4 dir="rtl"><font face="Tahoma"><A name=2.4>2.4</A>) 
-<span lang="fa">&#1576;&#1575; &#1670;&#1607; &#1586;&#1576;&#1575;&#1606;&#1607;&#1575;&#1610; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607;&#8204;&#1606;&#1608;&#1610;&#1587;&#1610; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606; &#1576;&#1575; </span>PostgreSQL<span lang="fa">&#8204; 
-&#1575;&#1585;&#1578;&#1576;&#1575;&#1591; &#1576;&#1585;&#1602;&#1585;&#1575;&#1585; &#1603;&#1585;&#1583;&#1567;</span></font></H4>
-<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1576;&#1610;&#1588;&#1578;&#1585; &#1586;&#1576;&#1575;&#1606;&#1607;&#1575;&#1610; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607;&#8204;&#1606;&#1608;&#1610;&#1587;&#1610; 
-&#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1606;&#1583; &#1576;&#1575; </span>PostgreSQL<span lang="fa">&#8204; &#1575;&#1585;&#1578;&#1576;&#1575;&#1591; &#1576;&#1585;&#1602;&#1585;&#1575;&#1585; &#1603;&#1606;&#1606;&#1583;. &#1576;&#1607; &#1607;&#1605;&#1585;&#1575;&#1607;&nbsp; 
-&#1587;&#1608;&#1585;&#1587; </span>PostgreSQL<span lang="fa"> &#1578;&#1593;&#1583;&#1575;&#1583;&#1610; &#1575;&#1586; &#1608;&#1575;&#1587;&#1591;&#1607;&#1575;&#1610; &#1605;&#1608;&#1585;&#1583; &#1606;&#1610;&#1575;&#1586; &#1576;&#1585;&#1575;&#1610; &#1575;&#1585;&#1578;&#1576;&#1575;&#1591; 
-&#1576;&#1575; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1575;&#1586; &#1591;&#1585;&#1610;&#1602; &#1586;&#1576;&#1575;&#1606;&#1607;&#1575;&#1610; &#1605;&#1582;&#1578;&#1604;&#1601; &#1570;&#1605;&#1583;&#1607; &#1575;&#1587;&#1578; &#1603;&#1607; &#1583;&#1585; &#1586;&#1610;&#1585; &#1604;&#1610;&#1587;&#1578; &#1570;&#1606;&#1607;&#1575; &#1585;&#1575; &#1605;&#1588;&#1575;&#1607;&#1583;&#1607; 
-&#1605;&#1610;&#8204;&#1603;&#1606;&#1610;&#1583;.</span></font></p>
+<span lang="fa">با چه زبانهاي برنامه‌نويسي مي‌توان با </span>PostgreSQL<span lang="fa">‌ 
+ارتباط برقرار كرد؟</span></font></H4>
+<p dir="rtl"><font face="Tahoma"><span lang="fa">بيشتر زبانهاي برنامه‌نويسي 
+مي‌توانند با </span>PostgreSQL<span lang="fa">‌ ارتباط برقرار كنند. به همراه&nbsp; 
+سورس </span>PostgreSQL<span lang="fa"> تعدادي از واسطهاي مورد نياز براي ارتباط 
+با پايگاه داده از طريق زبانهاي مختلف آمده است كه در زير ليست آنها را مشاهده 
+مي‌كنيد.</span></font></p>
 <ul dir="rtl">
 	<li dir="ltr">
 	<p dir="ltr" align="left"><font face="Tahoma">C (libpq) </font></li>
@@ -679,233 +698,235 @@ href="http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql
 	<li dir="ltr">
 	<p dir="ltr" align="left"><font face="Tahoma">TCL (libpgtcl) </font></li>
 </ul>
-<p dir="rtl" align="right"><span lang="fa"><font face="Tahoma">&#1608;&#1575;&#1587;&#1591;&#1607;&#1575;&#1610; &#1583;&#1610;&#1711;&#1585; &#1583;&#1585; 
-&#1587;&#1575;&#1610;&#1578; </font></span><font face="Tahoma"> <A 
+<p dir="rtl" align="right"><span lang="fa"><font face="Tahoma">واسطهاي ديگر در 
+سايت </font></span><font face="Tahoma"> <A 
 href="http://gborg.postgresql.org/">http://gborg.postgresql.org</A> 
-<span lang="fa">&#1583;&#1585; &#1602;&#1587;&#1605;&#1578; </span><i>Drivers/Interfaces</i><span lang="fa"> &#1608;&#1580;&#1608;&#1583; 
-&#1583;&#1575;&#1585;&#1583;.</span></font></p>
+<span lang="fa">در قسمت </span><i>Drivers/Interfaces</i><span lang="fa"> وجود 
+دارد.</span></font></p>
 <HR dir="rtl">
 
-<h2 align="center" dir="rtl"><span lang="fa"><font face="Tahoma">&#1587;&#1608;&#1575;&#1604;&#1575;&#1578; &#1605;&#1583;&#1610;&#1585;&#1610;&#1578;&#1610;</font></span></h2>
+<h2 align="center" dir="rtl"><span lang="fa"><font face="Tahoma">سوالات مديريتي</font></span></h2>
 <H4 dir="rtl"><font face="Tahoma"><A name=3.1>3.1</A>) 
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; </span>PostgreSQL<span lang="fa">&#8204; &#1585;&#1575; &#1583;&#1585; &#1588;&#1575;&#1582;&#1607;&#8204;&#1575;&#1610; 
-&#1594;&#1610;&#1585; &#1575;&#1586; </span>/usr/local/pgsql/<span lang="fa">&nbsp; &#1606;&#1589;&#1576; &#1603;&#1606;&#1605;&#1567;</span></font></H4>
-<p dir="rtl"><font face="Tahoma">&#1605;&#1608;&#1602;&#1593; &#1575;&#1580;&#1585;&#1575;&#1610; &#1583;&#1587;&#1578;&#1608;&#1585; <i><span lang="en-us">
-configure</span> </i>&#1575;&#1586; &#1711;&#1586;&#1610;&#1606;&#1607; <span lang="en-us">prefix--</span> &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1603;&#1606;&#1610;&#1583;.</font></p>
+<span lang="fa">چگونه مي‌توانم </span>PostgreSQL<span lang="fa">‌ را در شاخه‌اي 
+غير از </span>/usr/local/pgsql/<span lang="fa">&nbsp; نصب كنم؟</span></font></H4>
+<p dir="rtl"><font face="Tahoma">موقع اجراي دستور <i><span lang="en-us">
+configure</span> </i>از گزينه <span lang="en-us">prefix--</span> استفاده كنيد.</font></p>
 <H4 dir="rtl"><font face="Tahoma"><A name=3.2>3.2</A>) 
-<span lang="fa">&#1670;&#1585;&#1575; &#1605;&#1608;&#1602;&#1593;&#1610; &#1603;&#1607; &#1605;&#1606; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; </span>postmaster<span lang="fa">&#8204; &#1585;&#1575; 
-&#1575;&#1580;&#1585;&#1575; &#1605;&#1610; &#1603;&#1606;&#1605; &#1662;&#1610;&#1575;&#1605; </span>Bad system call<span lang="fa">&#8204; &#1608; &#1610;&#1575; </span>core dump
-<span lang="fa">&#8204;&#1605;&#1610;&#8204;&#1711;&#1610;&#1585;&#1605;&#1567;</span></font></H4>
-<p dir="rtl"><font face="Tahoma">&#1576;&#1607; &#1583;&#1604;&#1575;&#1610;&#1604; &#1605;&#1582;&#1578;&#1604;&#1601; &#1605;&#1605;&#1603;&#1606; &#1575;&#1587;&#1578; &#1575;&#1610;&#1606; &#1575;&#1578;&#1601;&#1575;&#1602; &#1576;&#1610;&#1601;&#1578;&#1583;. &#1575;&#1605;&#1575; &#1583;&#1585; 
-&#1602;&#1583;&#1605; &#1575;&#1608;&#1604; &#1588;&#1605;&#1575; &#1605;&#1591;&#1605;&#1574;&#1606; &#1588;&#1608;&#1610;&#1583; &#1603;&#1607; &#1603;&#1607; &#1575;&#1605;&#1603;&#1575;&#1606;&#1575;&#1578; &#1575;&#1590;&#1575;&#1601;&#1607; <span lang="en-us">System V</span>&#8204; 
-&#1583;&#1585; &#1603;&#1585;&#1606;&#1604; &#1588;&#1605;&#1575; &#1606;&#1589;&#1576; &#1588;&#1583;&#1607; &#1576;&#1575;&#1588;&#1583;. <span lang="en-us">PostgreSQL</span> &#1576;&#1585;&#1575;&#1610; &#1575;&#1580;&#1585;&#1575; &#1588;&#1583;&#1606; 
-&#1606;&#1610;&#1575;&#1586; &#1576;&#1607; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1575;&#1605;&#1603;&#1575;&#1606;&#1575;&#1578; &#1581;&#1575;&#1601;&#1592;&#1607; &#1605;&#1588;&#1578;&#1585;&#1603; &#1608; &#1587;&#1605;&#1575;&#1601;&#1608;&#1585;&#1607;&#1575; &#1583;&#1575;&#1585;&#1583;.</font></p>
+<span lang="fa">چرا موقعي كه من برنامه </span>postmaster<span lang="fa">‌ را 
+اجرا مي كنم پيام </span>Bad system call<span lang="fa">‌ و يا </span>core dump
+<span lang="fa">‌مي‌گيرم؟</span></font></H4>
+<p dir="rtl"><font face="Tahoma">به دلايل مختلف ممكن است اين اتفاق بيفتد. اما در 
+قدم اول شما مطمئن شويد كه كه امكانات اضافه <span lang="en-us">System V</span>‌ 
+در كرنل شما نصب شده باشد. <span lang="en-us">PostgreSQL</span> براي اجرا شدن 
+نياز به استفاده از امكانات حافظه مشترك و سمافورها دارد.</font></p>
 <H4 dir="rtl"><font face="Tahoma"><A name=3.3>3.3</A>)
-<span lang="fa">&#1670;&#1585;&#1575; &#1605;&#1608;&#1602;&#1593;&#1610; &#1603;&#1607; &#1605;&#1606; &#1587;&#1593;&#1610; &#1605;&#1610;&#8204;&#1603;&#1606;&#1605; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; </span>postmaster<span lang="fa">&#8204; 
-&#1585;&#1575; &#1575;&#1580;&#1585;&#1575; &#1603;&#1606;&#1605; &#1582;&#1591;&#1575;&#1610;</span> <I>IpcMemoryCreate</I>&nbsp; <span lang="fa">&#1605;&#1610;&#8204;&#1711;&#1610;&#1585;&#1605;&#1567;</span></font></H4>
-<p dir="rtl"><font face="Tahoma">&#1575;&#1581;&#1578;&#1605;&#1575;&#1604;&#1575;&#1611;&#8204; &#1602;&#1587;&#1605;&#1578; &#1575;&#1610;&#1580;&#1575;&#1583; &#1581;&#1575;&#1601;&#1592;&#1607; &#1605;&#1588;&#1578;&#1585;&#1603; &#1583;&#1585; &#1603;&#1585;&#1606;&#1604; &#1576;&#1607; 
-&#1583;&#1585;&#1587;&#1578;&#1610; &#1578;&#1606;&#1592;&#1610;&#1605; &#1606;&#1588;&#1583;&#1607; &#1575;&#1587;&#1578; &#1608; &#1610;&#1575; &#1575;&#1610;&#1606;&#1603;&#1607; &#1576;&#1575;&#1610;&#1583; &#1601;&#1590;&#1575;&#1610; &#1581;&#1575;&#1601;&#1592;&#1607; &#1575;&#1588;&#1578;&#1585;&#1575;&#1603;&#1610; &#1583;&#1585; &#1603;&#1585;&#1606;&#1604; &#1585;&#1575; &#1586;&#1610;&#1575;&#1583; &#1603;&#1585;&#1583;. 
-&#1605;&#1610;&#1586;&#1575;&#1606; &#1583;&#1602;&#1610;&#1602; &#1581;&#1575;&#1601;&#1592;&#1607; &#1605;&#1588;&#1578;&#1585;&#1603; &#1605;&#1608;&#1585;&#1583; &#1606;&#1610;&#1575;&#1586; &#1576;&#1587;&#1578;&#1607; &#1576;&#1607; &#1605;&#1593;&#1605;&#1575;&#1585;&#1610; &#1608; &#1606;&#1581;&#1608;&#1607; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1576;&#1575;&#1601;&#1585;&#1607;&#1575; &#1578;&#1608;&#1587;&#1591; 
-&#1576;&#1585;&#1606;&#1575;&#1605;&#1607; <span lang="en-us"><i>postmaster </i></span>&#1583;&#1575;&#1585;&#1583;. &#1576;&#1585;&#1575;&#1610; &#1576;&#1610;&#1588;&#1578;&#1585; &#1587;&#1610;&#1587;&#1578;&#1605;&#8204;&#1607;&#1575; &#1603;&#1607; 
-&#1576;&#1575; &#1578;&#1606;&#1592;&#1610;&#1605;&#1575;&#1578; &#1662;&#1610;&#1588;&#8204;&#1601;&#1585;&#1590; &#1603;&#1575;&#1585; &#1605;&#1610;&#8204;&#1603;&#1606;&#1606;&#1583; &#1605;&#1602;&#1583;&#1575;&#1585; &#1575;&#1610;&#1606; &#1581;&#1575;&#1601;&#1592;&#1607; &#1581;&#1583;&#1608;&#1583; <span lang="en-us">1</span> 
-&#1605;&#1711;&#1575;&#1576;&#1575;&#1610;&#1578; &#1575;&#1587;&#1578;. &#1576;&#1585;&#1575;&#1610; &#1583;&#1610;&#1583;&#1606; &#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578; &#1576;&#1610;&#1588;&#1578;&#1585; &#1585;&#1575;&#1580;&#1593; &#1576;&#1607; &#1581;&#1575;&#1601;&#1592;&#1607; &#1605;&#1588;&#1578;&#1585;&#1603; &#1608; &#1587;&#1605;&#1575;&#1601;&#1608;&#1585; &#1576;&#1607; <A 
-href="http://www.postgresql.org/docs/view.php?version=current&amp;idoc=1&amp;file=kernel-resources.html">PostgreSQL 
-Administrator's Guide</A><span lang="en-us"> </span>&#1605;&#1585;&#1575;&#1580;&#1593;&#1607; &#1603;&#1606;&#1610;&#1583;.</font></p>
-<H4 dir="rtl"><font face="Tahoma"><A name=3.4>3.4</A>) <span lang="fa">&#1670;&#1585;&#1575; &#1605;&#1608;&#1602;&#1593;&#1610; &#1603;&#1607; &#1605;&#1606; &#1587;&#1593;&#1610; &#1605;&#1610;&#8204;&#1603;&#1606;&#1605; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; </span>postmaster<span lang="fa">&#8204; 
-&#1585;&#1575; &#1575;&#1580;&#1585;&#1575; &#1603;&#1606;&#1605; &#1582;&#1591;&#1575;&#1610;</span> <I><span lang="fa">&nbsp;</span>IpcSemaphoreCreate<span lang="fa">
-</span></I><span lang="fa">&#1605;&#1610;&#8204;&#1711;&#1610;&#1585;&#1605;&#1567;</span></font></H4>
-<p dir="rtl"><font face="Tahoma">&#1575;&#1711;&#1585; &#1662;&#1610;&#1594;&#1575;&#1605; &#1582;&#1591;&#1575;<span lang="en-us"> </span><i>
-(&#8204;pcSemaphoreCreate: semget failed (No space left on devi<span lang="en-us">ce
-</span>&nbsp;</i>&#1576;&#1575;&#1588;&#1583; &#1576;&#1607; &#1575;&#1610;&#1606; &#1605;&#1593;&#1606;&#1610; &#1575;&#1587;&#1578; &#1603;&#1607; &#1578;&#1593;&#1583;&#1575;&#1583; &#1587;&#1605;&#1575;&#1601;&#1608;&#1585;&#1607;&#1575;&#1610; &#1578;&#1606;&#1592;&#1610;&#1605; &#1588;&#1583;&#1607; &#1583;&#1585; &#1603;&#1585;&#1606;&#1604; &#1603;&#1575;&#1601;&#1610; 
-&#1606;&#1610;&#1587;&#1578;. <span lang="en-us">PostgreSQL</span>&#8204; &#1576;&#1585;&#1575;&#1610; &#1607;&#1585; &#1601;&#1585;&#1575;&#1610;&#1606;&#1583;&#1610; &#1603;&#1607; &#1583;&#1585;
-<span lang="en-us">backend</span> &#1575;&#1580;&#1585;&#1575; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583; &#1576;&#1607; &#1610;&#1603; &#1587;&#1605;&#1575;&#1601;&#1608;&#1585; &#1606;&#1610;&#1575;&#1586; &#1583;&#1575;&#1585;&#1583;. &#1610;&#1603; &#1585;&#1575;&#1607; &#1581;&#1604; 
-&#1605;&#1608;&#1602;&#1578; &#1576;&#1585;&#1575;&#1610; &#1575;&#1610;&#1606; &#1605;&#1587;&#1574;&#1604;&#1607; &#1570;&#1606; &#1575;&#1587;&#1578; &#1603;&#1607; <i><span lang="en-us">postmaster</span> </i>&#1585;&#1575; &#1576;&#1575; 
-&#1575;&#1593;&#1605;&#1575;&#1604; &#1605;&#1581;&#1583;&#1608;&#1583;&#1610;&#1578; &#1585;&#1608;&#1610; &#1578;&#1593;&#1583;&#1575;&#1583; &#1601;&#1585;&#1575;&#1610;&#1606;&#1583;&#1607;&#1575;&#1610;&#1610; &#1603;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1583; &#1575;&#1610;&#1580;&#1575;&#1583; &#1603;&#1606;&#1583; &#1575;&#1580;&#1585;&#1575; &#1603;&#1606;&#1610;&#1605;. &#1576;&#1585;&#1575;&#1610; &#1575;&#1610;&#1606;&#1603;&#1575;&#1585; 
-&#1575;&#1586; &#1711;&#1586;&#1610;&#1606;&#1607; <span lang="en-us">N-</span> &#1608; &#1610;&#1603; &#1593;&#1583;&#1583; &#1603;&#1605;&#1578;&#1585; &#1575;&#1586; 32 &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1603;&#1606;&#1610;&#1583;. &#1585;&#1575;&#1607; &#1581;&#1604; 
-&#1583;&#1575;&#1574;&#1605;&#1610; &#1575;&#1610;&#1606; &#1605;&#1588;&#1603;&#1604; &#1570;&#1606; &#1575;&#1587;&#1578; &#1603;&#1607; &#1662;&#1575;&#1585;&#1575;&#1605;&#1578;&#1585;&#1607;&#1575;&#1610; <span lang="en-us">SEMMNS, SEMMNI</span> 
-&#1603;&#1585;&#1606;&#1604; &#1585;&#1575; &#1575;&#1601;&#1586;&#1575;&#1610;&#1588; &#1583;&#1607;&#1610;&#1605;.</font></p>
-<P dir="rtl"><font face="Tahoma">&#1583;&#1585; &#1586;&#1605;&#1575;&#1606; &#1583;&#1587;&#1578;&#1585;&#1587;&#1610; &#1582;&#1610;&#1604;&#1610; &#1586;&#1610;&#1575;&#1583; &#1576;&#1607; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607;&#1548; &#8204; 
-&#1587;&#1605;&#1575;&#1601;&#1608;&#1585;&#1607;&#1575;&#1610; &#1606;&#1575;&#1605;&#1593;&#1578;&#1576;&#1585; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1606;&#1583; &#1576;&#1575;&#1593;&#1579; <span lang="en-us">crash</span>&#8204; &#1603;&#1585;&#1583;&#1606; &#1587;&#1610;&#1587;&#1578;&#1605; 
-&#1588;&#1608;&#1606;&#1583;.</font></P>
-<P dir="rtl"><font face="Tahoma">&#1575;&#1711;&#1585; &#1662;&#1610;&#1594;&#1575;&#1605; &#1582;&#1591;&#1575; &#1670;&#1610;&#1586; &#1583;&#1610;&#1711;&#1585;&#1610; &#1576;&#1575;&#1588;&#1583; &#1575;&#1581;&#1578;&#1605;&#1575;&#1604;&#1575;&#1611; &#1576;&#1607; &#1583;&#1604;&#1610;&#1604; 
-&#1570;&#1606; &#1575;&#1587;&#1578; &#1603;&#1607; &#1603;&#1585;&#1606;&#1604; &#1575;&#1586; &#1587;&#1605;&#1575;&#1601;&#1608;&#1585;&#1607;&#1575; &#1662;&#1588;&#1578;&#1610;&#1576;&#1575;&#1606;&#1610; &#1606;&#1605;&#1610;&#8204;&#1603;&#1606;&#1583;. &#1576;&#1585;&#1575;&#1610; &#1583;&#1610;&#1583;&#1606; &#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578; &#1576;&#1610;&#1588;&#1578;&#1585; &#1585;&#1575;&#1607;&#1606;&#1605;&#1575;&#1610; 
-&#1605;&#1583;&#1610;&#1585;&#1610;&#1578;&#1610; <span lang="en-us">PostgreSQL</span> &#1585;&#1575; &#1605;&#1591;&#1575;&#1604;&#1593;&#1607; &#1603;&#1606;&#1610;&#1583;.</font></P>
+<span lang="fa">چرا موقعي كه من سعي مي‌كنم برنامه </span>postmaster<span lang="fa">‌ 
+را اجرا كنم خطاي</span> <I>IpcMemoryCreate</I>&nbsp; <span lang="fa">مي‌گيرم؟</span></font></H4>
+<p dir="rtl"><font face="Tahoma">احتمالاً‌ قسمت ايجاد حافظه مشترك در كرنل به 
+درستي تنظيم نشده است و يا اينكه بايد فضاي حافظه اشتراكي در كرنل را زياد كرد. 
+ميزان دقيق حافظه مشترك مورد نياز بسته به معماري و نحوه استفاده از بافرها توسط 
+برنامه <span lang="en-us"><i>postmaster </i></span>دارد. براي بيشتر سيستم‌ها كه 
+با تنظيمات پيش‌فرض كار مي‌كنند مقدار اين حافظه حدود <span lang="en-us">1</span> 
+مگابايت است. براي ديدن اطلاعات بيشتر راجع به حافظه مشترك و سمافور به <A 
+href="http://www.postgresql.org/docs/view.php?version=current&amp;idoc=1&amp;file=kernel-resources.html">
+PostgreSQL Administrator&#39;s Guide</A><span lang="en-us"> </span>مراجعه كنيد.</font></p>
+<H4 dir="rtl"><font face="Tahoma"><A name=3.4>3.4</A>) <span lang="fa">چرا موقعي 
+كه من سعي مي‌كنم برنامه </span>postmaster<span lang="fa">‌ را اجرا كنم خطاي</span> <I><span lang="fa">
+&nbsp;</span>IpcSemaphoreCreate<span lang="fa">
+</span></I><span lang="fa">مي‌گيرم؟</span></font></H4>
+<p dir="rtl"><font face="Tahoma">اگر پيغام خطا<span lang="en-us"> </span><i>
+(‌pcSemaphoreCreate: semget failed (No space left on devi<span lang="en-us">ce
+</span>&nbsp;</i>باشد به اين معني است كه تعداد سمافورهاي تنظيم شده در كرنل كافي نيست. <span lang="en-us">
+PostgreSQL</span>‌ براي هر فرايندي كه در
+<span lang="en-us">backend</span> اجرا مي‌شود به يك سمافور نياز دارد. يك راه حل 
+موقت براي اين مسئله آن است كه <i><span lang="en-us">postmaster</span> </i>را با 
+اعمال محدوديت روي تعداد فرايندهايي كه مي‌تواند ايجاد كند اجرا كنيم. براي اينكار 
+از گزينه <span lang="en-us">N-</span> و يك عدد كمتر از 32 استفاده كنيد. راه حل 
+دائمي اين مشكل آن است كه پارامترهاي <span lang="en-us">SEMMNS, SEMMNI</span> 
+كرنل را افزايش دهيم.</font></p>
+<P dir="rtl"><font face="Tahoma">در زمان دسترسي خيلي زياد به پايگاه داده، ‌ 
+سمافورهاي نامعتبر مي‌توانند باعث <span lang="en-us">crash</span>‌ كردن سيستم 
+شوند.</font></P>
+<P dir="rtl"><font face="Tahoma">اگر پيغام خطا چيز ديگري باشد احتمالاً به دليل 
+آن است كه كرنل از سمافورها پشتيباني نمي‌كند. براي ديدن اطلاعات بيشتر راهنماي 
+مديريتي <span lang="en-us">PostgreSQL</span> را مطالعه كنيد.</font></P>
 <H4 dir="rtl"><font face="Tahoma"><A name=3.5>3.5</A>)  
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1575;&#1578;&#1589;&#1575;&#1604;&#1575;&#1578; &#1587;&#1575;&#1610;&#1585; &#1605;&#1575;&#1588;&#1610;&#1606;&#1607;&#1575; &#1585;&#1575; &#1603;&#1606;&#1578;&#1585;&#1604; &#1603;&#1606;&#1605;&#1567;</span></font></H4>
-<p dir="rtl"><font face="Tahoma">&#1576;&#1607; &#1589;&#1608;&#1585;&#1578; &#1662;&#1610;&#1588; &#1601;&#1585;&#1590; &#1601;&#1602;&#1591; &#1575;&#1586; &#1605;&#1575;&#1588;&#1610;&#1606;&#1610; &#1603;&#1607;
-<span lang="en-us">PostgreSQL </span>&#1585;&#1608;&#1610; &#1570;&#1606; &#1583;&#1585; &#1581;&#1575;&#1604; &#1575;&#1580;&#1585;&#1575;&#1587;&#1578; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606; &#1576;&#1575; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; 
-&#1587;&#1608;&#1603;&#1578;&#8204;&#1607;&#1575;&#1610; &#1610;&#1608;&#1606;&#1610;&#1603;&#1587;&#1610; &#1576;&#1607; &#1570;&#1606; &#1605;&#1578;&#1589;&#1604; &#1588;&#1583;. &#1587;&#1575;&#1610;&#1585; &#1605;&#1575;&#1588;&#1610;&#1606;&#8204;&#1607;&#1575; &#1602;&#1575;&#1583;&#1585; &#1606;&#1610;&#1587;&#1578;&#1606;&#1583; &#1576;&#1607; <span lang="en-us">
-PostgreSQL</span> &#1605;&#1578;&#1589;&#1604; &#1588;&#1608;&#1606;&#1583; &#1605;&#1711;&#1585; &#1570;&#1606;&#1603;&#1607; &#1711;&#1586;&#1610;&#1606;&#1607; <span lang="en-us">tcp_sockets</span> 
-&#1583;&#1585; &#1601;&#1575;&#1610;&#1604; <span lang="en-us">postgresql.conf</span> &#1601;&#1593;&#1575;&#1604; &#1588;&#1583;&#1607; &#1608; &#1607;&#1605;&#1670;&#1606;&#1610;&#1606; &#1576;&#1575; &#1575;&#1589;&#1604;&#1575;&#1581; 
-&#1601;&#1575;&#1610;&#1604; <span lang="en-us">PGDATA/ph_hba.conf</span> &#1607;&#1608;&#1610;&#1578;&#8204;&#1588;&#1606;&#1575;&#1587;&#1610; &#1605;&#1576;&#1578;&#1606;&#1610; &#1576;&#1585; &#1605;&#1610;&#1586;&#1576;&#1575;&#1606; &#1606;&#1610;&#1586; 
-&#1601;&#1593;&#1575;&#1604; &#1588;&#1608;&#1583;. &#1576;&#1575; &#1575;&#1610;&#1606; &#1603;&#1575;&#1585; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606; &#1575;&#1578;&#1589;&#1575;&#1604;&#1575;&#1578; <span lang="en-us">TCP/IP</span> &#1576;&#1607;
-<span lang="en-us">PostgreSQL</span>&#8204; &#1575;&#1610;&#1580;&#1575;&#1583; &#1603;&#1585;&#1583;.</font></p>
+<span lang="fa">چگونه مي‌توانم اتصالات ساير ماشينها را كنترل كنم؟</span></font></H4>
+<p dir="rtl"><font face="Tahoma">به صورت پيش فرض فقط از ماشيني كه
+<span lang="en-us">PostgreSQL </span>روي آن در حال اجراست مي‌توان با استفاده از 
+سوكت‌هاي يونيكسي به آن متصل شد. ساير ماشين‌ها قادر نيستند به <span lang="en-us">
+PostgreSQL</span> متصل شوند مگر آنكه گزينه <span lang="en-us">tcp_sockets</span> 
+در فايل <span lang="en-us">postgresql.conf</span> فعال شده و همچنين با اصلاح 
+فايل <span lang="en-us">PGDATA/ph_hba.conf</span> هويت‌شناسي مبتني بر ميزبان نيز 
+فعال شود. با اين كار مي‌توان اتصالات <span lang="en-us">TCP/IP</span> به
+<span lang="en-us">PostgreSQL</span>‌ ايجاد كرد.</font></p>
 <H4 dir="rtl"><font face="Tahoma"><A name=3.6>3.6</A>)  
-<span lang="fa">&#1576;&#1585;&#1575;&#1610; &#1603;&#1575;&#1585;&#1575;&#1610;&#1610; &#1576;&#1575;&#1604;&#1575;&#1578;&#1585; &#1608; &#1576;&#1607;&#1578;&#1585; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1605;&#1606; &#1670;&#1607; &#1578;&#1606;&#1592;&#1610;&#1605;&#1575;&#1578;&#1610; &#1585;&#1575; &#1576;&#1575;&#1610;&#1583; 
-&#1575;&#1606;&#1580;&#1575;&#1605; &#1583;&#1607;&#1605;&#1567;</span></font></H4>
-<p dir="rtl"><font face="Tahoma">&#1576;&#1607; &#1591;&#1608;&#1585; &#1581;&#1578;&#1605; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1575;&#1606;&#1583;&#1610;&#1587;&#8204;&#1607;&#1575; &#1576;&#1575;&#1593;&#1579; &#1576;&#1575;&#1604;&#1575; &#1585;&#1601;&#1578;&#1606; 
-&#1587;&#1585;&#1593;&#1578; &#1662;&#1575;&#1587;&#1582;&#8204;&#1711;&#1608;&#1610;&#1610; &#1576;&#1607; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578;&#8204;&#1607;&#1575; &#1582;&#1608;&#1575;&#1607;&#1583; &#1588;&#1583;. &#1583;&#1587;&#1578;&#1608;&#1585; <span lang="en-us">EXPLAIN ANALYZE</span> 
-&#1576;&#1607; &#1588;&#1605;&#1575; &#1575;&#1605;&#1603;&#1575;&#1606; &#1583;&#1610;&#1583;&#1606; &#1606;&#1581;&#1608;&#1607; &#1662;&#1585;&#1583;&#1575;&#1586;&#1588; &#1610;&#1603; &#1583;&#1587;&#1578;&#1608;&#1585; &#1578;&#1608;&#1587;&#1591; <span lang="en-us">PostgreSQL</span> 
-&#1585;&#1575; &#1605;&#1610;&#8204;&#1583;&#1607;&#1583;.</font></p>
-<p dir="rtl"><font face="Tahoma">&#1575;&#1711;&#1585; &#1588;&#1605;&#1575; &#1578;&#1593;&#1583;&#1575;&#1583; &#1586;&#1610;&#1575;&#1583;&#1610;<span lang="en-us"> INSERT</span>&#8204; 
-&#1583;&#1575;&#1585;&#1610;&#1583; &#1587;&#1593;&#1610; &#1603;&#1606;&#1610;&#1583; &#1570;&#1606;&#1607;&#1575; &#1585;&#1575; &#1576;&#1575; &#1602;&#1585;&#1575;&#1585; &#1583;&#1575;&#1583;&#1606; &#1583;&#1585; &#1610;&#1603; &#1601;&#1575;&#1610;&#1604; &#1576;&#1575; &#1583;&#1587;&#1578;&#1608;&#1585; <span lang="en-us">COPY</span>&#8204; 
-&#1575;&#1580;&#1585;&#1575; &#1603;&#1606;&#1610;&#1583;. &#1575;&#1610;&#1606; &#1583;&#1587;&#1578;&#1608;&#1585; &#1576;&#1607; &#1605;&#1585;&#1575;&#1578;&#1576; &#1575;&#1586; <span lang="en-us">INSERT</span> &#1587;&#1585;&#1610;&#1593;&#1578;&#1585; &#1575;&#1587;&#1578;. 
-&#1581;&#1578;&#1610;&#8204;&#1575;&#1604;&#1575;&#1605;&#1603;&#1575;&#1606; &#1587;&#1593;&#1610; &#1603;&#1606;&#1610;&#1583; &#1575;&#1586; &#1578;&#1585;&#1575;&#1603;&#1606;&#1588;&#1607;&#1575; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1606;&#1603;&#1606;&#1610;&#1583;. &#1578;&#1585;&#1575;&#1603;&#1606;&#1588;&#1607;&#1575; &#1605;&#1580;&#1605;&#1608;&#1593;&#1607; &#1583;&#1587;&#1578;&#1608;&#1585;&#1575;&#1578;&#1610; &#1607;&#1587;&#1578;&#1606;&#1583; 
-&#1603;&#1607; &#1576;&#1610;&#1606;&#1583; <span lang="en-us">BEGIN</span> &#1608; &#8205;<span lang="en-us">COMMIT</span> 
-&#1605;&#1610;&#8204;&#1570;&#1610;&#1606;&#1583;. &#1575;&#1711;&#1585; &#1610;&#1603; &#1583;&#1587;&#1578;&#1608;&#1585; &#1576;&#1607; &#1589;&#1608;&#1585;&#1578; &#1593;&#1575;&#1583;&#1610; &#1575;&#1580;&#1585;&#1575; &#1588;&#1608;&#1583; <span lang="en-us">PostgreSQL</span> 
-&#1582;&#1608;&#1583; &#1570;&#1606; &#1583;&#1587;&#1578;&#1608;&#1585; &#1585;&#1575; &#1576;&#1607; &#1589;&#1608;&#1585;&#1578; &#1610;&#1603; &#1578;&#1585;&#1575;&#1603;&#1606;&#1588; &#1605;&#1587;&#1578;&#1602;&#1604; &#1606;&#1711;&#1575;&#1607; &#1603;&#1585;&#1583;&#1607; &#1608; &#1575;&#1580;&#1585;&#1575; &#1605;&#1610;&#8204;&#1603;&#1606;&#1583;. &#1605;&#1608;&#1602;&#1593;&#1740; &#1603;&#1607; 
-&#1578;&#1594;&#1610;&#1610;&#1585;&#1575;&#1578; &#1586;&#1610;&#1575;&#1583;&#1610; &#1583;&#1585; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1575;&#1606;&#1580;&#1575;&#1605; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583; &#1575;&#1606;&#1583;&#1610;&#1587;&#1607;&#1575;&#1610; &#1602;&#1576;&#1604;&#1610; &#1585;&#1575; &#1581;&#1584;&#1601; &#1608; &#1605;&#1580;&#1583;&#1583;&#1575;&#1611;&#8204; &#1575;&#1610;&#1580;&#1575;&#1583; 
-&#1603;&#1606;&#1610;&#1583;.</font></p>
-<p dir="rtl"><font face="Tahoma">&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1711;&#1586;&#1610;&#1606;&#1607; <span lang="en-us">o -F-</span> 
-&#1583;&#1585; &#1601;&#1585;&#1605;&#1575;&#1606; <i><span lang="en-us">postmaster</span></i> &#1576;&#1575;&#1593;&#1579; &#1594;&#1610;&#1585; &#1601;&#1593;&#1575;&#1604; &#1603;&#1585;&#1583;&#1606;
-<span lang="en-us">()fsync</span> &#1605;&#1610;&#8204;&#1588;&#1608;&#1583;. &#1575;&#1610;&#1606; &#1583;&#1587;&#1578;&#1608;&#1585; &#1576;&#1593;&#1583; &#1575;&#1586; &#1607;&#1585; &#1578;&#1585;&#1575;&#1603;&#1606;&#1588; &#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578; &#1585;&#1575; 
-&#1585;&#1608;&#1610; &#1607;&#1575;&#1585;&#1583;&#1583;&#1610;&#1587;&#1603; &#1605;&#1606;&#1578;&#1602;&#1604; &#1605;&#1610;&#8204;&#1603;&#1606;&#1583;.</font></p>
-<p dir="rtl"><font face="Tahoma">&#1576;&#1585;&#1575;&#1610; &#1575;&#1601;&#1586;&#1575;&#1610;&#1588; &#1578;&#1593;&#1583;&#1575;&#1583; &#1576;&#1575;&#1601;&#1585;&#1607;&#1575;&#1610; &#1581;&#1575;&#1601;&#1592;&#1607; &#1575;&#1588;&#1578;&#1585;&#1575;&#1603;&#1610; &#1575;&#1586; 
-&#1711;&#1586;&#1610;&#1606;&#1607; <span lang="en-us">B-</span> &#1576;&#1607; &#1607;&#1605;&#1585;&#1575;&#1607; &#1601;&#1585;&#1605;&#1575;&#1606; <i><span lang="en-us">
-postmaster</span></i> &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1603;&#1606;&#1610;&#1583;. &#1578;&#1608;&#1580;&#1607; &#1603;&#1606;&#1610;&#1583; &#1603;&#1607; &#1575;&#1711;&#1585; &#1575;&#1610;&#1606; &#1593;&#1583;&#1583; &#1582;&#1610;&#1604;&#1610; &#1576;&#1586;&#1585;&#1711; &#1576;&#1575;&#1588;&#1583; &#1605;&#1605;&#1603;&#1606; 
-&#1575;&#1587;&#1578; <i><span lang="en-us">postmaster</span></i> &#1575;&#1589;&#1604;&#1575;&#1611;&#8204; &#1575;&#1580;&#1585;&#1575; &#1606;&#1588;&#1608;&#1583;. &#1607;&#1585; &#1576;&#1575;&#1601;&#1585; 8 &#1603;&#1610;&#1604;&#1608; 
-&#1576;&#1575;&#1610;&#1578; &#1581;&#1575;&#1601;&#1592;&#1607; &#1606;&#1610;&#1575;&#1586; &#1583;&#1575;&#1585;&#1583; &#1608; &#1578;&#1593;&#1583;&#1575;&#1583; &#1576;&#1575;&#1601;&#1585;&#1607;&#1575; &#1576;&#1607; &#1591;&#1608;&#1585; &#1662;&#1610;&#1588; &#1601;&#1585;&#1590; 64 &#1575;&#1587;&#1578;.</font></p>
-<p dir="rtl"><font face="Tahoma">&#1607;&#1605;&#1670;&#1606;&#1610;&#1606; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606; &#1576;&#1575; &#1711;&#1586;&#1610;&#1606;&#1607; <span lang="en-us">S-</span>&nbsp; 
-&#1605;&#1610;&#1586;&#1575;&#1606; &#1581;&#1575;&#1601;&#1592;&#1607;&#8204;&#1575;&#1610; &#1603;&#1607; &#1576;&#1585;&#1575;&#1610; &#1605;&#1585;&#1578;&#1576;&#8204;&#1587;&#1575;&#1586;&#1610;&#8204;&#1607;&#1575;&#1610; &#1605;&#1608;&#1602;&#1578; &#1578;&#1608;&#1587;&#1591; <span lang="en-us">PostgreSQL</span> 
-&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583; &#1585;&#1575; &#1575;&#1601;&#1586;&#1575;&#1610;&#1588; &#1583;&#1575;&#1583;. &#1605;&#1602;&#1583;&#1575;&#1585; &#1662;&#1610;&#1588; &#1601;&#1585;&#1590; 512 &#1603;&#1610;&#1604;&#1608; &#1576;&#1575;&#1610;&#1578; &#1575;&#1587;&#1578;.</font></p>
-<p dir="rtl"><font face="Tahoma">&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1583;&#1587;&#1578;&#1608;&#1585; <span lang="en-us">CLUSTER</span> 
-&#1606;&#1610;&#1586; &#1576;&#1585;&#1575;&#1610; &#1576;&#1575;&#1604;&#1575; &#1576;&#1585;&#1583;&#1606; &#1603;&#1575;&#1585;&#1575;&#1610;&#1610; &#1605;&#1608;&#1579;&#1585; &#1575; &#1587;&#1578;. &#1583;&#1587;&#1578;&#1608;&#1585; &#1585;&#1575;&#1607;&#1606;&#1605;&#1575;&#1610; <span lang="en-us">CLUSTER</span> 
-&#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578; &#1576;&#1610;&#1588;&#1578;&#1585;&#1610; &#1583;&#1585; &#1575;&#1610;&#1606; &#1586;&#1605;&#1610;&#1606;&#1607; &#1576;&#1607; &#1588;&#1605;&#1575; &#1605;&#1610;&#8204;&#1583;&#1607;&#1583;.</font></p>
+<span lang="fa">براي كارايي بالاتر و بهتر پايگاه داده من چه تنظيماتي را بايد 
+انجام دهم؟</span></font></H4>
+<p dir="rtl"><font face="Tahoma">به طور حتم استفاده از انديس‌ها باعث بالا رفتن 
+سرعت پاسخ‌گويي به درخواست‌ها خواهد شد. دستور <span lang="en-us">EXPLAIN ANALYZE</span> 
+به شما امكان ديدن نحوه پردازش يك دستور توسط <span lang="en-us">PostgreSQL</span> 
+را مي‌دهد.</font></p>
+<p dir="rtl"><font face="Tahoma">اگر شما تعداد زيادي<span lang="en-us"> INSERT</span>‌ 
+داريد سعي كنيد آنها را با قرار دادن در يك فايل با دستور <span lang="en-us">COPY</span>‌ 
+اجرا كنيد. اين دستور به مراتب از <span lang="en-us">INSERT</span> سريعتر است. 
+حتي‌الامكان سعي كنيد از تراكنشها استفاده نكنيد. تراكنشها مجموعه دستوراتي هستند 
+كه بيند <span lang="en-us">BEGIN</span> و ‍<span lang="en-us">COMMIT</span> 
+مي‌آيند. اگر يك دستور به صورت عادي اجرا شود <span lang="en-us">PostgreSQL</span> 
+خود آن دستور را به صورت يك تراكنش مستقل نگاه كرده و اجرا مي‌كند. موقعی كه 
+تغييرات زيادي در پايگاه داده انجام مي‌شود انديسهاي قبلي را حذف و مجدداً‌ ايجاد 
+كنيد.</font></p>
+<p dir="rtl"><font face="Tahoma">استفاده از گزينه <span lang="en-us">o -F-</span> 
+در فرمان <i><span lang="en-us">postmaster</span></i> باعث غير فعال كردن
+<span lang="en-us">()fsync</span> مي‌شود. اين دستور بعد از هر تراكنش اطلاعات را 
+روي هاردديسك منتقل مي‌كند.</font></p>
+<p dir="rtl"><font face="Tahoma">براي افزايش تعداد بافرهاي حافظه اشتراكي از 
+گزينه <span lang="en-us">B-</span> به همراه فرمان <i><span lang="en-us">
+postmaster</span></i> استفاده كنيد. توجه كنيد كه اگر اين عدد خيلي بزرگ باشد ممكن 
+است <i><span lang="en-us">postmaster</span></i> اصلاً‌ اجرا نشود. هر بافر 8 كيلو 
+بايت حافظه نياز دارد و تعداد بافرها به طور پيش فرض 64 است.</font></p>
+<p dir="rtl"><font face="Tahoma">همچنين مي‌توان با گزينه <span lang="en-us">S-</span>&nbsp; 
+ميزان حافظه‌اي كه براي مرتب‌سازي‌هاي موقت توسط <span lang="en-us">PostgreSQL</span> 
+استفاده مي‌شود را افزايش داد. مقدار پيش فرض 512 كيلو بايت است.</font></p>
+<p dir="rtl"><font face="Tahoma">استفاده از دستور <span lang="en-us">CLUSTER</span> 
+نيز براي بالا بردن كارايي موثر ا ست. دستور راهنماي <span lang="en-us">CLUSTER</span> 
+اطلاعات بيشتري در اين زمينه به شما مي‌دهد.</font></p>
 <H4 dir="rtl"><font face="Tahoma"><A name=3.7>3.7</A>)  
-<span lang="fa">&#1670;&#1607; &#1575;&#1605;&#1603;&#1575;&#1606;&#1575;&#1578;&#1610; &#1576;&#1585;&#1575;&#1610; &#1662;&#1610;&#1583;&#1575; &#1603;&#1585;&#1583;&#1606; &#1575;&#1588;&#1603;&#1575;&#1604;&#8204; &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;&#1567;</span></font></H4>
-<p dir="rtl"><font face="Tahoma"><span lang="en-us">PostgerSQL</span>&#8204; &#1575;&#1605;&#1603;&#1575;&#1606;&#1575;&#1578; 
-&#1605;&#1582;&#1578;&#1604;&#1601;&#1610; &#1576;&#1585;&#1575;&#1610; &#1711;&#1586;&#1575;&#1585;&#1588; &#1583;&#1575;&#1583;&#1606; &#1608;&#1590;&#1593;&#1610;&#1578; &#1582;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583; &#1603;&#1607; &#1576;&#1585;&#1575;&#1610; &#1575;&#1588;&#1603;&#1575;&#1604; &#1586;&#1583;&#1575;&#1610;&#1610; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606; &#1575;&#1586; &#1570;&#1606;&#1607;&#1575; 
-&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1603;&#1585;&#1583;.</font></p>
-<P dir="rtl"><font face="Tahoma">&#1576;&#1575; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1711;&#1586;&#1610;&#1606;&#1607; <span lang="en-us">enable-assert--</span> 
-&#1578;&#1593;&#1583;&#1575;&#1583; &#1586;&#1610;&#1575;&#1583;&#1610; <span lang="en-us">()assert</span> &#1576;&#1585;&#1575;&#1610; &#1605;&#1608;&#1606;&#1610;&#1578;&#1608;&#1585; &#1603;&#1585;&#1583;&#1606; &#1608; &#1578;&#1608;&#1602;&#1601; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; 
-&#1583;&#1585; &#1589;&#1608;&#1585;&#1578; &#1576;&#1585;&#1608;&#1586; &#1582;&#1591;&#1575;&#1607;&#1575;&#1610; &#1606;&#1575;&#1582;&#1608;&#1575;&#1587;&#1578;&#1607; &#1601;&#1593;&#1575;&#1604; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583;.</font></P>
-<P dir="rtl"><font face="Tahoma">&#1607;&#1605; <i><span lang="en-us">Postmaster</span></i> 
-&#1608; &#1607;&#1605; <i><span lang="en-us">postgres</span></i> &#1711;&#1586;&#1610;&#1606;&#1607;&#8204;&#1607;&#1575;&#1610; &#1586;&#1610;&#1575;&#1583;&#1610; &#1576;&#1585;&#1575;&#1610; &#1575;&#1588;&#1603;&#1575;&#1604; &#1586;&#1583;&#1575;&#1610;&#1610; 
-&#1583;&#1575;&#1585;&#1606;&#1583;. &#1605;&#1608;&#1602;&#1593;&#1610; &#1603;&#1607; <i><span lang="en-us">postmaster</span></i> &#1585;&#1575; &#1575;&#1580;&#1585;&#1575; &#1605;&#1610;&#8204;&#1603;&#1606;&#1610;&#1583; 
-&#1582;&#1585;&#1608;&#1580;&#1610; &#1575;&#1587;&#1578;&#1575;&#1606;&#1583;&#1575;&#1585;&#1583; &#1608; &#1582;&#1591;&#1575; &#1585;&#1575; &#1587;&#1605;&#1578; &#1601;&#1575;&#1610;&#1604; <span lang="en-us">log</span> &#1575;&#1585;&#1587;&#1575;&#1604; &#1603;&#1606;&#1610;&#1583;.</font></P>
+<span lang="fa">چه امكاناتي براي پيدا كردن اشكال‌ وجود دارد؟</span></font></H4>
+<p dir="rtl"><font face="Tahoma"><span lang="en-us">PostgerSQL</span>‌ امكانات 
+مختلفي براي گزارش دادن وضعيت خود دارد كه براي اشكال زدايي مي‌توان از آنها 
+استفاده كرد.</font></p>
+<P dir="rtl"><font face="Tahoma">با استفاده از گزينه <span lang="en-us">
+enable-assert--</span> 
+تعداد زيادي <span lang="en-us">()assert</span> براي مونيتور كردن و توقف برنامه 
+در صورت بروز خطاهاي ناخواسته فعال مي‌شود.</font></P>
+<P dir="rtl"><font face="Tahoma">هم <i><span lang="en-us">Postmaster</span></i> 
+و هم <i><span lang="en-us">postgres</span></i> گزينه‌هاي زيادي براي اشكال زدايي 
+دارند. موقعي كه <i><span lang="en-us">postmaster</span></i> را اجرا مي‌كنيد 
+خروجي استاندارد و خطا را سمت فايل <span lang="en-us">log</span> ارسال كنيد.</font></P>
 <div dir="ltr">
 	<PRE><font face="Tahoma">    cd /usr/local/pgsql
     ./bin/postmaster &gt;server.log 2&gt;&amp;1 &amp;
 </font></PRE>
 </div>
-<P dir="rtl"><font face="Tahoma">&#1575;&#1610;&#1606; &#1603;&#1575;&#1585; &#1610;&#1603; &#1601;&#1575;&#1610;&#1604;<span lang="en-us"> 
+<P dir="rtl"><font face="Tahoma">اين كار يك فايل<span lang="en-us"> 
 log</span> 
-&#1583;&#1585; &#1576;&#1575;&#1604;&#1575;&#1578;&#1585;&#1610;&#1606; &#1588;&#1575;&#1582;&#1607; <span lang="en-us">PostgreSQL</span>&#8204; &#1575;&#1610;&#1580;&#1575;&#1583; &#1605;&#1610;&#8204;&#1603;&#1606;&#1583;. &#1575;&#1610;&#1606; &#1601;&#1575;&#1610;&#1604; 
-&#1581;&#1575;&#1608;&#1610; &#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578; &#1605;&#1601;&#1610;&#1583;&#1610; &#1583;&#1585; &#1605;&#1608;&#1585;&#1583; &#1605;&#1587;&#1575;&#1574;&#1604; &#1608; &#1582;&#1591;&#1575;&#1607;&#1575;&#1610;&#1610; &#1575;&#1587;&#1578; &#1603;&#1607; &#1576;&#1585;&#1575;&#1610; &#1587;&#1585;&#1608;&#1585; &#1575;&#1578;&#1601;&#1575;&#1602; &#1575;&#1601;&#1578;&#1575;&#1583;&#1607; &#1575;&#1587;&#1578;. 
-&#1576;&#1585;&#1575;&#1610; &#1583;&#1610;&#1583;&#1606; &#1580;&#1586;&#1574;&#1610;&#1575;&#1578; &#1576;&#1610;&#1588;&#1578;&#1585; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606; &#1575;&#1586; <span lang="en-us">d-</span>&nbsp; &#1576;&#1607; &#1607;&#1605;&#1585;&#1575;&#1607; 
-&#1601;&#1585;&#1605;&#1575;&#1606; <i><span lang="en-us">postmaster</span>&#8204;</i> &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1603;&#1585;&#1583;. &#1711;&#1586;&#1610;&#1606;&#1607;
-<span lang="en-us">d-</span> &#1607;&#1605;&#1670;&#1606;&#1610;&#1606; &#1610;&#1603; &#1593;&#1583;&#1583; &#1605;&#1610;&#8204;&#1711;&#1610;&#1585;&#1583; &#1603;&#1607; &#1606;&#1588;&#1575;&#1606; &#1583;&#1607;&#1606;&#1583;&#1607; &#1587;&#1591;&#1581; &#1580;&#1586;&#1574;&#1610;&#1575;&#1578;&#1610; &#1575;&#1587;&#1578; 
-&#1603;&#1607; &#1583;&#1585; <span lang="en-us">Log</span>&#8204;&#1601;&#1575;&#1610;&#1604; &#1606;&#1608;&#1588;&#1578;&#1607; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583;. &#1576;&#1575; &#1576;&#1575;&#1604;&#1575;&#1576;&#1585;&#1583;&#1606; &#1575;&#1610;&#1606; &#1593;&#1583;&#1583; &#1581;&#1580;&#1605; 
-&#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578; &#1578;&#1608;&#1604;&#1610;&#1583; &#1588;&#1583;&#1607; &#1583;&#1585; <span lang="en-us">Log</span>&#1601;&#1575;&#1610;&#1604; &#1606;&#1610;&#1586; &#1575;&#1601;&#1586;&#1575;&#1610;&#1588; &#1605;&#1610;&#8204;&#1610;&#1575;&#1576;&#1583;.</font></P>
-<P dir="rtl"><font face="Tahoma">&#1575;&#1711;&#1585; <i><span lang="en-us">postmaster</span></i> 
-&#1583;&#1585; &#1581;&#1575;&#1604; &#1575;&#1580;&#1585;&#1575; &#1606;&#1576;&#1575;&#1588;&#1583;&#1548; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1610;&#1605; <span lang="en-us">postgres</span> &#1585;&#1575; &#1576;&#1607; &#1591;&#1608;&#1585; &#1605;&#1587;&#1578;&#1602;&#1610;&#1605; 
-&#1575;&#1586; &#1582;&#1591; &#1601;&#1585;&#1605;&#1575;&#1606; &#1575;&#1580;&#1585;&#1575; &#1603;&#1585;&#1583;&#1607; &#1608;&nbsp; &#1583;&#1587;&#1578;&#1608;&#1585;&#1575;&#1578; <span lang="en-us">SQL</span> &#1585;&#1575; &#1576;&#1607; &#1570;&#1606; 
-&#1576;&#1583;&#1607;&#1610;&#1605;. &#1575;&#1610;&#1606; &#1603;&#1575;&#1585; &#1601;&#1602;&#1591; &#1576;&#1585;&#1575;&#1610; &#1575;&#1588;&#1603;&#1575;&#1604;&#8204;&#1610;&#1575;&#1576;&#1610; &#1578;&#1608;&#1589;&#1610;&#1607; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583;. &#1578;&#1608;&#1580;&#1607; &#1603;&#1606;&#1610;&#1583; &#1603;&#1607; &#1583;&#1585; &#1575;&#1610;&#1606; &#1581;&#1575;&#1604;&#1578; &#1610;&#1603; 
-&#1583;&#1587;&#1578;&#1608;&#1585; &#1576;&#1575; &#1603;&#1575;&#1585;&#1575;&#1603;&#1578;&#1585; <span lang="en-us">newline</span> &#1582;&#1575;&#1578;&#1605;&#1607; &#1662;&#1610;&#1583;&#1575; &#1605;&#1610;&#8204;&#1603;&#1606;&#1583; &#1608; &#1606;&#1607; &#1576;&#1575;
-<span lang="en-us">;. </span>&#1575;&#1711;&#1585; <span lang="en-us">postmaster</span> &#1585;&#1575; &#1576;&#1575; 
-&#1575;&#1605;&#1603;&#1575;&#1606;&#1575;&#1578; &#1575;&#1588;&#1603;&#1575;&#1604;&#8204;&#1610;&#1575;&#1576;&#1610; &#1603;&#1575;&#1605;&#1662;&#1610;&#1604; &#1603;&#1585;&#1583;&#1607; &#1576;&#1575;&#1588;&#1610;&#1583; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1610;&#1583; &#1576;&#1575; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1610;&#1603; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; &#1575;&#1588;&#1603;&#1575;&#1604;&#8204;&#1610;&#1575;&#1576; 
-&#1575;&#1580;&#1585;&#1575;&#1610; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; &#1585;&#1575; &#1605;&#1608;&#1606;&#1610;&#1578;&#1608;&#1585; &#1603;&#1606;&#1610;&#1583;. </font></P>
-<P dir="rtl"><font face="Tahoma">&#1575;&#1711;&#1585; <i><span lang="en-us">postmaster</span></i> 
-&#1583;&#1585; &#1581;&#1575;&#1604; &#1575;&#1580;&#1585;&#1575; &#1576;&#1575;&#1588;&#1583; &#1576;&#1575; &#1583;&#1587;&#1578;&#1608;&#1585; <span lang="en-us">psql</span> &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606; &#1576;&#1607;
-<span lang="en-us">postgres</span> &#1605;&#1578;&#1589;&#1604; &#1588;&#1583;. &#1576;&#1575; &#1662;&#1610;&#1583;&#1575; &#1603;&#1585;&#1583;&#1606; <span lang="en-us">PID</span> 
-&#1601;&#1585;&#1575;&#1610;&#1606;&#1583; <span lang="en-us">postgres</span> &#1603;&#1607; <span lang="en-us">psql</span> &#1576;&#1607; 
-&#1570;&#1606; &#1605;&#1578;&#1589;&#1604; &#1588;&#1583;&#1607; &#1575;&#1587;&#1578; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606; &#1570;&#1606; &#1585;&#1575; &#1605;&#1608;&#1606;&#1610;&#1578;&#1608;&#1585; &#1603;&#1585;&#1583;. &#1576;&#1585;&#1575;&#1610; &#1575;&#1610;&#1606;&#1603;&#1575;&#1585; &#1576;&#1575;&#1610;&#1583; &#1610;&#1603; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; &#1575;&#1588;&#1603;&#1575;&#1604;&#8204;&#1610;&#1575;&#1576; 
-&#1585;&#1575; &#1576;&#1607; &#1570;&#1606; <span lang="en-us">pid</span> &#1605;&#1578;&#1589;&#1604; &#1603;&#1585;&#1583;. &#1575;&#1711;&#1585; &#1576;&#1582;&#1608;&#1575;&#1607;&#1610;&#1605; &#1576;&#1575;&#1604;&#1575; &#1570;&#1605;&#1583;&#1606;
-<span lang="en-us">postgres</span> &#1585;&#1575; &#1605;&#1608;&#1606;&#1610;&#1578;&#1608;&#1585; &#1603;&#1606;&#1610;&#1605; &#1603;&#1575;&#1601;&#1610; &#1575;&#1587;&#1578;<span lang="en-us"> 
-&quot;PGOPTIONS=&quot;-W</span> <span lang="en-us">n</span> &#1608; <span lang="en-us">psql</span> 
-&#1585;&#1575; &#1575;&#1580;&#1585;&#1575; &#1603;&#1606;&#1610;&#1605;. &#1575;&#1610;&#1606; &#1603;&#1575;&#1585; &#1576;&#1575;&#1593;&#1579; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583; &#1603;&#1607; <span lang="en-us">postgres</span> &#1576;&#1575;
-<span lang="en-us">n</span> &#1579;&#1575;&#1606;&#1610;&#1607; &#1578;&#1575;&#1582;&#1610;&#1585; &#1575;&#1580;&#1585;&#1575; &#1588;&#1608;&#1583; &#1608; &#1583;&#1585; &#1575;&#1610;&#1606; &#1601;&#1575;&#1589;&#1604;&#1607; &#1588;&#1605;&#1575; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1610;&#1583; 
-&#1576;&#1585;&#1606;&#1575;&#1605;&#1607; &#1575;&#1588;&#1603;&#1575;&#1604;&#8204;&#1610;&#1575;&#1576; &#1585;&#1575; &#1576;&#1607; &#1570;&#1606; &#1605;&#1578;&#1589;&#1604; &#1603;&#1585;&#1583;&#1607; &#1608; &#1576;&#1575; &#1602;&#1585;&#1575;&#1585; &#1583;&#1575;&#1583;&#1606; &#1610;&#1603; &#1606;&#1602;&#1591;&#1607; &#1578;&#1608;&#1602;&#1601;&nbsp; &#1585;&#1608;&#1606;&#1583; &#1575;&#1580;&#1585;&#1575;&#1610; 
-&#1570;&#1606; &#1585;&#1575; &#1605;&#1608;&#1606;&#1610;&#1578;&#1608;&#1585; &#1603;&#1606;&#1610;&#1583;.</font></P>
+در بالاترين شاخه <span lang="en-us">PostgreSQL</span>‌ ايجاد مي‌كند. اين فايل 
+حاوي اطلاعات مفيدي در مورد مسائل و خطاهايي است كه براي سرور اتفاق افتاده است. 
+براي ديدن جزئيات بيشتر مي‌توان از <span lang="en-us">d-</span>&nbsp; به همراه 
+فرمان <i><span lang="en-us">postmaster</span>‌</i> استفاده كرد. گزينه
+<span lang="en-us">d-</span> همچنين يك عدد مي‌گيرد كه نشان دهنده سطح جزئياتي است 
+كه در <span lang="en-us">Log</span>‌فايل نوشته مي‌شود. با بالابردن اين عدد حجم 
+اطلاعات توليد شده در <span lang="en-us">Log</span>فايل نيز افزايش مي‌يابد.</font></P>
+<P dir="rtl"><font face="Tahoma">اگر <i><span lang="en-us">postmaster</span></i> 
+در حال اجرا نباشد، مي‌توانيم <span lang="en-us">postgres</span> را به طور مستقيم 
+از خط فرمان اجرا كرده و&nbsp; دستورات <span lang="en-us">SQL</span> را به آن 
+بدهيم. اين كار فقط براي اشكال‌يابي توصيه مي‌شود. توجه كنيد كه در اين حالت يك 
+دستور با كاراكتر <span lang="en-us">newline</span> خاتمه پيدا مي‌كند و نه با
+<span lang="en-us">;. </span>اگر <span lang="en-us">postmaster</span> را با 
+امكانات اشكال‌يابي كامپيل كرده باشيد مي‌توانيد با استفاده از يك برنامه اشكال‌ياب 
+اجراي برنامه را مونيتور كنيد. </font></P>
+<P dir="rtl"><font face="Tahoma">اگر <i><span lang="en-us">postmaster</span></i> 
+در حال اجرا باشد با دستور <span lang="en-us">psql</span> مي‌توان به
+<span lang="en-us">postgres</span> متصل شد. با پيدا كردن <span lang="en-us">PID</span> 
+فرايند <span lang="en-us">postgres</span> كه <span lang="en-us">psql</span> به 
+آن متصل شده است مي‌توان آن را مونيتور كرد. براي اينكار بايد يك برنامه اشكال‌ياب 
+را به آن <span lang="en-us">pid</span> متصل كرد. اگر بخواهيم بالا آمدن
+<span lang="en-us">postgres</span> را مونيتور كنيم كافي است<span lang="en-us"> 
+&quot;PGOPTIONS=&quot;-W</span> <span lang="en-us">n</span> و <span lang="en-us">psql</span> 
+را اجرا كنيم. اين كار باعث مي‌شود كه <span lang="en-us">postgres</span> با
+<span lang="en-us">n</span> ثانيه تاخير اجرا شود و در اين فاصله شما مي‌توانيد 
+برنامه اشكال‌ياب را به آن متصل كرده و با قرار دادن يك نقطه توقف&nbsp; روند اجراي 
+آن را مونيتور كنيد.</font></P>
 <P dir="rtl"><font face="Tahoma"><i><span lang="en-us">postgres</span></i> 
-&#1711;&#1586;&#1610;&#1606;&#1607;&#8204;&#1607;&#1575;&#1610; <span lang="en-us">s-</span>&#8204; &#1608; <span lang="en-us">A-</span> &#1608;
-<span lang="en-us">t-</span>&#8204; &#1583;&#1575;&#1585;&#1583; &#1603;&#1607; &#1576;&#1585;&#1575;&#1610; &#1662;&#1610;&#1583;&#1575; &#1603;&#1585;&#1583;&#1606; &#1575;&#1588;&#1603;&#1575;&#1604;&#1575;&#1578; &#1576;&#1587;&#1610;&#1575;&#1585; &#1605;&#1606;&#1575;&#1587;&#1576; &#1607;&#1587;&#1578;&#1606;&#1583;.</font></P>
-<p dir="rtl"><font face="Tahoma">&#1588;&#1605;&#1575; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1610;&#1583; <span lang="en-us">postgreSQL</span> 
-&#1585;&#1575; &#1576;&#1575; &#1575;&#1605;&#1603;&#1575;&#1606;&#1575;&#1578; <span lang="en-us">profiling</span> &#1603;&#1575;&#1605;&#1662;&#1610;&#1604; &#1603;&#1606;&#1610;&#1583;. &#1575;&#1610;&#1606; &#1603;&#1575;&#1585; &#1576;&#1575;&#1593;&#1579; 
-&#1605;&#1610;&#8204;&#1588;&#1608;&#1583; &#1603;&#1607; &#1586;&#1605;&#1575;&#1606; &#1575;&#1580;&#1585;&#1575;&#1610; &#1583;&#1602;&#1610;&#1602; &#1607;&#1585; &#1578;&#1575;&#1576;&#1593; &#1583;&#1585; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; &#1605;&#1588;&#1582;&#1589; &#1588;&#1608;&#1583;. &#1582;&#1585;&#1608;&#1580;&#1610;&#8204;&#1607;&#1575;&#1610; &#1578;&#1608;&#1604;&#1610;&#1583; &#1588;&#1583;&#1607; &#1583;&#1585; &#1575;&#1610;&#1606; 
-&#1581;&#1575;&#1604;&#1578; &#1583;&#1585; &#1601;&#1575;&#1610;&#1604; <span lang="en-us">DLINUX_PROFILE.</span> &#1585;&#1610;&#1582;&#1578;&#1607; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583;.</font></p>
+گزينه‌هاي <span lang="en-us">s-</span>‌ و <span lang="en-us">A-</span> و
+<span lang="en-us">t-</span>‌ دارد كه براي پيدا كردن اشكالات بسيار مناسب هستند.</font></P>
+<p dir="rtl"><font face="Tahoma">شما مي‌توانيد <span lang="en-us">postgreSQL</span> 
+را با امكانات <span lang="en-us">profiling</span> كامپيل كنيد. اين كار باعث 
+مي‌شود كه زمان اجراي دقيق هر تابع در برنامه مشخص شود. خروجي‌هاي توليد شده در اين 
+حالت در فايل <span lang="en-us">DLINUX_PROFILE.</span> ريخته مي‌شود.</font></p>
 <H4 dir="rtl"><font face="Tahoma"><A name=3.8>3.8</A>) 
-<span lang="fa">&#1670;&#1585;&#1575; &#1605;&#1608;&#1602;&#1593;&#1610; &#1603;&#1607; &#1605;&#1606; &#1605;&#1610;&#8204;&#1582;&#1608;&#1575;&#1607;&#1605; &#1576;&#1607; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1608;&#1589;&#1604; &#1588;&#1608;&#1605; &#1662;&#1610;&#1575;&#1605;</span> <I>"Sorry, too many clients&quot;
-<span lang="fa">&#8204;</span></I><span lang="fa">&#1605;&#1610;&#8204;&#1711;&#1610;&#1585;&#1605;&#1567;</span></font></H4>
-<p dir="rtl"><font face="Tahoma">&#1588;&#1605;&#1575; &#1576;&#1575;&#1610;&#1583; &#1581;&#1583;&#1575;&#1603;&#1579;&#1585; &#1578;&#1593;&#1583;&#1575;&#1583; &#1601;&#1585;&#1575;&#1610;&#1606;&#1583;&#1607;&#1575;&#1610; &#1607;&#1605;&#1586;&#1605;&#1575;&#1606; <i>
-<span lang="en-us">postmaster</span></i> &#1585;&#1575; &#1575;&#1601;&#1586;&#1575;&#1610;&#1588; &#1583;&#1607;&#1610;&#1583;. &#1605;&#1602;&#1583;&#1575;&#1585; &#1662;&#1610;&#1588; &#1601;&#1585;&#1590; 32 &#1575;&#1587;&#1578;. 
-&#1576;&#1585;&#1575;&#1610; &#1575;&#1601;&#1586;&#1575;&#1610;&#1588; &#1570;&#1606; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606; &#1575;&#1586; &#1711;&#1586;&#1610;&#1606;&#1607; <span lang="en-us">N-</span> &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1603;&#1585;&#1583; &#1608; &#1610;&#1575; 
-&#1601;&#1575;&#1610;&#1604; <i><span lang="en-us">postgresql.conf</span></i> &#1585;&#1575; &#1575;&#1589;&#1604;&#1575;&#1581; &#1606;&#1605;&#1608;&#1583;</font></p>
-<p dir="rtl"><font face="Tahoma">&#1578;&#1608;&#1580;&#1607; &#1603;&#1606;&#1610;&#1583; &#1603;&#1607; &#1575;&#1711;&#1585; <span lang="en-us">N-</span> 
-&#1605;&#1602;&#1583;&#1575;&#1585;&#1610; &#1576;&#1610;&#1588;&#1578;&#1585; &#1575;&#1586; 32 &#1583;&#1575;&#1588;&#1578;&#1607; &#1576;&#1575;&#1588;&#1583; &#1576;&#1575;&#1610;&#1583; &#1605;&#1602;&#1583;&#1575;&#1585; <span lang="en-us">B-</span> &#1585;&#1575; &#1606;&#1610;&#1586; 
-&#1575;&#1601;&#1586;&#1575;&#1610;&#1588; &#1583;&#1607;&#1610;&#1605;. &#1575;&#1610;&#1606; &#1605;&#1602;&#1583;&#1575;&#1585; &#1576;&#1575;&#1610;&#1583; &#1581;&#1583;&#1575;&#1602;&#1604; &#1583;&#1608; &#1576;&#1585;&#1575;&#1576;&#1585; &#1605;&#1602;&#1583;&#1575;&#1585; <span lang="en-us">N-</span>&#8204; 
-&#1576;&#1575;&#1588;&#1583;. &#1576;&#1585;&#1575;&#1610; &#1575;&#1593;&#1583;&#1575;&#1583; &#1582;&#1610;&#1604;&#1610; &#1576;&#1575;&#1604;&#1575; &#1576;&#1575;&#1610;&#1583; &#1576;&#1593;&#1590;&#1610; &#1575;&#1586; &#1662;&#1575;&#1585;&#1575;&#1605;&#1578;&#1585;&#1607;&#1575;&#1610; &#1603;&#1585;&#1606;&#1604; &#1585;&#1575; &#1606;&#1610;&#1586; &#1575;&#1589;&#1604;&#1575;&#1581; &#1603;&#1585;&#1583;. 
-&#1662;&#1575;&#1585;&#1575;&#1605;&#1578;&#1585;&#1607;&#1575;&#1610;&#1610; &#1606;&#1592;&#1610;&#1585; &#1581;&#1583;&#1575;&#1603;&#1579;&#1585; &#1575;&#1606;&#1583;&#1575;&#1586;&#1607; &#1581;&#1575;&#1601;&#1592;&#1607; &#1575;&#1588;&#1578;&#1585;&#1575;&#1603;&#1610; <span lang="en-us">SHMMAX</span> &#1548; 
-&#1581;&#1583;&#1575;&#1603;&#1579;&#1585; &#1578;&#1593;&#1583;&#1575;&#1583; &#1587;&#1605;&#1575;&#1601;&#1608;&#1585;&#1607;&#1575;<span lang="en-us"> SEMMNI</span>&#8204; &#1608; <span lang="en-us">
-SEMMNS </span>&#1548; &#1581;&#1583;&#1575;&#1603;&#1579;&#1585; &#1578;&#1593;&#1583;&#1575;&#1583; &#1601;&#1585;&#1575;&#1610;&#1606;&#1583;&#1607;&#1575; <span lang="en-us">NPROC</span>&#1548; &#1581;&#1583;&#1575;&#1603;&#1579;&#1585; 
-&#1601;&#1585;&#1575;&#1610;&#1606;&#1583;&#1607;&#1575;&#1610; &#1610;&#1603; &#1603;&#1575;&#1585;&#1576;&#1585; <span lang="en-us">MAXUPRC</span> &#1608; &#1581;&#1583;&#1575;&#1603;&#1579;&#1585; &#1601;&#1575;&#1610;&#1604;&#1607;&#1575;&#1610; &#1576;&#1575;&#1586;
-<span lang="en-us">NFILE</span> &#1608; <span lang="en-us">NINODE. </span>&#1610;&#1603;&#1610; &#1575;&#1586; 
-&#1583;&#1604;&#1575;&#1610;&#1604;&#1610; &#1603;&#1607; &#1578;&#1593;&#1583;&#1575;&#1583; &#1575;&#1578;&#1589;&#1575;&#1604;&#1575;&#1578; &#1607;&#1605;&#1586;&#1605;&#1575;&#1606; <span lang="en-us">postgreSQL</span> &#1605;&#1581;&#1583;&#1608;&#1583; &#1575;&#1587;&#1578; &#1570;&#1606; 
-&#1575;&#1587;&#1578; &#1603;&#1607; &#1606;&#1610;&#1575;&#1586;&#1607;&#1575;&#1610; <span lang="en-us">PostgreSQL</span> &#1576;&#1610;&#1588; &#1575;&#1586; &#1605;&#1606;&#1575;&#1576;&#1593; &#1605;&#1608;&#1580;&#1608;&#1583; &#1587;&#1610;&#1587;&#1578;&#1605; 
-&#1606;&#1576;&#1575;&#1588;&#1583;.</font></p>
+<span lang="fa">چرا موقعي كه من مي‌خواهم به پايگاه داده وصل شوم پيام</span> <I>
+&quot;Sorry, too many clients&quot;
+<span lang="fa">‌</span></I><span lang="fa">مي‌گيرم؟</span></font></H4>
+<p dir="rtl"><font face="Tahoma">شما بايد حداكثر تعداد فرايندهاي همزمان <i>
+<span lang="en-us">postmaster</span></i> را افزايش دهيد. مقدار پيش فرض 32 است. 
+براي افزايش آن مي‌توان از گزينه <span lang="en-us">N-</span> استفاده كرد و يا 
+فايل <i><span lang="en-us">postgresql.conf</span></i> را اصلاح نمود</font></p>
+<p dir="rtl"><font face="Tahoma">توجه كنيد كه اگر <span lang="en-us">N-</span> 
+مقداري بيشتر از 32 داشته باشد بايد مقدار <span lang="en-us">B-</span> را نيز 
+افزايش دهيم. اين مقدار بايد حداقل دو برابر مقدار <span lang="en-us">N-</span>‌ 
+باشد. براي اعداد خيلي بالا بايد بعضي از پارامترهاي كرنل را نيز اصلاح كرد. 
+پارامترهايي نظير حداكثر اندازه حافظه اشتراكي <span lang="en-us">SHMMAX</span> ، 
+حداكثر تعداد سمافورها<span lang="en-us"> SEMMNI</span>‌ و <span lang="en-us">
+SEMMNS </span>، حداكثر تعداد فرايندها <span lang="en-us">NPROC</span>، حداكثر 
+فرايندهاي يك كاربر <span lang="en-us">MAXUPRC</span> و حداكثر فايلهاي باز
+<span lang="en-us">NFILE</span> و <span lang="en-us">NINODE. </span>يكي از 
+دلايلي كه تعداد اتصالات همزمان <span lang="en-us">postgreSQL</span> محدود است آن 
+است كه نيازهاي <span lang="en-us">PostgreSQL</span> بيش از منابع موجود سيستم 
+نباشد.</font></p>
 <H4 dir="rtl"><font face="Tahoma"><A name=3.9>3.9</A>) <span lang="fa"> 
-&#1583;&#1585; &#1588;&#1575;&#1582;&#1607; </span>&nbsp;<I>pgsql_tmp</I> <span lang="fa">&nbsp;&#1670;&#1607; &#1670;&#1610;&#1586;&#1610; &#1602;&#1585;&#1575;&#1585; &#1583;&#1575;&#1585;&#1583;&#1567;</span></font></H4>
-<p dir="rtl"><font face="Tahoma">&#1583;&#1585;&#1575;&#1610;&#1606; &#1588;&#1575;&#1582;&#1607; &#1601;&#1575;&#1610;&#1604;&#1607;&#1575;&#1610; &#1605;&#1608;&#1602;&#1578;&#1610; &#1602;&#1585;&#1575;&#1585; &#1583;&#1575;&#1585;&#1583; &#1603;&#1607; &#1576;&#1575; &#1575;&#1580;&#1585;&#1575;&#1610; 
-&#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578;&#1607;&#1575; &#1576;&#1607; &#1608;&#1580;&#1608;&#1583; &#1570;&#1605;&#1583;&#1607; &#1575;&#1587;&#1578;. &#1576;&#1607; &#1593;&#1606;&#1608;&#1575;&#1606; &#1605;&#1579;&#1575;&#1604; &#1575;&#1711;&#1585; &#1576;&#1585;&#1575;&#1610; &#1575;&#1580;&#1585;&#1575;&#1610; &#1583;&#1587;&#1578;&#1608;&#1585;
-<span lang="en-us">order by</span> &#1606;&#1610;&#1575;&#1586; &#1576;&#1607; &#1575;&#1606;&#1580;&#1575;&#1605; &#1605;&#1585;&#1578;&#1576; &#1587;&#1575;&#1586;&#1610; &#1576;&#1575;&#1588;&#1583; &#1608; &#1583;&#1585; &#1589;&#1608;&#1585;&#1578;&#1610; &#1603;&#1607; 
-&#1581;&#1575;&#1601;&#1592;&#1607; &#1605;&#1588;&#1582;&#1589; &#1588;&#1583;&#1607; &#1576;&#1575; &#1711;&#1586;&#1610;&#1606;&#1607; <span lang="en-us">S-</span> &#1576;&#1585;&#1575;&#1610; &#1575;&#1610;&#1606;&#1603;&#1575;&#1585; &#1603;&#1575;&#1601;&#1610; &#1606;&#1576;&#1575;&#1588;&#1583; 
-&#1587;&#1610;&#1587;&#1578;&#1605; &#1610;&#1603; &#1601;&#1575;&#1610;&#1604; &#1605;&#1608;&#1602;&#1578; &#1583;&#1585; &#1575;&#1610;&#1606; &#1588;&#1575;&#1582;&#1607; &#1575;&#1610;&#1580;&#1575;&#1583; &#1605;&#1610;&#8204;&#1603;&#1606;&#1583; &#1578;&#1575; &#1593;&#1605;&#1604; &#1605;&#1585;&#1578;&#1576; &#1587;&#1575;&#1586;&#1610; &#1585;&#1575; &#1575;&#1606;&#1580;&#1575;&#1605; &#1583;&#1607;&#1583;.</font></p>
-<P dir="rtl"><font face="Tahoma">&#1601;&#1575;&#1610;&#1604;&#1607;&#1575;&#1610; &#1605;&#1608;&#1602;&#1578; &#1605;&#1593;&#1605;&#1608;&#1604;&#1575;&#1611; &#1576;&#1607; &#1589;&#1608;&#1585;&#1578; &#1575;&#1578;&#1608;&#1605;&#1575;&#1578;&#1610;&#1603; &#1662;&#1575;&#1603; 
-&#1605;&#1610;&#8204;&#1588;&#1608;&#1583; &#1575;&#1605;&#1575; &#1575;&#1711;&#1585; <span lang="en-us">postgreSQL</span> &#1583;&#1585; &#1581;&#1610;&#1606; &#1605;&#1585;&#1578;&#1576; &#1587;&#1575;&#1586;&#1610;
-<span lang="en-us">crash</span>&#8204; &#1603;&#1606;&#1583; &#1570;&#1606; &#1601;&#1575;&#1610;&#1604;&#1607;&#1575; &#1576;&#1575;&#1602;&#1610; &#1605;&#1610;&#8204;&#1605;&#1575;&#1606;&#1606;&#1583;. &#1576;&#1575;
-<span lang="en-us">stop</span> &#1608; <span lang="en-us">start</span> &#1603;&#1585;&#1583;&#1606; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; <i>
-<span lang="en-us">postmaster</span></i> &#1575;&#1610;&#1606; &#1601;&#1575;&#1610;&#1604;&#1607;&#1575; &#1662;&#1575;&#1603; &#1605;&#1610;&#8204;&#1588;&#1608;&#1606;&#1583;.</font></P>
+در شاخه </span>&nbsp;<I>pgsql_tmp</I> <span lang="fa">&nbsp;چه چيزي قرار دارد؟</span></font></H4>
+<p dir="rtl"><font face="Tahoma">دراين شاخه فايلهاي موقتي قرار دارد كه با اجراي 
+درخواستها به وجود آمده است. به عنوان مثال اگر براي اجراي دستور
+<span lang="en-us">order by</span> نياز به انجام مرتب سازي باشد و در صورتي كه 
+حافظه مشخص شده با گزينه <span lang="en-us">S-</span> براي اينكار كافي نباشد 
+سيستم يك فايل موقت در اين شاخه ايجاد مي‌كند تا عمل مرتب سازي را انجام دهد.</font></p>
+<P dir="rtl"><font face="Tahoma">فايلهاي موقت معمولاً به صورت اتوماتيك پاك 
+مي‌شود اما اگر <span lang="en-us">postgreSQL</span> در حين مرتب سازي
+<span lang="en-us">crash</span>‌ كند آن فايلها باقي مي‌مانند. با
+<span lang="en-us">stop</span> و <span lang="en-us">start</span> كردن برنامه <i>
+<span lang="en-us">postmaster</span></i> اين فايلها پاك مي‌شوند.</font></P>
 <H4 dir="rtl"><font face="Tahoma"><A name=3.10>3.10</A>) 
-<span lang="fa">&#1670;&#1585;&#1575; &#1576;&#1585;&#1575;&#1610; &#1576;&#1607; &#1585;&#1608;&#1586; &#1603;&#1585;&#1583;&#1606; &#1606;&#1587;&#1582;&#1607; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1605;&#1606; &#1576;&#1575;&#1610;&#1583; &#1603;&#1604; &#1583;&#1575;&#1583;&#1607; &#1607;&#1575; &#1585;&#1575;
-</span>dump<span lang="fa">&#8204; &#1608; &#1605;&#1580;&#1583;&#1583;&#1575;&#1611; </span>restore<span lang="fa"> &#1603;&#1606;&#1605;&#1567;</span></font></H4>
-<p dir="rtl"><font face="Tahoma">&#1578;&#1610;&#1605; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; &#1606;&#1608;&#1610;&#1587; <span lang="en-us">postgreSQL</span> 
-&#1583;&#1585; &#1606;&#1587;&#1582;&#1607;&#8204;&#1607;&#1575;&#1610; &#1575;&#1585;&#1575;&#1574;&#1607; &#1588;&#1583;&#1607; &#1603;&#1607; &#1601;&#1602;&#1591; <span lang="en-us">minor</span> &#1570;&#1606;&#1607;&#1575; &#1605;&#1578;&#1601;&#1575;&#1608;&#1578; &#1575;&#1587;&#1578; &#1601;&#1602;&#1591; 
-&#1578;&#1594;&#1610;&#1610;&#1585;&#1575;&#1578; &#1603;&#1608;&#1670;&#1603;&#1610; &#1575;&#1593;&#1605;&#1575;&#1604; &#1605;&#1610;&#8204;&#1603;&#1606;&#1606;&#1583;&#1563; &#1576;&#1606;&#1575;&#1576;&#1585;&#1575;&#1610;&#1606; &#1576;&#1585;&#1575;&#1610; &#1576;&#1607; &#1585;&#1608;&#1586; &#1603;&#1585;&#1583;&#1606; &#1575;&#1586; &#1606;&#1587;&#1582;&#1607;
-<span lang="en-us">7.2</span>&#8204;&#1576;&#1607; 7.2.1<span lang="en-us"> </span>&#1606;&#1610;&#1575;&#1586;&#1610; &#1576;&#1607;
-<span lang="en-us">dump</span> &#1608; <span lang="en-us">restore</span> &#1606;&#1610;&#1587;&#1578;. &#1575;&#1605;&#1575; &#1583;&#1585; 
-&#1606;&#1587;&#1582;&#1607;&#8204;&#1607;&#1575;&#1610;&#1610; &#1603;&#1607; <span lang="en-us">major</span> &#1570;&#1606;&#1607;&#1575; &#1578;&#1594;&#1610;&#1610;&#1585; &#1605;&#1610;&#8204;&#1603;&#1606;&#1583; &#1594;&#1575;&#1604;&#1576;&#1575;&#1611; &#1587;&#1575;&#1582;&#1578;&#1575;&#1585; 
-&#1583;&#1575;&#1582;&#1604;&#1610; &#1580;&#1583;&#1575;&#1608;&#1604; &#1608; &#1601;&#1575;&#1610;&#1604;&#1607;&#1575;&#1610; &#1583;&#1575;&#1583;&#1607; &#1578;&#1594;&#1610;&#1610;&#1585; &#1605;&#1610;&#8204;&#1603;&#1606;&#1583;. &#1575;&#1610;&#1606; &#1578;&#1594;&#1610;&#1610;&#1585;&#1575;&#1578; &#1605;&#1593;&#1605;&#1608;&#1604;&#1575;&#1611;&#8204; &#1662;&#1610;&#1670;&#1610;&#1583;&#1607; &#1607;&#1587;&#1578;&#1606;&#1583;. &#1576;&#1585;&#1575;&#1610; 
-&#1575;&#1606;&#1578;&#1602;&#1575;&#1604; &#1583;&#1575;&#1583;&#1607;&#8204;&#1607;&#1575;&#1610; &#1605;&#1608;&#1580;&#1608;&#1583; &#1583;&#1585; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1583;&#1585; &#1575;&#1610;&#1606; &#1581;&#1575;&#1604;&#1578; &#1576;&#1575;&#1610;&#1583; &#8204;&#1575;&#1586; <span lang="en-us">
-dump</span> &#1608; <span lang="en-us">restore</span> &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1603;&#1585;&#1583;.</font></p>
-<P dir="rtl"><font face="Tahoma">&#1583;&#1585; &#1606;&#1587;&#1582;&#1607;&#8204;&#1607;&#1575;&#1610;&#1610; &#1603;&#1607; &#1587;&#1575;&#1582;&#1578;&#1575;&#1585; &#1585;&#1608;&#1610; &#1583;&#1610;&#1587;&#1603; &#1578;&#1594;&#1610;&#1610;&#1585;&#1610; &#1606;&#1605;&#1610;&#8204;&#1603;&#1606;&#1583; 
-&#1605;&#1610; &#1578;&#1608;&#1575;&#1606; &#1575;&#1586; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; <span lang="en-us">pg_upgrade</span> &#1576;&#1585;&#1575;&#1610; &#1576;&#1607; &#1585;&#1608;&#1586; &#1603;&#1585;&#1583;&#1606; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; 
-&#1583;&#1575;&#1583;&#1607; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1603;&#1585;&#1583; &#1576;&#1583;&#1608;&#1606; &#1575;&#1610;&#1606;&#1603;&#1607; &#1606;&#1610;&#1575;&#1586;&#1610; &#1576;&#1607; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; <span lang="en-us">dump</span> &#1608;
-<span lang="en-us">restore </span>&nbsp;&#1576;&#1575;&#1588;&#1583;. &#1583;&#1585; &#1610;&#1575;&#1583;&#1583;&#1575;&#1588;&#1578;&#1610; &#1603;&#1607; &#1576;&#1607; &#1607;&#1605;&#1585;&#1575;&#1607; &#1607;&#1585; &#1578;&#1608;&#1586;&#1610;&#1593; 
-&#1605;&#1610;&#8204;&#1570;&#1610;&#1583; &#1584;&#1603;&#1585; &#1588;&#1583;&#1607; &#1575;&#1587;&#1578; &#1603;&#1607; &#1570;&#1610;&#1575; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; <span lang="en-us">pg_upgrade</span> &#1576;&#1585;&#1575;&#1610; &#1575;&#1610;&#1606; 
-&#1578;&#1608;&#1586;&#1610;&#1593; &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583; &#1610;&#1575; &#1582;&#1610;&#1585;.</font></P>
+<span lang="fa">چرا براي به روز كردن نسخه پايگاه داده من بايد كل داده ها را
+</span>dump<span lang="fa">‌ و مجدداً </span>restore<span lang="fa"> كنم؟</span></font></H4>
+<p dir="rtl"><font face="Tahoma">تيم برنامه نويس <span lang="en-us">postgreSQL</span> 
+در نسخه‌هاي ارائه شده كه فقط <span lang="en-us">minor</span> آنها متفاوت است فقط 
+تغييرات كوچكي اعمال مي‌كنند؛ بنابراين براي به روز كردن از نسخه
+<span lang="en-us">7.2</span>‌به 7.2.1<span lang="en-us"> </span>نيازي به
+<span lang="en-us">dump</span> و <span lang="en-us">restore</span> نيست. اما در 
+نسخه‌هايي كه <span lang="en-us">major</span> آنها تغيير مي‌كند غالباً ساختار 
+داخلي جداول و فايلهاي داده تغيير مي‌كند. اين تغييرات معمولاً‌ پيچيده هستند. براي 
+انتقال داده‌هاي موجود در پايگاه داده در اين حالت بايد ‌از <span lang="en-us">
+dump</span> و <span lang="en-us">restore</span> استفاده كرد.</font></p>
+<P dir="rtl"><font face="Tahoma">در نسخه‌هايي كه ساختار روي ديسك تغييري نمي‌كند 
+مي توان از برنامه <span lang="en-us">pg_upgrade</span> براي به روز كردن پايگاه 
+داده استفاده كرد بدون اينكه نيازي به استفاده از <span lang="en-us">dump</span> و
+<span lang="en-us">restore </span>&nbsp;باشد. در يادداشتي كه به همراه هر توزيع مي‌آيد 
+ذكر شده است كه آيا برنامه <span lang="en-us">pg_upgrade</span> براي اين توزيع 
+وجود دارد يا خير.</font></P>
 <H4 dir="rtl"><font face="Tahoma"><A name=3.11>3.11</A>)  
-<span lang="fa">&#1575;&#1586; &#1670;&#1607; &#1587;&#1582;&#1578; &#1575;&#1601;&#1586;&#1575;&#1585;&#1610; &#1576;&#1575;&#1610;&#1583; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1603;&#1606;&#1605;&#1567;</span><BR>
+<span lang="fa">از چه سخت افزاري بايد استفاده كنم؟</span><BR>
 </font></H4>
-<P dir="rtl"><font face="Tahoma">&#1670;&#1608;&#1606; &#1575;&#1603;&#1579;&#1585; &#1587;&#1582;&#1578;&#8204;&#1575;&#1601;&#1586;&#1575;&#1585;&#1607;&#1575;&#1610; <span lang="en-us">PC
-</span>&nbsp;&#1587;&#1575;&#1586;&#1711;&#1575;&#1585; &#1607;&#1587;&#1578;&#1606;&#1583; &#1605;&#1585;&#1583;&#1605; &#1601;&#1603;&#1585; &#1605;&#1610;&#8204;&#1603;&#1606;&#1606;&#1583; &#1603;&#1607; &#1603;&#1610;&#1601;&#1610;&#1578; &#1570;&#1606;&#1607;&#1575; &#1606;&#1610;&#1586; &#1610;&#1603;&#1587;&#1575;&#1606; &#1575;&#1587;&#1578;. &#1583;&#1585; 
-&#1581;&#1575;&#1604;&#1610;&#1603;&#1607; &#1575;&#1610;&#1606;&#1591;&#1608;&#1585; &#1606;&#1610;&#1587;&#1578;. &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1607;&#1575;&#1585;&#1583;&#1607;&#1575;&#1610; <span lang="en-us">SCSI</span> &#1608; 
-&#1581;&#1575;&#1601;&#1592;&#1607;&#8204;&#1607;&#1575;&#1610; <span lang="en-us">ECC</span> &#1608; &#1605;&#1575;&#1583;&#1585;&#1576;&#1585;&#1583;&#1607;&#1575;&#1610; &#1576;&#1575; &#1603;&#1610;&#1601;&#1610;&#1578; &#1576;&#1575;&#1604;&#1575; &#1606;&#1587;&#1576;&#1578; &#1576;&#1607; &#1587;&#1582;&#1578; 
-&#1575;&#1601;&#1586;&#1575;&#1585;&#1607;&#1575;&#1610; &#1575;&#1585;&#1586;&#1575;&#1606;&#1578;&#1585; &#1606;&#1578;&#1575;&#1610;&#1580; &#1576;&#1607;&#1578;&#1585;&#1610; &#1575;&#1586; &#1606;&#1592;&#1585; &#1603;&#1575;&#1585;&#1575;&#1610;&#1610; &#1608; &#1662;&#1575;&#1610;&#1583;&#1575;&#1585;&#1610; &#1587;&#1610;&#1587;&#1578;&#1605; &#1576;&#1607;&#1605;&#1585;&#1575;&#1607; &#1582;&#1608;&#1575;&#1607;&#1583; &#1583;&#1575;&#1588;&#1578;.<span lang="en-us"> 
-PostgreSQL</span> &#1585;&#1608;&#1610; &#1576;&#1610;&#1588;&#1578;&#1585; &#1587;&#1582;&#1578; &#1575;&#1601;&#1586;&#1575;&#1585;&#1607;&#1575; &#1575;&#1580;&#1585;&#1575; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583; &#1575;&#1605;&#1575; &#1575;&#1711;&#1585; &#1603;&#1575;&#1585;&#1575;&#1610;&#1610; &#1608; &#1575;&#1591;&#1605;&#1610;&#1606;&#1575;&#1606; 
-&#1601;&#1575;&#1603;&#1578;&#1608;&#1585;&#1607;&#1575;&#1610; &#1605;&#1607;&#1605;&#1610; &#1607;&#1587;&#1578;&#1606;&#1583; &#1576;&#1575;&#1610;&#1583; &#1587;&#1582;&#1578; &#1575;&#1601;&#1586;&#1575;&#1585; &#1605;&#1606;&#1575;&#1587;&#1576; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1588;&#1608;&#1583;. &#1583;&#1585; &#1711;&#1585;&#1608;&#1607;&#1607;&#1575;&#1610; &#1662;&#1587;&#1578;&#1610; &#1583;&#1585; &#1605;&#1608;&#1585;&#1583; 
-&#1587;&#1582;&#1578; &#1575;&#1601;&#1586;&#1575;&#1585; &#1605;&#1606;&#1575;&#1587;&#1576;&nbsp; &#1608; &#1575;&#1606;&#1578;&#1582;&#1575;&#1576; &#1570;&#1606; &#1576;&#1581;&#1579; &#1588;&#1583;&#1607; &#1575;&#1587;&#1578;. </font></P>
+<P dir="rtl"><font face="Tahoma">چون اكثر سخت‌افزارهاي <span lang="en-us">PC
+</span>&nbsp;سازگار هستند مردم فكر مي‌كنند كه كيفيت آنها نيز يكسان است. در حاليكه 
+اينطور نيست. استفاده از هاردهاي <span lang="en-us">SCSI</span> و حافظه‌هاي <span lang="en-us">
+ECC</span> و مادربردهاي با كيفيت بالا نسبت به سخت افزارهاي ارزانتر نتايج بهتري 
+از نظر كارايي و پايداري سيستم بهمراه خواهد داشت.<span lang="en-us"> 
+PostgreSQL</span> روي بيشتر سخت افزارها اجرا مي‌شود اما اگر كارايي و اطمينان 
+فاكتورهاي مهمي هستند بايد سخت افزار مناسب استفاده شود. در گروههاي پستي در مورد 
+سخت افزار مناسب&nbsp; و انتخاب آن بحث شده است. </font></P>
 <HR dir="rtl">
 
-<H2 align=center dir="rtl"><span lang="fa"><font face="Tahoma">&#1587;&#1608;&#1575;&#1604;&#1575;&#1578; &#1593;&#1605;&#1604;&#1610;&#1575;&#1578;&#1610;</font></span></H2>
-<H4 dir="rtl"><font face="Tahoma"><A name=4.1>4.1</A>) &#1578;&#1601;&#1575;&#1608;&#1578; &#1576;&#1610;&#1606;
-<span lang="en-us">binary cursors</span> &#1608; <span lang="en-us">Normal cursors</span> 
-&#1670;&#1610;&#1587;&#1578;&#1567;</font></H4>
-<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1585;&#1575;&#1607;&#1606;&#1605;&#1575;&#1610; &#1583;&#1587;&#1578;&#1608;&#1585; </span>DECLARE<span lang="fa">&#8204; 
-&#1585;&#1575; &#1605;&#1591;&#1575;&#1604;&#1593;&#1607; &#1603;&#1606;&#1610;&#1583;.</span></font></p>
+<H2 align=center dir="rtl"><span lang="fa"><font face="Tahoma">سوالات عملياتي</font></span></H2>
+<H4 dir="rtl"><font face="Tahoma"><A name=4.1>4.1</A>) تفاوت بين
+<span lang="en-us">binary cursors</span> و <span lang="en-us">Normal cursors</span> 
+چيست؟</font></H4>
+<p dir="rtl"><font face="Tahoma"><span lang="fa">راهنماي دستور </span>DECLARE<span lang="fa">‌ 
+را مطالعه كنيد.</span></font></p>
 <H4 dir="rtl"><font face="Tahoma"><A name=4.2>4.2</A>) 
-<span lang="fa">&#1605;&#1606; &#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1601;&#1602;&#1591; &#1585;&#1608;&#1610; &#1670;&#1606;&#1583; &#1585;&#1583;&#1610;&#1601; &#1575;&#1608;&#1604; 
-&#1610;&#1575; &#1610;&#1603; &#1585;&#1583;&#1610;&#1601; &#1578;&#1589;&#1575;&#1583;&#1601;&#1610; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578; </span>SELECT<span lang="fa">&#8204; 
-&#1576;&#1586;&#1606;&#1605;&#1567;</span></font></H4>
-<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1585;&#1575;&#1607;&#1606;&#1605;&#1575;&#1610; &#1583;&#1587;&#1578;&#1608;&#1585; </span>FETCH
-<span lang="fa">&nbsp;&#1610;&#1575; </span>SELECT...LIMIT<span lang="fa"> &#1585;&#1575; &#1576;&#1576;&#1610;&#1606;&#1610;&#1583;.</span></font></p>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1583;&#1585; &#1608;&#1575;&#1602;&#1593; &#1603;&#1604; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578; &#1576;&#1575;&#1610;&#1583; &#1576;&#1585;&#1585;&#1587;&#1610; &#1608; 
-&#1575;&#1585;&#1586;&#1610;&#1575;&#1576;&#1610; &#1588;&#1608;&#1583; &#1581;&#1578;&#1610; &#1575;&#1711;&#1585; &#1588;&#1605;&#1575; &#1601;&#1602;&#1591; &#1670;&#1606;&#1583; &#1585;&#1583;&#1610;&#1601; &#1575;&#1608;&#1604; &#1585;&#1575; &#1576;&#1582;&#1608;&#1575;&#1607;&#1610;&#1583;. &#1576;&#1585;&#1575;&#1610; &#1605;&#1579;&#1575;&#1604; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578; </span>
-ORDER BY<span lang="fa"> &#1585;&#1575; &#1583;&#1585; &#1606;&#1592;&#1585; &#1576;&#1711;&#1610;&#1585;&#1610;&#1583;. &#1575;&#1711;&#1585; &#1575;&#1606;&#1583;&#1610;&#1587; &#1610;&#1575; &#1606;&#1605;&#1575;&#1610;&#1607;&#8204;&#1575;&#1610; &#1576;&#1585;&#1575;&#1610; </span>ORDER 
-BY<span lang="fa"> &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1588;&#1578;&#1607; &#1576;&#1575;&#1588;&#1583;&#1548;&#8204;</span>postgreSQL<span lang="fa">&#8204; &#1605;&#1605;&#1603;&#1606; &#1575;&#1587;&#1578; 
-&#1576;&#1578;&#1608;&#1575;&#1606;&#1583; &#1601;&#1602;&#1591; &#1670;&#1606;&#1583; &#1587;&#1591;&#1585; &#1575;&#1608;&#1604; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578;&#1610; &#1585;&#1575; &#1575;&#1585;&#1586;&#1610;&#1575;&#1576;&#1610; &#1603;&#1606;&#1583; &#1608; &#1610;&#1575; &#1575;&#1610;&#1606;&#1603;&#1607; &#1603;&#1604; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578; &#1662;&#1585;&#1583;&#1575;&#1586;&#1588; &#1588;&#1608;&#1583; 
-&#1578;&#1575; &#1578;&#1593;&#1583;&#1575;&#1583; &#1585;&#1583;&#1610;&#1601;&#8204;&#1607;&#1575;&#1610; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578;&#1610; &#1578;&#1608;&#1604;&#1610;&#1583; &#1588;&#1608;&#1583;.</span></font></P>
-<P dir="rtl"><span lang="fa"><font face="Tahoma">&#1576;&#1585;&#1575;&#1610; &#1575;&#1606;&#1578;&#1582;&#1575;&#1576; &#1610;&#1603; &#1587;&#1591;&#1585; &#1578;&#1589;&#1575;&#1583;&#1601;&#1610; &#1576;&#1607; 
-&#1585;&#1608;&#1588; &#1586;&#1610;&#1585; &#1593;&#1605;&#1604; &#1605;&#1610;&#8204;&#1603;&#1606;&#1610;&#1605;:</font></span><div dir="ltr">
+<span lang="fa">من چگونه مي‌توانم فقط روي چند رديف اول يا يك رديف تصادفي درخواست </span>
+SELECT<span lang="fa">‌ بزنم؟</span></font></H4>
+<p dir="rtl"><font face="Tahoma"><span lang="fa">راهنماي دستور </span>FETCH
+<span lang="fa">&nbsp;يا </span>SELECT...LIMIT<span lang="fa"> را ببينيد.</span></font></p>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">در واقع كل درخواست بايد بررسي و 
+ارزيابي شود حتي اگر شما فقط چند رديف اول را بخواهيد. براي مثال درخواست </span>
+ORDER BY<span lang="fa"> را در نظر بگيريد. اگر انديس يا نمايه‌اي براي </span>
+ORDER BY<span lang="fa"> وجود داشته باشد،‌</span>postgreSQL<span lang="fa">‌ 
+ممكن است بتواند فقط چند سطر اول درخواستي را ارزيابي كند و يا اينكه كل درخواست 
+پردازش شود تا تعداد رديف‌هاي درخواستي توليد شود.</span></font></P>
+<P dir="rtl"><span lang="fa"><font face="Tahoma">براي انتخاب يك سطر تصادفي به 
+روش زير عمل مي‌كنيم:</font></span><div dir="ltr">
 	<PRE><font face="Tahoma">    SELECT col
     FROM tab
     ORDER BY random()
@@ -913,30 +934,30 @@ BY<span lang="fa"> &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1588;&#1578;&#16
 </font></PRE>
 </div>
 <H4 dir="rtl"><font face="Tahoma"><A name=4.3>4.3</A>) 
-<span lang="fa">&#1605;&#1606; &#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1604;&#1610;&#1587;&#1578;&#1610; &#1575;&#1586; &#1580;&#1583;&#1575;&#1608;&#1604; &#1610;&#1575; &#1587;&#1575;&#1610;&#1585; &#1670;&#1610;&#1586;&#1607;&#1575;&#1610;&#1610; &#1603;&#1607; &#1583;&#1585; </span>
-psql<span lang="fa">&#8204; &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583; &#1585;&#1575; &#1576;&#1576;&#1610;&#1606;&#1605;&#1567;</span></font></H4>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1576;&#1585;&#1575;&#1610; &#1583;&#1610;&#1583;&#1606; &#1604;&#1610;&#1587;&#1578; &#1580;&#1583;&#1575;&#1608;&#1604; &#1583;&#1587;&#1578;&#1608;&#1585;&nbsp;
-</span>dt\<span lang="fa"> &#1585;&#1575; &#1583;&#1585; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; </span><i>psql</i><span lang="fa"><i>&#8204;</i> 
-&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1603;&#1606;&#1610;&#1583;. &#1576;&#1585;&#1575;&#1610; &#1583;&#1610;&#1583;&#1606; &#1604;&#1610;&#1587;&#1578; &#1603;&#1575;&#1605;&#1604; &#1601;&#1585;&#1605;&#1575;&#1606;&#1607;&#1575; </span>?\<span lang="fa"> &#1585;&#1575; &#1575;&#1580;&#1585;&#1575; 
-&#1603;&#1606;&#1610;&#1583;. &#1585;&#1575;&#1607; &#1583;&#1610;&#1711;&#1585; &#1582;&#1608;&#1575;&#1606;&#1583;&#1606; &#1605;&#1578;&#1606; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; </span>psql<span lang="fa">&#8204; &#1575;&#1587;&#1578; &#1603;&#1607; &#1583;&#1585; &#1588;&#1575;&#1582;&#1607;
-</span> <I>pgsql/src/bin/psql/describe.c <span lang="fa">&#8204;</span></I><span lang="fa">&#1602;&#1585;&#1575;&#1585; 
-&#1583;&#1575;&#1585;&#1583;.<I> </I>&#1575;&#1610;&#1606; &#1601;&#1575;&#1610;&#1604; &#1581;&#1575;&#1608;&#1610; &#1601;&#1585;&#1575;&#1605;&#1610;&#1606; </span>SQL<span lang="fa">&#1610;&#1610; &#1575;&#1587;&#1578; &#1603;&#1607; &#1582;&#1585;&#1608;&#1580;&#1610; &#1585;&#1575; 
-&#1576;&#1585;&#1575;&#1610;&nbsp; &#1583;&#1587;&#1578;&#1608;&#1585;&#1575;&#1578;&#1610; &#1603;&#1607; &#1576;&#1575; </span>\<span lang="fa">&#8204;&#1583;&#1585; </span>psql<span lang="fa"> 
-&#1588;&#1585;&#1608;&#1593; &#1605;&#1610;&#8204;&#1588;&#1608;&#1606;&#1583; &#1578;&#1608;&#1604;&#1610;&#1583; &#1605;&#1610;&#8204;&#1603;&#1606;&#1606;&#1583;. &#1585;&#1575;&#1607; &#1583;&#1610;&#1711;&#1585; &#1575;&#1580;&#1585;&#1575;&#1610; </span>psql<span lang="fa"> &#1576;&#1575; &#1711;&#1586;&#1610;&#1606;&#1607;
-</span>E-<span lang="fa">&#8204;&#1575;&#1587;&#1578;. &#1575;&#1610;&#1606;&#1603;&#1575;&#1585; &#1576;&#1575;&#1593;&#1579; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583; &#1603;&#1607; </span>psql<span lang="fa"> 
-&#1602;&#1576;&#1604; &#1575;&#1586; &#1575;&#1580;&#1585;&#1575; &#1607;&#1585; &#1583;&#1587;&#1578;&#1608;&#1585; </span>SQL<span lang="fa">&#8204;&#1605;&#1578;&#1606;&#1575;&#1592;&#1585; &#1570;&#1606; &#1585;&#1575; &#1606;&#1588;&#1575;&#1606; &#1583;&#1607;&#1583;. </span>
-PostgreSQL<span lang="fa">&#8204;&#1607;&#1605;&#1670;&#1606;&#1610;&#1606; &#1610;&#1603; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; </span>SQLi<span lang="fa"> &#1583;&#1575;&#1585;&#1583; &#1603;&#1607; 
-&#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606; &#1576;&#1575; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1570;&#1606;&nbsp; &#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578; &#1583;&#1575;&#1582;&#1604;&#1610; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1585;&#1575; &#1575;&#1587;&#1578;&#1582;&#1585;&#1575;&#1580; &#1603;&#1585;&#1583;.</span></font></P>
+<span lang="fa">من چگونه مي‌توانم ليستي از جداول يا ساير چيزهايي كه در </span>
+psql<span lang="fa">‌ وجود دارد را ببينم؟</span></font></H4>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">براي ديدن ليست جداول دستور&nbsp;
+</span>dt\<span lang="fa"> را در برنامه </span><i>psql</i><span lang="fa"><i>‌</i> 
+استفاده كنيد. براي ديدن ليست كامل فرمانها </span>?\<span lang="fa"> را اجرا 
+كنيد. راه ديگر خواندن متن برنامه </span>psql<span lang="fa">‌ است كه در شاخه
+</span> <I>pgsql/src/bin/psql/describe.c <span lang="fa">‌</span></I><span lang="fa">قرار 
+دارد.<I> </I>اين فايل حاوي فرامين </span>SQL<span lang="fa">يي است كه خروجي را 
+براي&nbsp; دستوراتي كه با </span>\<span lang="fa">‌در </span>psql<span lang="fa"> 
+شروع مي‌شوند توليد مي‌كنند. راه ديگر اجراي </span>psql<span lang="fa"> با گزينه
+</span>E-<span lang="fa">‌است. اينكار باعث مي‌شود كه </span>psql<span lang="fa"> 
+قبل از اجرا هر دستور </span>SQL<span lang="fa">‌متناظر آن را نشان دهد. </span>
+PostgreSQL<span lang="fa">‌همچنين يك برنامه </span>SQLi<span lang="fa"> دارد كه 
+مي‌توان با استفاده از آن&nbsp; اطلاعات داخلي پايگاه داده را استخراج كرد.</span></font></P>
 <H4 dir="rtl"><font face="Tahoma"><A name=4.4>4.4</A>)  
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1610;&#1603; &#1587;&#1578;&#1608;&#1606; &#1580;&#1583;&#1608;&#1604; &#1585;&#1575; &#1581;&#1584;&#1601; &#1605;&#1610;&#8204;&#1603;&#1606;&#1610;&#1583;&#1567; &#1670;&#1711;&#1608;&#1606;&#1607; &#1606;&#1608;&#1593; &#1583;&#1575;&#1583;&#1607; &#1570;&#1606; &#1585;&#1575; &#1593;&#1608;&#1590; 
-&#1603;&#1606;&#1610;&#1605;&#1567;</span></font></H4>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1581;&#1584;&#1601; &#1610;&#1603; &#1587;&#1578;&#1608;&#1606; &#1583;&#1585; &#1578;&#1608;&#1586;&#1610;&#1593; </span>7.3
-<span lang="fa">&#1576;&#1575; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1583;&#1587;&#1578;&#1608;&#1585; </span>ALTER TABLE DROP COLUMN<span lang="fa"> 
-&#1575;&#1590;&#1575;&#1601;&#1607; &#1588;&#1583;&#1607; &#1575;&#1587;&#1578;. &#1583;&#1585; &#1606;&#1587;&#1582;&#1607;&#8204;&#1607;&#1575;&#1610; &#1602;&#1576;&#1604;&#1610; &#1576;&#1607; &#1585;&#1608;&#1588; &#1586;&#1610;&#1585; &#1593;&#1605;&#1604; &#1603;&#1606;&#1610;&#1583;:</span></font></P>
+<span lang="fa">چگونه يك ستون جدول را حذف مي‌كنيد؟ چگونه نوع داده آن را عوض 
+كنيم؟</span></font></H4>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">حذف يك ستون در توزيع </span>7.3
+<span lang="fa">با استفاده از دستور </span>ALTER TABLE DROP COLUMN<span lang="fa"> 
+اضافه شده است. در نسخه‌هاي قبلي به روش زير عمل كنيد:</span></font></P>
 <div dir="ltr">
 	<PRE><font face="Tahoma">    BEGIN;
     LOCK TABLE old_table;
-    SELECT ...  -- <span lang="fa">&#1578;&#1605;&#1575;&#1605; &#1587;&#1578;&#1608;&#1606;&#1607;&#1575; &#1594;&#1610;&#1585; &#1575;&#1586; &#1587;&#1578;&#1608;&#1606;&#1610; &#1603;&#1607; &#1605;&#1610;&#8204;&#1582;&#1608;&#1575;&#1607;&#1610;&#1583; &#1570;&#1606; &#1585;&#1575; &#1581;&#1584;&#1601; &#1603;&#1606;&#1610;&#1583; &#1585;&#1575; &#1583;&#1585; &#1575;&#1610;&#1606;&#1580;&#1575; &#1576;&#1610;&#1575;&#1608;&#1585;&#1610;&#1583;</span>
+    SELECT ...  -- <span lang="fa">تمام ستونها غير از ستوني كه مي‌خواهيد آن را حذف كنيد را در اينجا بياوريد</span>
     INTO TABLE new_table
     FROM old_table;
     DROP TABLE old_table;
@@ -944,8 +965,8 @@ PostgreSQL<span lang="fa">&#8204;&#1607;&#1605;&#1670;&#1606;&#1610;&#1606; &#16
     COMMIT;
 </font></PRE>
 </div>
-<P dir="rtl"><span lang="fa"><font face="Tahoma">&#1576;&#1585;&#1575;&#1610; &#1593;&#1608;&#1590; &#1603;&#1585;&#1583;&#1606; &#1606;&#1608;&#1593; &#1583;&#1575;&#1583;&#1607; &#1610;&#1603; &#1587;&#1578;&#1608;&#1606; 
-&#1576;&#1607; &#1585;&#1608;&#1588; &#1586;&#1610;&#1585; &#1593;&#1605;&#1604; &#1603;&#1606;&#1610;&#1583;:</font></span></P>
+<P dir="rtl"><span lang="fa"><font face="Tahoma">براي عوض كردن نوع داده يك ستون 
+به روش زير عمل كنيد:</font></span></P>
 <div dir="ltr">
 	<PRE><font face="Tahoma">    BEGIN;
     ALTER TABLE tab ADD COLUMN new_col <I>new_data_type</I>;
@@ -955,105 +976,102 @@ PostgreSQL<span lang="fa">&#8204;&#1607;&#1605;&#1670;&#1606;&#1610;&#1606; &#16
 </font></PRE>
 </div>
 <H4 dir="rtl"><font face="Tahoma"><A name=4.5>4.5</A>)  
-<span lang="fa">&#1581;&#1583;&#1575;&#1603;&#1579;&#1585; &#1575;&#1606;&#1583;&#1575;&#1586;&#1607; &#1610;&#1603; &#1585;&#1583;&#1610;&#1601;&#1548;&#8204; &#1580;&#1583;&#1608;&#1604; &#1608; &#1582;&#1608;&#1583; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1670;&#1602;&#1583;&#1585; &#1575;&#1587;&#1578;&#1567;</span></font></H4>
-<p dir="rtl"><span lang="fa"><font face="Tahoma">&#1605;&#1581;&#1583;&#1608;&#1583;&#1610;&#1578;&#1607;&#1575; &#1593;&#1576;&#1575;&#1585;&#1578;&#1606;&#1583; &#1575;&#1586;:</font></span></p>
+<span lang="fa">حداكثر اندازه يك رديف،‌ جدول و خود پايگاه داده چقدر است؟</span></font></H4>
+<p dir="rtl"><span lang="fa"><font face="Tahoma">محدوديتها عبارتند از:</font></span></p>
 <div dir="rtl">
-	<PRE><font face="Tahoma">    <span lang="fa">&#1581;&#1583;&#1575;&#1603;&#1579;&#1585; &#1575;&#1606;&#1583;&#1575;&#1586;&#1607; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; </span>            <span lang="fa">&#1606;&#1575;&#1605;&#1581;&#1583;&#1608;&#1583; (&#1578;&#1575; 32 &#1578;&#1585;&#1575;&#1576;&#1575;&#1610;&#1578; &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;)</span>
-    <span lang="fa">&#1581;&#1583;&#1575;&#1603;&#1579;&#1585; &#1575;&#1606;&#1583;&#1575;&#1586;&#1607; &#1610;&#1603; &#1580;&#1583;&#1608;&#1604;</span>               <span lang="fa">32 &#1578;&#1585;&#1575;&#1576;&#1575;&#1610;&#1578;</span>
-    <span lang="fa">&#1581;&#1583;&#1575;&#1603;&#1579;&#1585; &#1575; &#1606;&#1583;&#1575;&#1586;&#1607; &#1610;&#1603; &#1585;&#1583;&#1610;&#1601;</span>              <span lang="fa">1.6 &#1578;&#1585;&#1575;&#1576;&#1575;&#1610;&#1578;</span>
-    <span lang="fa">&#1581;&#1583;&#1575;&#1603;&#1579;&#1585; &#1575;&#1606;&#1583;&#1575;&#1586;&#1607; &#1610;&#1603; &#1601;&#1610;&#1604;&#1583;</span>                <span lang="fa">1 &#1711;&#1610;&#1711;&#1575; &#1576;&#1575;&#1610;&#1578;</span>
-    <span lang="fa">&#1581;&#1583;&#1575;&#1603;&#1579;&#1585; &#1575;&#1606;&#1583;&#1575;&#1586;&#1607; &#1585;&#1583;&#1610;&#1601;&#1607;&#1575;&#1610; &#1610;&#1603; &#1580;&#1583;&#1608;&#1604;</span> <span lang="fa"> &#1606;&#1575; &#1605;&#1581;&#1583;&#1608;&#1583;</span>
-    <span lang="fa">&#1581;&#1583;&#1575;&#1603;&#1579;&#1585; &#1587;&#1578;&#1608;&#1606;&#1607;&#1575;&#1610; &#1610;&#1603; &#1580;&#1583;&#1608;&#1604;</span> <span lang="fa">	&#1576;&#1587;&#1578;&#1607; &#1576;&#1607; &#1606;&#1608;&#1593; &#1580;&#1583;&#1608;&#1604; &#1576;&#1610;&#1606; 250 &#1578;&#1575; 6000 </span>
-    <span lang="fa">&#1581;&#1583;&#1575;&#1603;&#1579;&#1585; &#1575;&#1606;&#1583;&#1610;&#1587;&#1607;&#1575;&#1610; &#1610;&#1603; &#1580;&#1583;&#1608;&#1604;	&#1606;&#1575; &#1605;&#1581;&#1583;&#1608;&#1583;</span>
+	<PRE><font face="Tahoma">    <span lang="fa">حداكثر اندازه پايگاه داده </span>            <span lang="fa">نامحدود (تا 32 ترابايت وجود دارد)</span>
+    <span lang="fa">حداكثر اندازه يك جدول</span>               <span lang="fa">32 ترابايت</span>
+    <span lang="fa">حداكثر ا ندازه يك رديف</span>              <span lang="fa">1.6 ترابايت</span>
+    <span lang="fa">حداكثر اندازه يك فيلد</span>                <span lang="fa">1 گيگا بايت</span>
+    <span lang="fa">حداكثر اندازه رديفهاي يك جدول</span> <span lang="fa"> نا محدود</span>
+    <span lang="fa">حداكثر ستونهاي يك جدول</span> <span lang="fa">	بسته به نوع جدول بين 250 تا 6000 </span>
+    <span lang="fa">حداكثر انديسهاي يك جدول	نا محدود</span>
 </font></PRE></div>
-<p dir="rtl"><span lang="fa"><font face="Tahoma">&#1575;&#1604;&#1576;&#1578;&#1607; &#1583;&#1585; &#1581;&#1575;&#1604;&#1578; &#1606;&#1575;&#1605;&#1581;&#1583;&#1608;&#1583; &#1606;&#1610;&#1586; &#1605;&#1575; 
-&#1605;&#1581;&#1583;&#1608;&#1583; &#1576;&#1607; &#1581;&#1580;&#1605; &#1607;&#1575;&#1585;&#1583;&#1583;&#1610;&#1587;&#1603; &#1608; &#1601;&#1590;&#1575;&#1610; &#1581;&#1575;&#1601;&#1592;&#1607; &#1582;&#1608;&#1575;&#1607;&#1610;&#1605; &#1576;&#1608;&#1583;. &#1583;&#1585; &#1589;&#1608;&#1585;&#1578;&#1610; 
-&#1705;&#1607; &#1605;&#1602;&#1575;&#1583;&#1610;&#1585; &#1605;&#1588;&#1582;&#1589; &#1588;&#1583;&#1607; &#1576;&#1607; &#1593;&#1606;&#1608;&#1575;&#1606; 
-&#1606;&#1575;&#1605;&#1581;&#1583;&#1608;&#1583; &#1576;&#1607; &#1589;&#1608;&#1585;&#1578; &#1594;&#1610;&#1585; &#1605;&#1593;&#1605;&#1608;&#1604;&#1610; &#1576;&#1586;&#1585;&#1603; &#1588;&#1608;&#1606;&#1583; &#1603;&#1575;&#1585;&#1575;&#1610;&#1610; &#1587;&#1610;&#1587;&#1578;&#1605; &#1603;&#1575;&#1607;&#1588; &#1582;&#1608;&#1575;&#1607;&#1583; &#1610;&#1575;&#1601;&#1578;.</font></span></p>
-<P dir="rtl"><span lang="fa"><font face="Tahoma">&#1576;&#1585;&#1575;&#1610; &#1584;&#1582;&#1610;&#1585;&#1607; &#1603;&#1585;&#1583;&#1606; &#1580;&#1583;&#1575;&#1608;&#1604; &#1576;&#1575; &#1575;&#1606;&#1583;&#1575;&#1586;&#1607; 
-&#1582;&#1610;&#1604;&#1610; &#1576;&#1586;&#1585;&#1711; &#1606;&#1610;&#1575;&#1586;&#1610; &#1606;&#1610;&#1587;&#1578; &#1603;&#1607; &#1587;&#1610;&#1587;&#1578;&#1605; &#1593;&#1575;&#1605;&#1604; &#1575;&#1605;&#1603;&#1575;&#1606; &#1575;&#1610;&#1580;&#1575;&#1583; &#1601;&#1575;&#1610;&#1604;&#1607;&#1575;&#1610; &#1576;&#1586;&#1585;&#1711; &#1585;&#1575; &#1583;&#1575;&#1588;&#1578;&#1607; &#1576;&#1575;&#1588;&#1583;. &#1576;&#1604;&#1603;&#1607; 
-&#1580;&#1583;&#1575;&#1608;&#1604; &#1582;&#1610;&#1604;&#1610; &#1576;&#1586;&#1585;&#1711; &#1576;&#1607; &#1589;&#1608;&#1585;&#1578; &#1601;&#1575;&#1610;&#1604;&#1607;&#1575;&#1610;&#1610; &#1576;&#1607; &#1581;&#1580;&#1605; &#1610;&#1603; &#1711;&#1610;&#1711;&#1575; &#1576;&#1575;&#1610;&#1578; &#1606;&#1711;&#1575;&#1607;&#1583;&#1575;&#1585;&#1610; &#1605;&#1610;&#8204;&#1588;&#1608;&#1606;&#1583;.</font></span></P>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1575;&#1711;&#1585; &#1575;&#1606;&#1583;&#1575;&#1586;&#1607; &#1576;&#1604;&#1608;&#1603;&#1607;&#1575;&#1610; &#1583;&#1575;&#1583;&#1607; &#1585;&#1575; 
-&#1576;&#1585;&#1575;&#1576;&#1585; 32 &#1603;&#1610;&#1604;&#1608; &#1576;&#1575;&#1610;&#1578; &#1602;&#1585;&#1575;&#1585; &#1583;&#1607;&#1610;&#1605; &#1581;&#1583;&#1575;&#1603;&#1579;&#1585; &#1575;&#1606;&#1583;&#1575;&#1586;&#1607; &#1580;&#1583;&#1608;&#1604; &#1608; &#1581;&#1583;&#1575;&#1603;&#1579;&#1585; &#1578;&#1593;&#1583;&#1575;&#1583; &#1587;&#1578;&#1608;&#1606;&#1607;&#1575; 4 &#1576;&#1585;&#1575;&#1576;&#1585; 
-&#1582;&#1608;&#1575;&#1607;&#1583; &#1588;&#1583;.</span></font></P>
+<p dir="rtl"><span lang="fa"><font face="Tahoma">البته در حالت نامحدود نيز ما 
+محدود به حجم هاردديسك و فضاي حافظه خواهيم بود. در صورتي که مقادير مشخص شده به 
+عنوان نامحدود به صورت غير معمولي بزرك شوند كارايي سيستم كاهش خواهد يافت.</font></span></p>
+<P dir="rtl"><span lang="fa"><font face="Tahoma">براي ذخيره كردن جداول با اندازه 
+خيلي بزرگ نيازي نيست كه سيستم عامل امكان ايجاد فايلهاي بزرگ را داشته باشد. بلكه 
+جداول خيلي بزرگ به صورت فايلهايي به حجم يك گيگا بايت نگاهداري مي‌شوند.</font></span></P>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">اگر اندازه بلوكهاي داده را 
+برابر 32 كيلو بايت قرار دهيم حداكثر اندازه جدول و حداكثر تعداد ستونها 4 برابر 
+خواهد شد.</span></font></P>
 <H4 dir="rtl"><font face="Tahoma"><A name=4.6>4.6</A>) 
-<span lang="fa">&#1670;&#1602;&#1583;&#1585; &#1601;&#1590;&#1575;&#1610; &#1583;&#1610;&#1587;&#1603; &#1587;&#1582;&#1578; &#1576;&#1585;&#1575;&#1610; &#1584;&#1582;&#1610;&#1585;&#1607; &#1603;&#1585;&#1583;&#1606; &#1583;&#1575;&#1583;&#1607;&#8204;&#8204;&#1607;&#1575;&#1610; &#1610;&#1603; &#1601;&#1575;&#1610;&#1604; &#1605;&#1578;&#1606;&#1610; &#1605;&#1608;&#1585;&#1583; 
-&#1606;&#1610;&#1575;&#1586; &#1575;&#1587;&#1578;&#1567;</span></font></H4>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1610;&#1603; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; </span>
-PostgreSQL<span lang="fa">&#8204; &#1578;&#1575; 5 &#1576;&#1585;&#1575;&#1576;&#1585; &#1601;&#1590;&#1575;&#1610;&#1610; &#1585;&#1608;&#1610; &#1607;&#1575;&#1585;&#1583;&#1583;&#1610;&#1587;&#1603; &#1576;&#1585;&#1575;&#1610; &#1606;&#1711;&#1575;&#1607;&#1583;&#1575;&#1585;&#1610; &#1610;&#1603; &#1601;&#1575;&#1610;&#1604; 
-&#1605;&#1578;&#1606;&#1610; &#1606;&#1610;&#1575;&#1586; &#1583;&#1575;&#1585;&#1583;.</span></font></P>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1576;&#1607; &#1593;&#1606;&#1608;&#1575;&#1606; &#1605;&#1579;&#1575;&#1604; &#1610;&#1603; &#1601;&#1575;&#1610;&#1604; &#1576;&#1575; 100000 
-&#1582;&#1591; &#1585;&#1575; &#1583;&#1585; &#1606;&#1592;&#1585; &#1576;&#1711;&#1610;&#1585;&#1610;&#1583; &#1603;&#1607; &#1583;&#1585; &#1607;&#1585; &#1582;&#1591; &#1610;&#1603; &#1593;&#1583;&#1583; &#1589;&#1581;&#1610;&#1581; &#1608; &#1610;&#1603; &#1578;&#1608;&#1590;&#1610;&#1581; &#1605;&#1578;&#1606;&#1610; &#1570;&#1605;&#1583;&#1607; &#1575;&#1587;&#1578;. &#1601;&#1585;&#1590; &#1603;&#1606;&#1610;&#1583; 
-&#1603;&#1607; &#1585;&#1588;&#1578;&#1607; &#1605;&#1578;&#1606;&#1610; &#1576;&#1607; &#1591;&#1608;&#1585; &#1605;&#1578;&#1608;&#1587;&#1591; 20 &#1576;&#1575;&#1610;&#1578; &#1576;&#1575;&#1588;&#1583;. &#1575;&#1606;&#1583;&#1575;&#1586;&#1607; &#1601;&#1575;&#1610;&#1604; &#1576;&#1585;&#1575;&#1576;&#1585; 2.8 &#1605;&#1711;&#1575; &#1576;&#1575;&#1610;&#1578; &#1582;&#1608;&#1575;&#1607;&#1583; &#1576;&#1608;&#1583; 
-&#1608;&#1604;&#1610; </span>PostgreSQL<span lang="fa"> &#1576;&#1585;&#1575;&#1610; &#1606;&#1711;&#1575;&#1607;&#1583;&#1575;&#1585;&#1610; &#1575;&#1610;&#1606; &#1601;&#1575;&#1610;&#1604; &#1576;&#1607; 6.4 &#1605;&#1711;&#1575; &#1576;&#1575;&#1610;&#1578; 
-&#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578; &#1606;&#1610;&#1575;&#1586; &#1582;&#1608;&#1575;&#1607;&#1583; &#1583;&#1575;&#1588;&#1578;.</span></font></P>
+<span lang="fa">چقدر فضاي ديسك سخت براي ذخيره كردن داده‌‌هاي يك فايل متني مورد 
+نياز است؟</span></font></H4>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">يك پايگاه داده </span>
+PostgreSQL<span lang="fa">‌ تا 5 برابر فضايي روي هاردديسك براي نگاهداري يك فايل 
+متني نياز دارد.</span></font></P>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">به عنوان مثال يك فايل با 100000 
+خط را در نظر بگيريد كه در هر خط يك عدد صحيح و يك توضيح متني آمده است. فرض كنيد 
+كه رشته متني به طور متوسط 20 بايت باشد. اندازه فايل برابر 2.8 مگا بايت خواهد بود 
+ولي </span>PostgreSQL<span lang="fa"> براي نگاهداري اين فايل به 6.4 مگا بايت 
+اطلاعات نياز خواهد داشت.</span></font></P>
 <div dir="rtl">
-	<PRE><font face="Tahoma">    32 bytes: <span lang="fa">&#1575;&#1606;&#1583;&#1575;&#1586;&#1607; &#1587;&#1585;&#1575;&#1610;&#1606;&#1583; &#1607;&#1585; &#1582;&#1591; &#1576;&#1607; &#1591;&#1608;&#1585; &#1578;&#1602;&#1585;&#1610;&#1576;&#1610;</span>
-    24 bytes: <span lang="fa">&#1610;&#1603; &#1593;&#1583;&#1583; &#1589;&#1581;&#1610;&#1581; &#1608; &#1610;&#1603; &#1585;&#1588;&#1578;&#1607; 24 &#1576;&#1575;&#1610;&#1578;&#1610;</span>
-   + 4 bytes: <span lang="fa">&#1575;&#1588;&#1575;&#1585;&#1607; &#1711;&#1585; &#1585;&#1608;&#1610; &#1589;&#1601;&#1581;&#1607; &#1576;&#1607; &#1610;&#1603; &#1670;&#1606;&#1583;&#1578;&#1575;&#1610;&#1610;</span>
+	<PRE><font face="Tahoma">    32 bytes: <span lang="fa">اندازه سرايند هر خط به طور تقريبي</span>
+    24 bytes: <span lang="fa">يك عدد صحيح و يك رشته 24 بايتي</span>
+   + 4 bytes: <span lang="fa">اشاره گر روي صفحه به يك چندتايي</span>
    ----------------------------------------
-    60 bytes <span lang="fa">&#1583;&#1585; &#1607;&#1585; &#1585;&#1583;&#1610;&#1601;</span>
+    60 bytes <span lang="fa">در هر رديف</span>
 
-<span lang="fa">&#1575;&#1606;&#1583;&#1575;&#1586;&#1607; &#1589;&#1601;&#1581;&#1575;&#1578; &#1583;&#1575;&#1583;&#1607; &#1583;&#1585; </span>PostgreSQL<span lang="fa"> &#1576;&#1585;&#1575;&#1576;&#1585; &#1576;&#1575; 8 &#1603;&#1610;&#1604;&#1608; &#1576;&#1575;&#1610;&#1578; &#1575;&#1587;&#1578;</span>
-   8192 <span lang="fa">&#1578;&#1593;&#1583;&#1575;&#1583; &#1576;&#1575;&#1610;&#1578;&#8204;&#1607;&#1575; &#1583;&#1585; &#1607;&#1585; &#1589;&#1601;&#1581;&#1607;</span>
-   -------------------   =  136 <span lang="fa">&#1578;&#1593;&#1583;&#1575;&#1583; &#1585;&#1583;&#1610;&#1601;&#8204;&#1607;&#1575; &#1583;&#1585; &#1610;&#1603; &#1589;&#1601;&#1581;&#1607; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607;</span>
-     60 <span lang="fa"> &#1578;&#1593;&#1583;&#1575;&#1583; &#1576;&#1575;&#1610;&#1578;&#8204;&#1607;&#1575;&#1610; &#1607;&#1585; &#1585;&#1583;&#1610;&#1601;</span>
+<span lang="fa">اندازه صفحات داده در </span>PostgreSQL<span lang="fa"> برابر با 8 كيلو بايت است</span>
+   8192 <span lang="fa">تعداد بايت‌ها در هر صفحه</span>
+   -------------------   =  136 <span lang="fa">تعداد رديف‌ها در يك صفحه پايگاه داده</span>
+     60 <span lang="fa"> تعداد بايت‌هاي هر رديف</span>
 
-   100000 <span lang="fa"> &#1578;&#1593;&#1583;&#1575;&#1583; &#1585;&#1583;&#1610;&#1601;&#1607;&#1575;</span>
-   --------------------  = <span lang="fa">&#1578;&#1593;&#1583;&#1575;&#1583;&#1589;&#1601;&#1581;&#1575;&#1578; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607;</span>
-      128 <span lang="fa">&#1578;&#1593;&#1583;&#1575;&#1583; &#1585;&#1583;&#1610;&#1601;&#1607;&#1575; &#1583;&#1585; &#1607;&#1585; &#1589;&#1601;&#1581;&#1607;</span>
+   100000 <span lang="fa"> تعداد رديفها</span>
+   --------------------  = <span lang="fa">تعدادصفحات پايگاه داده</span>
+      128 <span lang="fa">تعداد رديفها در هر صفحه</span>
 
-735 <span lang="fa">&#1578;&#1593;&#1583;&#1575;&#1583; &#1589;&#1601;&#1581;&#1575;&#1578;</span> * 8192 <span lang="fa">&#1578;&#1593;&#1583;&#1575;&#1583; &#1576;&#1575;&#1610;&#1578;&#8204;&#1607;&#1575;&#1610; &#1607;&#1585; &#1589;&#1601;&#1581;&#1607;</span>  =  6,021,120 <span lang="fa">&#1605;&#1711;&#1575; &#1576;&#1575;&#1610;&#1578;</span>
+735 <span lang="fa">تعداد صفحات</span> * 8192 <span lang="fa">تعداد بايت‌هاي هر صفحه</span>  =  6,021,120 <span lang="fa">مگا بايت</span>
 </font></PRE>
 </div>
-<P dir="rtl"><span lang="fa"><font face="Tahoma">&#1587;&#1585;&#1576;&#1575;&#1585; &#1575;&#1606;&#1583;&#1610;&#1587;&#1607;&#1575; &#1610;&#1575; &#1606;&#1605;&#1575;&#1610;&#1607;&#8204;&#1607;&#1575; &#1575;&#1586; 
-&#1575;&#1610;&#1606; &#1605;&#1602;&#1583;&#1575;&#1585; &#1603;&#1605;&#1578;&#1585; &#1575;&#1587;&#1578; &#1608;&#1604;&#1610; &#1670;&#1608;&#1606; &#1588;&#1575;&#1605;&#1604; &#1582;&#1608;&#1583; &#1583;&#1575;&#1583;&#1607;&#8204;&#1607;&#1575; &#1607;&#1605; &#1607;&#1587;&#1578; </font></span>
-<font face="Tahoma">&#1605;<span lang="fa">&#1605;&#1705;&#1606; &#1575;&#1587;&#1578; &#1575;&#1606;&#1583;&#1575;&#1586;&#1607; &#1570;&#1606;&#1607;&#1575; &#1607;&#1605; &#1576;&#1586;&#1585;&#1711; &#1588;&#1608;&#1583;</span>.</font></P>
-<p dir="rtl"><font face="Tahoma">NULL<span lang="fa">&#1607;&#1575; &#1576;&#1607; &#1589;&#1608;&#1585;&#1578; </span>bitmap<span lang="fa"> 
-&#1584;&#1582;&#1610;&#1585;&#1607; &#1605;&#1610;&#8204;&#1588;&#1608;&#1606;&#1583; &#1608; &#1575;&#1586; &#1575;&#1610;&#1606;&#1585;&#1608; &#1601;&#1590;&#1575;&#1610; &#1576;&#1587;&#1610;&#1575;&#1585; &#1603;&#1605;&#1610; &#1585;&#1575; &#1575;&#1588;&#1594;&#1575;&#1604; &#1605;&#1610;&#8204;&#1603;&#1606;&#1606;&#1583;.</span></font></p>
+<P dir="rtl"><span lang="fa"><font face="Tahoma">سربار انديسها يا نمايه‌ها از 
+اين مقدار كمتر است ولي چون شامل خود داده‌ها هم هست </font></span>
+<font face="Tahoma">م<span lang="fa">مکن است اندازه آنها هم بزرگ شود</span>.</font></P>
+<p dir="rtl"><font face="Tahoma">NULL<span lang="fa">ها به صورت </span>bitmap<span lang="fa"> 
+ذخيره مي‌شوند و از اينرو فضاي بسيار كمي را اشغال مي‌كنند.</span></font></p>
 <H4 dir="rtl"><font face="Tahoma"><A name=4.7>4.7</A>) 
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1576;&#1601;&#1607;&#1605;&#1605; &#1603;&#1607; &#1670;&#1607; &#1603;&#1575;&#1585;&#1576;&#1585;&#1575;&#1606;&#1548;&#8204; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607;&#1548;&#8204; &#1606;&#1605;&#1575;&#1610;&#1607; &#1608; 
-&#1580;&#1583;&#1575;&#1608;&#1604;&#1610; &#1583;&#1585; &#1587;&#1610;&#1587;&#1578;&#1605; &#1578;&#1593;&#1585;&#1610;&#1601; &#1588;&#1583;&#1607; &#1575;&#1587;&#1578;&#1567;</span></font></H4>
+<span lang="fa">چگونه مي‌توانم بفهمم كه چه كاربران،‌ پايگاه داده،‌ نمايه و 
+جداولي در سيستم تعريف شده است؟</span></font></H4>
 <P dir="rtl"><font face="Tahoma"><i>psql<span lang="fa"> </span></i>
-<span lang="fa">&#1578;&#1593;&#1583;&#1575;&#1583; &#1586;&#1610;&#1575;&#1583;&#1610; &#1583;&#1587;&#1578;&#1608;&#1585; &#1583;&#1575;&#1585;&#1583; &#1603;&#1607; &#1576;&#1575; </span>\<span lang="fa"> &#1588;&#1585;&#1608;&#1593; 
-&#1605;&#1610;&#8204;&#1588;&#1608;&#1606;&#1583; &#1608; &#1575;&#1610;&#1606; &#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578; &#1585;&#1575; &#1583;&#1585; &#1575;&#1582;&#1578;&#1610;&#1575;&#1585; &#1605;&#1575; &#1602;&#1585;&#1575;&#1585; &#1605;&#1610;&#8204;&#1583;&#1607;&#1606;&#1583;. &#1576;&#1585;&#1575;&#1610; &#1583;&#1610;&#1583;&#1606; &#1570;&#1606;&#1607;&#1575; &#1583;&#1587;&#1578;&#1608;&#1585; </span>
-?\ <span lang="fa">&nbsp;&#1585;&#1575; &#1575;&#1580;&#1585;&#1575; &#1603;&#1606;&#1610;&#1583;.&nbsp; &#1607;&#1605;&#1670;&#1606;&#1610;&#1606; &#1580;&#1583;&#1575;&#1608;&#1604; &#1587;&#1610;&#1587;&#1578;&#1605;&#1610; &#1603;&#1607; &#1606;&#1575;&#1605; &#1570;&#1606;&#1607;&#1575;</span>
-<span lang="fa">&#1576;&#1575;
-</span>pg<span lang="fa">_</span> <span lang="fa">&#8204;&#1588;&#1585;&#1608;&#1593; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583; &#1606;&#1610;&#1586; &#1575;&#1610;&#1606; &#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578; 
-&#1585;&#1575; &#1583;&#1585; &#1582;&#1608;&#1583; &#1583;&#1575;&#1585;&#1606;&#1583;. &#1575;&#1580;&#1585;&#1575;&#1610; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; </span>psql<span lang="fa"> &#1576;&#1575; &#1711;&#1586;&#1610;&#1606;&#1607; </span>l-
-<span lang="fa">&nbsp;&#1606;&#1610;&#1586; &#1576;&#1575;&#1593;&#1579; &#1606;&#1588;&#1575;&#1606; &#1583;&#1575;&#1583;&#1606; &#1604;&#1610;&#1587;&#1578; &#1578;&#1605;&#1575;&#1605; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607;&#1607;&#1575;&#1610; &#1583;&#1575;&#1583;&#1607; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583;.</span></font></P>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1607;&#1605;&#1670;&#1606;&#1610;&#1606; &#1601;&#1575;&#1610;&#1604; </span> <I>pgsql/src/tutorial/syscat.source<span lang="fa">
-</span></I><span lang="fa">&#1606;&#1610;&#1586; &#1601;&#1585;&#1605;&#1575;&#1606;&#1607;&#1575;&#1610; </span>SELECT<span lang="fa"> &#1603;&#1607; &#1576;&#1575; 
-&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1570;&#1606; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606; &#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1585;&#1575; &#1575;&#1587;&#1578;&#1582;&#1585;&#1575;&#1580; &#1603;&#1585;&#1583; &#1588;&#1585;&#1581; &#1583;&#1575;&#1583;&#1607; &#1575;&#1587;&#1578;.</span></font></P>
+<span lang="fa">تعداد زيادي دستور دارد كه با </span>\<span lang="fa"> شروع 
+مي‌شوند و اين اطلاعات را در اختيار ما قرار مي‌دهند. براي ديدن آنها دستور </span>
+?\ <span lang="fa">&nbsp;را اجرا كنيد.&nbsp; همچنين جداول سيستمي كه با نام آنها
+</span>pg<span lang="fa">_</span> <span lang="fa">‌شروع مي‌شود نيز اين اطلاعات 
+را در خود دارند. اجراي برنامه </span>psql<span lang="fa"> با گزينه </span>l-
+<span lang="fa">&nbsp;نيز باعث نشان دادن ليست تمام پايگاههاي داده مي‌شود.</span></font></P>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">همچنين فايل </span> <I>
+pgsql/src/tutorial/syscat.source<span lang="fa">
+</span></I><span lang="fa">نيز فرمانهاي </span>SELECT<span lang="fa"> كه با 
+استفاده از آن مي‌توان اطلاعات پايگاه داده را استخراج كرد شرح داده است.</span></font></P>
 <H4 dir="rtl"><font face="Tahoma"><A name=4.8>4.8</A>)  
-<span lang="fa">&#1670;&#1585;&#1575; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578;&#1607;&#1575;&#1610; &#1605;&#1606; &#1603;&#1606;&#1583; &#1575;&#1580;&#1585;&#1575; &#1605;&#1610;&#8204;&#1588;&#1608;&#1606;&#1583; &#1610;&#1575; &#1670;&#1585;&#1575; &#1575;&#1586; &#1606;&#1605;&#1575;&#1610;&#1607; &#1607;&#1575; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; 
-&#1606;&#1605;&#1610;&#8204;&#1603;&#1606;&#1606;&#1583;&#1567;</span></font></H4>
-<p dir="rtl"><span lang="fa"><font face="Tahoma">&#1576;&#1607; &#1591;&#1608;&#1585; &#1605;&#1593;&#1605;&#1608;&#1604; </font></span>
-<font face="Tahoma"><span lang="fa">&#1576;&#1585;&#1575;&#1610; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578;&#1607;&#1575; 
-&#1575;&#1586; &#1606;&#1605;&#1575;&#1610;&#1607;&#8204;&#1607;&#1575; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1606;&#1605;&#1610;&#8204;&#1588;&#1608;&#1583;. 
-&#1578;&#1606;&#1607;&#1575; &#1583;&#1585; &#1589;&#1608;&#1585;&#1578;&#1610; &#1575;&#1586; &#1606;&#1605;&#1575;&#1610;&#1607;&#8204;&#1607;&#1575; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583; &#1603;&#1607; &#1575;&#1606;&#1583;&#1575;&#1586;&#1607; &#1580;&#1583;&#1608;&#1604; &#1575;&#1586; &#1610;&#1603; &#1575;&#1606;&#1583;&#1575;&#1586;&#1607; &#1581;&#1583;&#1575;&#1602;&#1604; 
-&#1576;&#1586;&#1585;&#1711;&#1578;&#1585; &#1576;&#1575;&#1588;&#1583; &#1608; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578; &#1607;&#1605; &#1601;&#1602;&#1591; &#1602;&#1587;&#1605;&#1578;&#1610; &#1575;&#1586; &#1585;&#1583;&#1610;&#1601;&#8204;&#1607;&#1575;&#1610; &#1580;&#1583;&#1608;&#1604; &#1585;&#1575; &#1575;&#1606;&#1578;&#1582;&#1575;&#1576; &#1603;&#1585;&#1583;&#1607; &#1576;&#1575;&#1588;&#1583;. &#1583;&#1604;&#1610;&#1604; 
-&#1575;&#1610;&#1606; &#1603;&#1575;&#1585; &#1570;&#1606; &#1575;&#1587;&#1578; &#1603;&#1607; &#1583;&#1587;&#1578;&#1585;&#1587;&#1610;&#8204;&#1607;&#1575;&#1610; &#1578;&#1589;&#1575;&#1583;&#1601;&#1610; &#1576;&#1607; &#1607;&#1575;&#1585;&#1583;&#1583;&#1610;&#1587;&#1603; &#1603;&#1607; &#1576;&#1607; &#1582;&#1575;&#1591;&#1585; &#1606;&#1605;&#1575;&#1610;&#1607;&#8204;&#1607;&#1575; &#1575;&#1610;&#1580;&#1575;&#1583; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583; 
-&#1605;&#1605;&#1603;&#1606; &#1575;&#1587;&#1578; &#1575;&#1586; &#1582;&#1608;&#1575;&#1606;&#1583;&#1606; &#1605;&#1587;&#1578;&#1602;&#1610;&#1605; &#1580;&#1583;&#1608;&#1604; &#1610;&#1575; &#1582;&#1608;&#1575;&#1606;&#1583;&#1606; &#1578;&#1585;&#1578;&#1610;&#1576;&#1610; &#1585;&#1603;&#1608;&#1585;&#1583;&#1607;&#1575; &#1603;&#1606;&#1583;&#1578;&#1585; &#1576;&#1575;&#1588;&#1583;.</span></font></p>
-<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1576;&#1585;&#1575;&#1610; &#1578;&#1593;&#1610;&#1610;&#1606; &#1575;&#1610;&#1606;&#1603;&#1607; &#1575;&#1586; &#1606;&#1605;&#1575;&#1610;&#1607; 
-&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1588;&#1608;&#1583; &#1610;&#1575; &#1582;&#1610;&#1585;&#1548; </span>PostgreSQL<span lang="fa"> &#1576;&#1575;&#1610;&#1583; &#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578; &#1570;&#1605;&#1575;&#1585;&#1610; &#1585;&#1575; &#1583;&#1585; 
-&#1605;&#1608;&#1585;&#1583; &#1610;&#1603; &#1580;&#1583;&#1608;&#1604; &#1576;&#1583;&#1575;&#1606;&#1583;. &#1575;&#1610;&#1606; &#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578; &#1578;&#1608;&#1587;&#1591; &#1583;&#1587;&#1578;&#1608;&#1585; </span>ANALYZE<span lang="fa"> &#1608;
-</span>VACUUM ANALYZE<span lang="fa"> &#1576;&#1607; &#1583;&#1587;&#1578; &#1605;&#1610;&#8204;&#1570;&#1610;&#1583;. &#1576;&#1575; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1575;&#1610;&#1606; &#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578;&#1548;&#8204; 
-&#1576;&#1607;&#1610;&#1606;&#1607; &#1587;&#1575;&#1586; &#1575;&#1586; &#1578;&#1593;&#1583;&#1575;&#1583; &#1585;&#1583;&#1610;&#1601;&#8204;&#1607;&#1575;&#1610; &#1610;&#1603; &#1580;&#1583;&#1608;&#1604; &#1575;&#1591;&#1604;&#1575;&#1593; &#1662;&#1610;&#1583;&#1575; &#1605;&#1610;&#8204;&#1603;&#1606;&#1583; &#1608; &#1576;&#1607;&#1578;&#1585; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1583; &#1578;&#1593;&#1610;&#1610;&#1606; &#1603;&#1606;&#1583; 
-&#1603;&#1607; &#1570;&#1610;&#1575; &#1575;&#1586; &#1606;&#1605;&#1575;&#1610;&#1607; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1588;&#1608;&#1583; &#1610;&#1575; &#1582;&#1610;&#1585;. &#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578; &#1570;&#1605;&#1575;&#1585;&#1610; &#1607;&#1605;&#1670;&#1606;&#1610;&#1606; &#1576;&#1585;&#1575;&#1610; &#1578;&#1593;&#1610;&#1610;&#1606; &#1578;&#1585;&#1578;&#1610;&#1576; &#1575;&#1604;&#1581;&#1575;&#1602; 
-&#1608; &#1585;&#1608;&#1588;&#1607;&#1575;&#1610; &#1575;&#1604;&#1581;&#1575;&#1602; &#1576;&#1607; &#1589;&#1608;&#1585;&#1578; &#1576;&#1607;&#1610;&#1606;&#1607; &#1606;&#1610;&#1586; &#1603;&#1575;&#1585;&#1576;&#1585;&#1583; &#1583;&#1575;&#1585;&#1583;. &#1580;&#1605;&#1593; &#1570;&#1608;&#1585;&#1610; &#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578; &#1570;&#1605;&#1575;&#1585;&#1610; &#1576;&#1575;&#1610;&#1583; &#1576;&#1607; &#1589;&#1608;&#1585;&#1578; 
-&#1583;&#1608;&#1585;&#1607;&#8204;&#1575;&#1610; &#1607;&#1605;&#1586;&#1605;&#1575;&#1606; &#1576;&#1575; &#1578;&#1594;&#1610;&#1610;&#1585; &#1583;&#1575;&#1583;&#1607;&#8204;&#1607;&#1575;&#1610; &#1580;&#1583;&#1608;&#1604; &#1575;&#1606;&#1580;&#1575;&#1605; &#1588;&#1608;&#1583;.</span></font></p>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1606;&#1605;&#1575;&#1610;&#1607;&#8204;&#1607;&#1575; &#1576;&#1607; &#1591;&#1608;&#1585; &#1605;&#1593;&#1605;&#1608;&#1604; &#1607;&#1605;&#1585;&#1575;&#1607; &#1576;&#1575; 
-&#1583;&#1587;&#1578;&#1608;&#1585; </span>ORDER BY<span lang="fa"> &#1576;&#1607; &#1603;&#1575;&#1585; &#1576;&#1585;&#1583;&#1607; &#1606;&#1605;&#1610;&#8204;&#1588;&#1608;&#1606;&#1583;. &#1576;&#1585;&#1575;&#1610; &#1610;&#1603; &#1580;&#1583;&#1608;&#1604; &#1576;&#1586;&#1585;&#1711; &#1610;&#1603; 
-&#1662;&#1610;&#1605;&#1575;&#1610;&#1588; &#1578;&#1585;&#1578;&#1610;&#1576;&#1610; &#1607;&#1605;&#1585;&#1575;&#1607; &#1576;&#1575; &#1583;&#1587;&#1578;&#1608;&#1585; &#1605;&#1585;&#1578;&#1576; &#1587;&#1575;&#1586;&#1610; &#1575;&#1586; &#1576;&#1607; &#1603;&#1575;&#1585; &#1576;&#1585;&#1583;&#1606; &#1606;&#1605;&#1575;&#1610;&#1607;&#8204;&#1607;&#1575; &#1587;&#1585;&#1610;&#1593;&#1578;&#1585; &#1582;&#1608;&#1575;&#1607;&#1583; &#1576;&#1608;&#1583;.</span></font></P>
-<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1575;&#1605;&#1575; &#1575;&#1711;&#1585; &#1607;&#1605;&#1585;&#1575;&#1607; &#1576;&#1575; </span>ORDER 
-BY<span lang="fa">&#8204; &#1575;&#1586; </span>LIMIT<span lang="fa"> &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1588;&#1608;&#1583; &#1575;&#1594;&#1604;&#1576; &#1575;&#1586; &#1606;&#1605;&#1575;&#1610;&#1607;&#8204;&#1607;&#1575; 
-&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583; &#1670;&#1608;&#1606; &#1601;&#1602;&#1591; &#1602;&#1587;&#1605;&#1578;&#1610; &#1575;&#1586; &#1580;&#1583;&#1608;&#1604; 
-&#1576;&#1585;&#1711;&#1585;&#1583;&#1575;&#1606;&#1583;&#1607; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583;. &#1583;&#1585; &#1581;&#1602;&#1610;&#1602;&#1578; &#1607;&#1585; &#1670;&#1606;&#1583;</span>
-<span lang="fa">&#1578;&#1608;&#1575;&#1576;&#1593; ()</span>MIN<span lang="fa">&#8204; &#1608; </span>()MAX
-<span lang="fa">&#1575;&#1586; &#1606;&#1605;&#1575;&#1610;&#1607;&#8204;&#1607;&#1575; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1606;&#1605;&#1610;&#8204;&#1603;&#1606;&#1606;&#1583; &#1608;&#1604;&#1610; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1610;&#1605; &#1576;&#1575; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1583;&#1587;&#1578;&#1608;&#1585; 
-&#1586;&#1610;&#1585; &#1576;&#1575; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1606;&#1605;&#1575;&#1610;&#1607;&#8204;&#1607;&#1575; &#1608; &#1583;&#1587;&#1578;&#1608;&#1585; </span>ORDER BY<span lang="fa"> &#1608; </span>
-LIMIT<span lang="fa">&#8204; &#1548; &#1570;&#1606;&#1607;&#1575; &#1585;&#1575; &#1576;&#1607; &#1583;&#1587;&#1578; &#1570;&#1608;&#1585;&#1610;&#1605;.</span></font></p>
+<span lang="fa">چرا درخواستهاي من كند اجرا مي‌شوند يا چرا از نمايه ها استفاده 
+نمي‌كنند؟</span></font></H4>
+<p dir="rtl"><span lang="fa"><font face="Tahoma">به طور معمول </font></span>
+<font face="Tahoma"><span lang="fa">براي درخواستها از نمايه‌ها استفاده نمي‌شود. 
+تنها در صورتي از نمايه‌ها استفاده مي‌شود كه اندازه جدول از يك اندازه حداقل 
+بزرگتر باشد و درخواست هم فقط قسمتي از رديف‌هاي جدول را انتخاب كرده باشد. دليل 
+اين كار آن است كه دسترسي‌هاي تصادفي به هاردديسك كه به خاطر نمايه‌ها ايجاد مي‌شود 
+ممكن است از خواندن مستقيم جدول يا خواندن ترتيبي ركوردها كندتر باشد.</span></font></p>
+<p dir="rtl"><font face="Tahoma"><span lang="fa">براي تعيين اينكه از نمايه 
+استفاده شود يا خير، </span>PostgreSQL<span lang="fa"> بايد اطلاعات آماري را در 
+مورد يك جدول بداند. اين اطلاعات توسط دستور </span>ANALYZE<span lang="fa"> و
+</span>VACUUM ANALYZE<span lang="fa"> به دست مي‌آيد. با استفاده از اين اطلاعات،‌ 
+بهينه ساز از تعداد رديف‌هاي يك جدول اطلاع پيدا مي‌كند و بهتر مي‌تواند تعيين كند 
+كه آيا از نمايه استفاده شود يا خير. اطلاعات آماري همچنين براي تعيين ترتيب الحاق 
+و روشهاي الحاق به صورت بهينه نيز كاربر دارد. جمع آوري اطلاعات آماري بايد به صورت 
+دوره‌اي همزمان با تغيير داده‌هاي جدول انجام شود.</span></font></p>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">نمايه‌ها به طور معمول همراه با 
+دستور </span>ORDER BY<span lang="fa"> به كار برده نمي‌شوند. براي يك جدول بزرگ يك 
+پيمايش ترتيبي همراه با دستور مرتب سازي از به كار بردن نمايه‌ها سريعتر خواهد بود.</span></font></P>
+<p dir="rtl"><font face="Tahoma"><span lang="fa">اما اگر همراه با </span>ORDER 
+BY<span lang="fa">‌ از </span>LIMIT<span lang="fa"> استفاده شود اغلب از نمايه‌ها 
+استفاده مي‌شود چون فقط قسمتي از جدول استفاده مي‌شود. در حقيقت هر چند</span>
+<span lang="fa">توابع ()</span>MIN<span lang="fa">‌ و </span>()MAX
+<span lang="fa">از نمايه‌ها استفاده نمي‌كنند ولي مي‌توانيم با استفاده از دستور 
+زير با استفاده از نمايه‌ها و دستور </span>ORDER BY<span lang="fa"> و </span>
+LIMIT<span lang="fa">‌ آنها را به دست آوريم.</span></font></p>
 <div dir="ltr">
 	<PRE><font face="Tahoma">    SELECT col
     FROM tab
@@ -1061,355 +1079,356 @@ LIMIT<span lang="fa">&#8204; &#1548; &#1570;&#1606;&#1607;&#1575; &#1585;&#1575;
     LIMIT 1;
 </font></PRE>
 </div>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1575;&#1711;&#1585; &#1588;&#1605;&#1575; &#1601;&#1603;&#1585; &#1605;&#1610;&#8204;&#1603;&#1606;&#1610;&#1583; &#1603;&#1607; &#1576;&#1607;&#1610;&#1606;&#1607; 
-&#1587;&#1575;&#1586; &#1587;&#1610;&#1587;&#1578;&#1605; &#1583;&#1585; &#1575;&#1606;&#1578;&#1582;&#1575;&#1576; &#1662;&#1610;&#1605;&#1575;&#1610;&#1588; &#1578;&#1585;&#1578;&#1610;&#1576;&#1610; &#1575;&#1588;&#1578;&#1576;&#1575;&#1607; &#1603;&#1585;&#1583;&#1607; &#1575;&#1587;&#1578; &#1576;&#1575; &#1583;&#1587;&#1578;&#1608;&#1585; </span>'</font><CODE><font face="Tahoma">SET enable_seqscan TO 'off'</font></CODE><font face="Tahoma"><span lang="fa">&nbsp; 
-&#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1610;&#1583; &#1576;&#1576;&#1610;&#1606;&#1610;&#1583; &#1570;&#1610;&#1575; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1606;&#1605;&#1575;&#1610;&#1607;&#8204;&#1607;&#1575; &#1576;&#1575;&#1593;&#1579; &#1575;&#1601;&#1586;&#1575;&#1610;&#1588; &#1587;&#1585;&#1593;&#1578; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578;&#8204;&#1607;&#1575; &#1582;&#1608;&#1575;&#1607;&#1583; &#1588;&#1583; 
-&#1610;&#1575; &#1582;&#1610;&#1585;.</span></font></P>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1606;&#1605;&#1575;&#1610;&#1607;&#8204;&#1607;&#1575; &#1607;&#1606;&#1711;&#1575;&#1605;&#1610; &#1603;&#1607; 
-&#1575;&#1586; &#1593;&#1604;&#1575;&#1574;&#1605; &#1608;&#1610;&#1688;&#1607; &#1606;&#1592;&#1610;&#1585; </span>LIKE<span lang="fa"> &#1608; </span>~<span lang="fa"> 
-&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1605;&#1610;&#8204;&#1603;&#1606;&#1610;&#1583; &#1601;&#1602;&#1591; &#1583;&#1585; &#1576;&#1593;&#1590;&#1610; &#1588;&#1585;&#1575;&#1610;&#1591; &#1582;&#1575;&#1589; &#1603;&#1607; &#1583;&#1585; &#1575;&#1610;&#1606;&#1580;&#1575; &#1584;&#1603;&#1585; &#1588;&#1583;&#1607; &#1575;&#1587;&#1578; &#1605;&#1605;&#1603;&#1606; &#1575;&#1587;&#1578;:</span></font></P>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">اگر شما فكر مي‌كنيد كه بهينه 
+ساز سيستم در انتخاب پيمايش ترتيبي اشتباه كرده است با دستور </span>&#39;</font><CODE><font face="Tahoma">SET 
+enable_seqscan TO &#39;off&#39;</font></CODE><font face="Tahoma"><span lang="fa">&nbsp; 
+مي‌توانيد ببينيد آيا استفاده از نمايه‌ها باعث افزايش سرعت درخواست‌ها خواهد شد.</span></font></P>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">استفاده از نمايه‌ها هنگامي كه 
+از علائم ويژه نظير </span>LIKE<span lang="fa"> و </span>~<span lang="fa"> 
+استفاده مي‌كنيد فقط در بعضي شرايط خاصي كه در اينجا ذكر شده است ممكن است:</span></font></P>
 <ul dir="rtl">
 	<li dir="rtl">
-	<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1575;&#1576;&#1578;&#1583;&#1575;&#1610; &#1585;&#1588;&#1578;&#1607; &#1580;&#1587;&#1578;&#1580;&#1608; &#1576;&#1575;&#1610;&#1583; &#1576;&#1607; 
-	&#1591;&#1608;&#1585; &#1589;&#1585;&#1610;&#1581; &#1605;&#1588;&#1582;&#1589; &#1576;&#1575;&#1588;&#1583; &#1576;&#1585;&#1575;&#1610; &#1605;&#1579;&#1575;&#1604;:</span></font></li>
-</ul>
-<p dir="rtl"><span dir="rtl"><font face="Tahoma"><span lang="fa">- &#1583;&#1587;&#1578;&#1608;&#1585;&#1575;&#1578;
-	</span>LIKE<span lang="fa"> &#1606;&#1576;&#1575;&#1610;&#1583; &#1576;&#1575; &#1593;&#1604;&#1575;&#1605;&#1578; 
-</span>%<span lang="fa"> &#1588;&#1585;&#1608;&#1593; 
-	&#1588;&#1608;&#1606;&#1583;</span></font></span></p>
-<p dir="rtl"><font face="Tahoma"><span lang="fa">- &#1575;&#1604;&#1711;&#1608;&#1607;&#1575;&#1610; &#1605;&#1606;&#1592;&#1605;&#1610; &#1603;&#1607; &#1576;&#1575; 
-</span>~<span lang="fa"> &#1605;&#1610;&#8204;&#1570;&#1610;&#1583; &#1581;&#1578;&#1605;&#1575;&#1611; &#1576;&#1575;&#1610;&#1583; &#1576;&#1575; &#1593;&#1604;&#1575;&#1605;&#1578;
-</span>^<span lang="fa"> &#1588;&#1585;&#1608;&#1593; 
-	&#1588;&#1608;&#1583;</span></font></p>
-<ul dir="rtl">
+	<p dir="rtl"><font face="Tahoma"><span lang="fa">ابتداي رشته جستجو بايد به 
+	طور صريح مشخص باشد براي مثال:</span></font></li>
+	<li dir="rtl">
+	<p dir="rtl"><span dir="rtl"><font face="Tahoma"><span lang="fa">دستورات
+	</span>LIKE<span lang="fa"> نبايد با علامت </span>%<span lang="fa"> شروع 
+	شوند</span></font></span></li>
+	<li dir="rtl">
+	<p dir="rtl"><font face="Tahoma"><span lang="fa">الگوهاي منظمي كه با </span>
+	~<span lang="fa"> مي‌ايد حتماً بايد با علامت </span>^<span lang="fa"> شروع 
+	شود</span></font></li>
 	<li dir="rtl">
-	<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1585;&#1588;&#1578;&#1607; &#1580;&#1587;&#1578;&#1580;&#1608; &#1606;&#1576;&#1575;&#1610;&#1583; &#1576;&#1575; &#1610;&#1603; 
-	&#1605;&#1580;&#1605;&#1608;&#1593;&#1607; &#1575;&#1586; &#1603;&#1575;&#1585;&#1575;&#1603;&#1578;&#1585;&#8204;&#1607;&#1575;&nbsp; &#1605;&#1579;&#1604; </span>[a-e]<span lang="fa"> &#1588;&#1585;&#1608;&#1593; &#1588;&#1608;&#1583;</span></font></li>
+	<p dir="rtl"><font face="Tahoma"><span lang="fa">رشته جستجو نبايد با يك 
+	مجموعه از كاراكتر‌ها&nbsp; مثل </span>[a-e]<span lang="fa"> شروع شود</span></font></li>
 	<li dir="rtl">
-	<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1580;&#1587;&#1578;&#1580;&#1608;&#1607;&#1575;&#1610; &#1594;&#1610;&#1585;&#1581;&#1587;&#1575;&#1587; &#1576;&#1607; &#1605;&#1578;&#1606; &#1605;&#1579;&#1604;&nbsp;
-	</span>ILIKE<span lang="fa">&#8204; &#1608; </span>*~<span lang="fa"> &#1575;&#1586; &#1606;&#1605;&#1575;&#1610;&#1607;&#8204;&#1607;&#1575; 
-	&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1606;&#1605;&#1610;&#8204;&#1603;&#1606;&#1606;&#1583;. &#1583;&#1585; &#1593;&#1608;&#1590; &#1575;&#1586; &#1578;&#1608;&#1575;&#1576;&#1593; &#1606;&#1605;&#1575;&#1610;&#1607;&#8204;&#1575;&#1610; &#1603;&#1607; &#1583;&#1585; &#1602;&#1587;&#1605;&#1578; </span>
+	<p dir="rtl"><font face="Tahoma"><span lang="fa">جستجوهاي غيرحساس به متن مثل&nbsp;
+	</span>ILIKE<span lang="fa">‌ و </span>*~<span lang="fa"> از نمايه‌ها 
+	استفاده نمي‌كنند. در عوض از توابع نمايه‌اي كه در قسمت </span>
 	<A 
   href="#4.12">4.12</A><span lang="fa"> 
-	&#1578;&#1608;&#1590;&#1610;&#1581; &#1583;&#1575;&#1583;&#1607; &#1588;&#1583; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1605;&#1610;&#8204;&#1603;&#1606;&#1606;&#1583;.</span></font></li>
+	توضيح داده شد استفاده مي‌كنند.</span></font></li>
 	<li dir="rtl">
-	<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1605;&#1602;&#1583;&#1575;&#1585; &#1662;&#1610;&#1588; &#1601;&#1585;&#1590; </span>locale<span lang="fa">&#8204; 
-	&#1576;&#1575;&#1610;&#1583; &#1583;&#1585; </span>initdb<span lang="fa"> &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1588;&#1608;&#1583;.</span></font></li>
+	<p dir="rtl"><font face="Tahoma"><span lang="fa">مقدار پيش فرض </span>locale<span lang="fa">‌ 
+	بايد در </span>initdb<span lang="fa"> استفاده شود.</span></font></li>
 </ul>
 <H4 dir="rtl"><font face="Tahoma"><A name=4.9>4.9</A>)  
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1606;&#1581;&#1608;&#1607; &#1576;&#1585;&#1585;&#1587;&#1610; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578; &#1585;&#1575; &#1578;&#1608;&#1587;&#1591; &#1576;&#1607;&#1610;&#1606;&#1607;&#8204;&#1587;&#1575;&#1586; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578;&#1607;&#1575; 
-&#1605;&#1588;&#1575;&#1607;&#1583;&#1607; &#1603;&#1606;&#1605;&#1567;</span></font></H4>
-<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1585;&#1575;&#1607;&#1606;&#1605;&#1575;&#1610; &#1583;&#1587;&#1578;&#1608;&#1585; </span>EXPLAIN<span lang="fa"> 
-&#1585;&#1575; &#1606;&#1711;&#1575;&#1607; &#1603;&#1606;&#1610;&#1583;.</span></font></p>
+<span lang="fa">چگونه مي‌توانم نحوه بررسي درخواست را توسط بهينه‌ساز درخواستها 
+مشاهده كنم؟</span></font></H4>
+<p dir="rtl"><font face="Tahoma"><span lang="fa">راهنماي دستور </span>EXPLAIN<span lang="fa"> 
+را نگاه كنيد.</span></font></p>
 <H4 dir="rtl"><font face="Tahoma"><A name=4.10>4.10</A>)  
-<span lang="fa">&#1606;&#1605;&#1575;&#1610;&#1607; </span>R-tree<span lang="fa">&#8204; &#1670;&#1610;&#1587;&#1578;&#1567;</span></font></H4>
-<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1575;&#1586; &#1606;&#1605;&#1575;&#1610;&#1607; </span>R-Tree
-<span lang="fa">&nbsp;&#1576;&#1585;&#1575;&#1610; &#1575;&#1606;&#1583;&#1610;&#1587; &#1603;&#1585;&#1583;&#1606; &#1583;&#1575;&#1583;&#1607;&#8204;&#1607;&#1575;&#1610; &#1601;&#1575;&#1589;&#1604;&#1607;&#8204;&#1575;&#1610; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583;. &#1610;&#1603; &#1606;&#1605;&#1575;&#1610;&#1607;
-</span>hash<span lang="fa"> &#1606;&#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1583; &#1580;&#1587;&#1578;&#1580;&#1608;&#1607;&#1575;&#1610; &#1605;&#1581;&#1583;&#1608;&#1583;&#1607;&#8204;&#1575;&#1610; &#1585;&#1575; &#1575;&#1606;&#1580;&#1575;&#1605; &#1583;&#1607;&#1583;. &#1606;&#1605;&#1575;&#1610;&#1607;</span> 
-&quot;B-tree&quot;<span lang="fa"> &#1606;&#1610;&#1586; &#1576;&#1585;&#1575;&#1610; &#1575;&#1606;&#1580;&#1575;&#1605; &#1580;&#1587;&#1578;&#1580;&#1608;&#1610; &#1605;&#1581;&#1583;&#1608;&#1583;&#1607;&#8204;&#1575;&#1610; &#1583;&#1585; &#1610;&#1603; &#1580;&#1607;&#1578; &#1602;&#1575;&#1576;&#1604; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; 
-&#1575;&#1587;&#1578;. &#1575;&#1605;&#1575; </span>R-Tree<span lang="fa"> &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1583; &#1583;&#1575;&#1583;&#1607;&#8204;&#1607;&#1575;&#1610; &#1670;&#1606;&#1583; &#1576;&#1593;&#1583;&#1610; &#1585;&#1575; &#1606;&#1610;&#1586; 
-&#1662;&#1588;&#1578;&#1610;&#1576;&#1575;&#1606;&#1610; &#1603;&#1606;&#1583;. &#1576;&#1585;&#1575;&#1610; &#1605;&#1579;&#1575;&#1604; &#1575;&#1711;&#1585; &#1575;&#1586; &#1606;&#1605;&#1575;&#1610;&#1607; </span>R-tree<span lang="fa">&#8204; &#1576;&#1585;&#1575;&#1610; 
-&#1711;&#1608;&#1606;&#1607; </span>Point<span lang="fa"> &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1588;&#1608;&#1583; &#1587;&#1585;&#1593;&#1578; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578;&#8204;&#1607;&#1575;&#1610;&#1610; &#1606;&#1592;&#1610;&#1585; &quot;</span>select 
-all points within a bounding rectangle<span lang="fa">&quot; &#1576;&#1607; &#1605;&#1585;&#1575;&#1578;&#1576; &#1575;&#1601;&#1586;&#1575;&#1610;&#1588; &#1605;&#1610;&#8204;&#1610;&#1575;&#1576;&#1583;.</span></font></p>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1605;&#1602;&#1575;&#1604;&#1607;&#8204;&#1575;&#1610; &#1603;&#1607; &#1591;&#1585;&#1575;&#1581;&#1610; </span>R-tree<span lang="fa"> 
-&#1585;&#1575; &#1578;&#1608;&#1590;&#1610;&#1581; &#1583;&#1575;&#1583;&#1607; &#1575;&#1587;&#1578; </span></font></P>
-<P><font face="Tahoma">Guttman, A. "R-trees: A Dynamic Index Structure for Spatial Searching." 
-Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57.</font></P>
-<P dir="rtl"><font face="Tahoma">R-tree<span lang="fa">&#8204; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1583; &#1670;&#1606;&#1583;&#1590;&#1604;&#1593;&#1610;&#1607;&#1575; &#1608; 
-&#1670;&#1606;&#1583; &#1608;&#1580;&#1607;&#1610; &#1585;&#1575; &#1662;&#1588;&#1578;&#1610;&#1576;&#1575;&#1606;&#1610; &#1603;&#1606;&#1583;. &#1583;&#1585; &#1578;&#1574;&#1608;&#1585;&#1610;&#1548; </span>R-tree<span lang="fa"> &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1583; &#1578;&#1593;&#1583;&#1575;&#1583;&nbsp; &#1576;&#1593;&#1583;&#1607;&#1575;&#1610;&nbsp; &#1576;&#1575;&#1604;&#1575;&#1578;&#1585;&#1610; 
-&#1585;&#1575; &#1606;&#1610;&#1586;&nbsp; &#1662;&#1588;&#1578;&#1610;&#1576;&#1575;&#1606;&#1610; &#1603;&#1606;&#1583;. &#1583;&#1585;&nbsp; &#1593;&#1605;&#1604;&nbsp; &#1578;&#1608;&#1587;&#1593;&#1607; </span>R-tree<span lang="fa">&#8204; 
-&#1606;&#1610;&#1575;&#1586; &#1576;&#1607; &#1603;&#1575;&#1585; &#1576;&#1610;&#1588;&#1578;&#1585;&#1610; &#1583;&#1575;&#1585;&#1583;.</span></font></P>
+<span lang="fa">نمايه </span>R-tree<span lang="fa">‌ چيست؟</span></font></H4>
+<p dir="rtl"><font face="Tahoma"><span lang="fa">از نمايه </span>R-Tree
+<span lang="fa">&nbsp;براي انديس كردن داده‌هاي فاصله‌اي استفاده مي‌شود. يك نمايه
+</span>hash<span lang="fa"> نمي‌توانند جستجوهاي محدوده‌اي را انجام دهد. نمايه</span> 
+&quot;B-tree&quot;<span lang="fa"> نيز براي انجام جستجوي محدوده‌اي در يك جهت قابل استفاده 
+است. اما </span>R-Tree<span lang="fa"> مي‌تواند داده‌هاي چند بعدي را نيز 
+پشتيباني كند. براي مثال استفاده اگر از نمايه </span>R-tree<span lang="fa">‌ براي 
+گونه </span>Point<span lang="fa"> استفاده شود سرعت درخواست‌هايي نظير &quot;</span>select 
+all points within a bounding rectangle<span lang="fa">&quot; به مراتب افزايش مي‌يابد.</span></font></p>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">مقاله‌اي كه طراحي </span>R-tree<span lang="fa"> 
+را توضيح داده است </span></font></P>
+<P><font face="Tahoma">Guttman, A. &quot;R-trees: A Dynamic Index Structure for 
+Spatial Searching.&quot; Proceedings of the 1984 ACM SIGMOD Int&#39;l Conf on Mgmt of 
+Data, 45-57.</font></P>
+<P dir="rtl"><font face="Tahoma">R-tree<span lang="fa">‌ مي‌تواند چندضلعيها و 
+چند وجهي را پشتيباني كند. در تئوري </span>R-tree<span lang="fa"> مي‌تواند تعداد 
+بعدهاي بالاتر ري نيز پشتيباني كند. در عمل توسعه </span>R-tree<span lang="fa">‌ 
+نياز به كار بيشتري دارد.</span></font></P>
 <H4 dir="rtl"><font face="Tahoma"><A name=4.11>4.11</A>) 
-<span lang="fa">&#1576;&#1607;&#1610;&#1606;&#1607; &#1587;&#1575;&#1586; &#1578;&#1603;&#1608;&#1610;&#1606;&#1610; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578; &#1670;&#1610;&#1587;&#1578;&#1567;</span> (Genetic Query Optimizer)</font></H4>
-<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; </span>GEQO<span lang="fa"> 
-&#1587;&#1585;&#1593;&#1578; &#1576;&#1607;&#1610;&#1606;&#1607; &#1587;&#1575;&#1586;&#1610; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578; &#1585;&#1575; &#1607;&#1606;&#1711;&#1575;&#1605;&#1610;&#1603;&#1607; &#1578;&#1593;&#1583;&#1575;&#1583; &#1586;&#1610;&#1575;&#1583;&#1610; &#1580;&#1583;&#1608;&#1604; &#1585;&#1575; &#1576;&#1575; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1575;&#1604;&#1711;&#1608;&#1585;&#1610;&#1578;&#1605; 
-&#1688;&#1606;&#1578;&#1610;&#1603; &#1575;&#1604;&#1581;&#1575;&#1602; &#1605;&#1610;&#8204;&#1603;&#1606;&#1610;&#1605; &#1575;&#1601;&#1586;&#1575;&#1610;&#1588; &#1605;&#1610;&#8204;&#1583;&#1607;&#1583;.</span></font></p>
+<span lang="fa">بهينه ساز تكويني درخواست چيست؟</span> (Genetic Query Optimizer)</font></H4>
+<p dir="rtl"><font face="Tahoma"><span lang="fa">استفاده از </span>GEQO<span lang="fa"> 
+سرعت بهينه سازي درخواست را هنگاميكه تعداد زيادي جدول را با استفاده از الگوريتم 
+ژنتيك الحاق مي‌كنيم افزايش مي‌دهد.</span></font></p>
 <H4 dir="rtl"><font face="Tahoma"><A name=4.12>4.12</A>) 
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1575;&#1586; &#1593;&#1576;&#1575;&#1585;&#1575;&#1578; &#1605;&#1606;&#1592;&#1605; &#1576;&#1585;&#1575;&#1610; &#1580;&#1587;&#1578;&#1580;&#1608; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1603;&#1606;&#1605;&#1567; &#1670;&#1711;&#1608;&#1606;&#1607; &#1580;&#1587;&#1578;&#1580;&#1608;&#1610;&#1610; &#1575;&#1606;&#1580;&#1575;&#1605; 
-&#1583;&#1607;&#1605; &#1603;&#1607; &#1581;&#1587;&#1575;&#1587; &#1576;&#1607; &#1605;&#1578;&#1606; &#1606;&#1576;&#1575;&#1588;&#1583;&#1567; &#1670;&#1711;&#1608;&#1606;&#1607; &#1576;&#1585;&#1575;&#1610; &#1610;&#1603; &#1580;&#1587;&#1578;&#1580;&#1608;&#1610; &#1594;&#1610;&#1585; &#1581;&#1587;&#1575;&#1587; &#1576;&#1607; &#1605;&#1578;&#1606; &#1575;&#1586; &#1606;&#1605;&#1575;&#1610;&#1607; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; 
-&#1603;&#1606;&#1605;&#1567;</span></font></H4>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1576;&#1585;&#1575;&#1610; &#1580;&#1587;&#1578;&#1580;&#1608;&#1610; &#1593;&#1576;&#1575;&#1585;&#1578; &#1605;&#1606;&#1592;&#1605; &#1575;&#1586; &#1593;&#1605;&#1604;&#1711;&#1585;
-</span>~<span lang="fa">&#8204; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1605;&#1610;&#8204;&#1603;&#1606;&#1610;&#1605;. &#1576;&#1585;&#1575;&#1610; &#1580;&#1587;&#1578;&#1580;&#1608;&#1610; &#1594;&#1610;&#1585; &#1581;&#1587;&#1575;&#1587; &#1576;&#1607; &#1605;&#1578;&#1606; &#1575;&#1586; &#1593;&#1605;&#1604;&#1711;&#1585;
-</span>*~ <span lang="fa">&#1608; &#1610;&#1575; </span>ILIKE<span lang="fa">&#8204; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1605;&#1610;&#8204;&#1603;&#1606;&#1610;&#1605;.</span></font></P>
-<p dir="rtl"><span lang="fa"><font face="Tahoma">&#1585;&#1608;&#1588; &#1583;&#1610;&#1711;&#1585; &#1575;&#1606;&#1580;&#1575;&#1605; &#1580;&#1587;&#1578;&#1580;&#1608;&#1610; &#1594;&#1610;&#1585; &#1581;&#1587;&#1575;&#1587; 
-&#1576;&#1607; &#1605;&#1578;&#1606; &#1583;&#1585; &#1586;&#1610;&#1585; &#1606;&#1588;&#1575;&#1606; &#1583;&#1575;&#1583;&#1607; &#1588;&#1583;&#1607; &#1575;&#1587;&#1578;.</font></span></p>
+<span lang="fa">چگونه از عبارات منظم براي جستجو استفاده كنم؟ چگونه جستجويي انجام 
+دهم كه حساس به متن نباشد؟ چگونه براي يك جستجوي غير حساس به متن از نمايه استفاده 
+كنم؟</span></font></H4>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">براي جستجوي عبارت منظم از عملگر
+</span>~<span lang="fa">‌ استفاده مي‌كنيم. براي جستجوي غير حساس به متن از عملگر
+</span>*~ <span lang="fa">و يا </span>ILIKE<span lang="fa">‌ استفاده مي‌كنيم.</span></font></P>
+<p dir="rtl"><span lang="fa"><font face="Tahoma">روش ديگر انجام جستجوي غير حساس 
+به متن در زير نشان داده شده است.</font></span></p>
 <PRE><font face="Tahoma">    SELECT *
     FROM tab
-    WHERE lower(col) = 'abc';
+    WHERE lower(col) = &#39;abc&#39;;
 </font></PRE>
-<p dir="rtl"><span lang="fa"><font face="Tahoma">&#1575;&#1610;&#1606; &#1575;&#1586; &#1606;&#1605;&#1575;&#1610;&#1607;&#8204;&#1607;&#1575;&#1610; &#1575;&#1587;&#1578;&#1575;&#1606;&#1583;&#1575;&#1585;&#1583; 
-&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1606;&#1605;&#1610;&#8204;&#1603;&#1606;&#1583;. &#1608;&#1604;&#1610; &#1588;&#1605;&#1575; &#1605;&#1610; &#1578;&#1608;&#1575;&#1606;&#1610;&#1583; &#1576;&#1575; &#1583;&#1587;&#1578;&#1608;&#1585; &#1586;&#1610;&#1585; &#1610;&#1603; &#1606;&#1605;&#1575;&#1610;&#1607; &#1575;&#1610;&#1580;&#1575;&#1583; &#1603;&#1606;&#1610;&#1583; &#1608; &#1575;&#1586; &#1570;&#1606; 
-&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1603;&#1606;&#1610;&#1583;.</font></span></p>
+<p dir="rtl"><span lang="fa"><font face="Tahoma">اين از نمايه‌هاي استاندارد 
+استفاده نمي‌كند. ولي شما مي توانيد با دستور زير يك نمايه ايجاد كنيد و از آن 
+استفاده كنيد.</font></span></p>
 <PRE><font face="Tahoma">    CREATE INDEX tabindex ON tab (lower(col));
 </font></PRE>
-<H4 dir="rtl"><font face="Tahoma"><A name=4.13>4.13</A>) <span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1583;&#1585; &#1610;&#1603; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578; &#1578;&#1588;&#1582;&#1610;&#1589; &#1583;&#1607;&#1605; &#1603;&#1607; &#1610;&#1603; &#1601;&#1610;&#1604;&#1583; </span>NULL<span lang="fa">&#8204; 
-&#1575;&#1587;&#1578;&#1567;</span></font></H4>
-<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1576;&#1575; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1578;&#1608;&#1575;&#1576;&#1593; </span>IS 
-NULL<span lang="fa"> &#1608; </span>IS NOT NULL<span lang="fa"> &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1610;&#1605; </span>NULL<span lang="fa"> 
-&#1576;&#1608;&#1583;&#1606; &#1610;&#1603; &#1601;&#1610;&#1604;&#1583; &#1585;&#1575; &#1578;&#1587;&#1578; &#1603;&#1606;&#1610;&#1605;.</span></font></p>
+<H4 dir="rtl"><font face="Tahoma"><A name=4.13>4.13</A>) I<span lang="fa">چگونه 
+مي‌توانم در يك درخواست تشخيص دهم كه يك فيلد </span>NULL<span lang="fa">‌ است؟</span></font></H4>
+<p dir="rtl"><font face="Tahoma"><span lang="fa">با استفاده از توابع </span>IS 
+NULL<span lang="fa"> و </span>IS NOT NULL<span lang="fa"> مي‌توانيم </span>NULL<span lang="fa"> 
+بودن يك فيلد را تست كنيم.</span></font></p>
 <H4 dir="rtl"><font face="Tahoma"><A name=4.14>4.14</A>) 
-<span lang="fa">&#1578;&#1601;&#1575;&#1608;&#1578; &#1576;&#1610;&#1606; &#1711;&#1608;&#1606;&#1607;&#8204;&#1607;&#1575;&#1610; &#1605;&#1582;&#1578;&#1604;&#1601; </span>character<span lang="fa"> &#1670;&#1610;&#1587;&#1578;&#1567;</span></font></H4>
+<span lang="fa">تفاوت بين گونه‌هاي مختلف </span>character<span lang="fa"> چيست؟</span></font></H4>
 <PRE><font face="Tahoma">Type            Internal Name   Notes
 --------------------------------------------------
-VARCHAR(n)      varchar      <span lang="fa">&#1575;&#1606;&#1583;&#1575;&#1586;&#1607;&#1548; &#1581;&#1583;&#1575;&#1603;&#1579;&#1585; &#1591;&#1608;&#1604; &#1585;&#1575; &#1606;&#1588;&#1575;&#1606; &#1605;&#1610; &#1583;&#1607;&#1583; &#1576;&#1583;&#1608;&#1606; &#1575;&#1590;&#1575;&#1601;&#1607; &#1588;&#1583;&#1606; &#1603;&#1575;&#1585;&#1575;&#1603;&#1578;&#1585; &#1575;&#1590;&#1575;&#1601;&#1607;</span>
-CHAR(n)       <span lang="fa">   </span>  bpchar       <span lang="fa">&#1603;&#1575;&#1585;&#1575;&#1603;&#1578;&#1585;&#1607;&#1575;&#1610; &#1576;&#1604;&#1575;&#1606;&#1603; &#1576;&#1585;&#1575;&#1610; &#1662;&#1585; &#1588;&#1583;&#1606; &#1591;&#1608;&#1604; &#1605;&#1588;&#1582;&#1589; &#1588;&#1583;&#1607; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583;</span>
-TEXT            <span lang="fa">    </span>text           <span lang="fa"> </span>&#1581;<span lang="fa">&#1583;&#1575;&#1603;&#1579;&#1585; &#1591;&#1608;&#1604; &#1585;&#1575; &#1605;&#1588;&#1582;&#1589; &#1606;&#1605;&#1610;&#8204;&#1603;&#1606;&#1583;</span>
-BYTEA          <span lang="fa">    </span> bytea         <span lang="fa">&#1570;&#1585;&#1575;&#1610;&#1607;&#8204;&#1575;&#1610; &#1575;&#1586; &#1576;&#1575;&#1610;&#1578; &#1576;&#1575; &#1591;&#1608;&#1604; &#1605;&#1578;&#1594;&#1610;&#1585;</span>
-"char"          <span lang="fa">     </span>char           <span lang="fa">&#1610;&#1603; &#1603;&#1575;&#1585;&#1575;&#1603;&#1578;&#1585;</span>
+VARCHAR(n)      varchar      <span lang="fa">اندازه، حداكثر طول را نشان مي دهد بدون اضافه شدن كاراكتر اضافه</span>
+CHAR(n)       <span lang="fa">   </span>  bpchar       <span lang="fa">كاراكترهاي بلانك براي پر شدن طول مشخص شده استفاده مي‌شود</span>
+TEXT            <span lang="fa">    </span>text           <span lang="fa"> </span>ح<span lang="fa">داكثر طول را مشخص نمي‌كند</span>
+BYTEA          <span lang="fa">    </span> bytea         <span lang="fa">آرايه‌اي از بايت با طول متغير</span>
+&quot;char&quot;          <span lang="fa">     </span>char           <span lang="fa">يك كاراكتر</span>
 </font></PRE>
-<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1606;&#1575;&#1605; &#1583;&#1575;&#1582;&#1604;&#1610; &#1711;&#1608;&#1606;&#1607;&#8204;&#1607;&#1575; &#1585;&#1575; &#1583;&#1585; </span>
-system catalogue <span lang="fa">&#8204;&#1608; &#1576;&#1593;&#1590;&#1610; &#1575;&#1586; &#1662;&#1610;&#1594;&#1575;&#1605;&#1607;&#1575;&#1610; &#1582;&#1591;&#1575; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606; &#1583;&#1610;&#1583;.</span></font></p>
-<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1670;&#1607;&#1575;&#1585; &#1711;&#1608;&#1606;&#1607; &#1575;&#1608;&#1604; &#1607;&#1605;&#1711;&#1610; &#1575;&#1586; &#1606;&#1608;&#1593;
-</span>varlena <span lang="fa">&#1607;&#1587;&#1578;&#1606;&#1583; (4 &#1576;&#1575;&#1610;&#1578; &#1575;&#1608;&#1604; &#1585;&#1608;&#1610; &#1583;&#1610;&#1587;&#1603; &#1591;&#1608;&#1604; &#1585;&#1575; &#1605;&#1588;&#1582;&#1589; &#1605;&#1610;&#8204;&#1603;&#1606;&#1583; &#1603;&#1607; 
-&#1576;&#1607; &#1583;&#1606;&#1576;&#1575;&#1604; &#1570;&#1606; &#1583;&#1575;&#1583;&#1607;&#8204;&#1607;&#1575; &#1602;&#1585;&#1575;&#1585; &#1583;&#1575;&#1585;&#1606;&#1583;.)&#8204;&#1576;&#1606;&#1575;&#1576;&#1585;&#1575;&#1610;&#1606; &#1601;&#1590;&#1575;&#1610; &#1608;&#1575;&#1602;&#1593;&#1610; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1588;&#1583;&#1607; &#1585;&#1608;&#1610; &#1583;&#1610;&#1587;&#1603; &#1575;&#1586; 
-&#1575;&#1606;&#1583;&#1575;&#1586;&#1607; &#1578;&#1593;&#1585;&#1610;&#1601; &#1588;&#1583;&#1607; &#1576;&#1610;&#1588;&#1578;&#1585; &#1575;&#1587;&#1578;. &#1575;&#1605;&#1575; &#1575;&#1610;&#1606; &#1711;&#1608;&#1606;&#1607;&#8204;&#1607;&#1575; &#1585;&#1575; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606; &#1601;&#1588;&#1585;&#1583;&#1607; &#1603;&#1585;&#1583; &#1603;&#1607; &#1575;&#1610;&#1606;&#1603;&#1575;&#1585; &#1576;&#1575;&#1593;&#1579; 
-&#1605;&#1610;&#8204;&#1588;&#1608;&#1583; &#1601;&#1590;&#1575;&#1610; &#1603;&#1605;&#1578;&#1585;&#1610; &#1585;&#1608;&#1610; &#1583;&#1610;&#1587;&#1603; &#1575;&#1588;&#1594;&#1575;&#1604; &#1603;&#1606;&#1606;&#1583;.</span></font></p>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1576;&#1585;&#1575;&#1610; &#1584;&#1582;&#1610;&#1585;&#1607; &#1585;&#1588;&#1578;&#1607;&#8204;&#1607;&#1575;&#1610; &#1576;&#1575; &#1591;&#1608;&#1604; 
-&#1605;&#1578;&#1594;&#1610;&#1585;</span><font size="2">(</font><SMALL>VARCHAR(n<span lang="fa">&#8204;
-<font size="3">&#1576;&#1607;&#1578;&#1585;&#1610;&#1606; &#1575;&#1606;&#1578;&#1582;&#1575;&#1576; &#1575;&#1587;&#1578;. &#1583;&#1585; &#1575;&#1610;&#1606; &#1711;&#1608;&#1606;&#1607; &#1581;&#1583;&#1575;&#1603;&#1579;&#1585; &#1591;&#1608;&#1604; &#1585;&#1588;&#1578;&#1607; &#1605;&#1581;&#1583;&#1608;&#1583; &#1575;&#1587;&#1578; &#1576;&#1585; &#1582;&#1604;&#1575;&#1601;
-</font></span><font size="3">text<span lang="fa"> &#1603;&#1607; &#1607;&#1610;&#1670; &#1605;&#1581;&#1583;&#1608;&#1583;&#1610;&#1578;&#1610; &#1585;&#1608;&#1610; &#1581;&#1583;&#1575;&#1603;&#1579;&#1585; 
-&#1575;&#1606;&#1583;&#1575;&#1586;&#1607; &#1585;&#1588;&#1578;&#1607; &#1606;&#1605;&#1610;&#8204;&#1711;&#1584;&#1575;&#1585;&#1583;.(&#1583;&#1585; &#1575;&#1610;&#1606; &#1711;&#1608;&#1606;&#1607; &#1581;&#1583;&#1575;&#1603;&#1579;&#1585; &#1591;&#1608;&#1604; &#1610;&#1603; &#1585;&#1588;&#1578;&#1607; &#1610;&#1603; &#1711;&#1610;&#1711;&#1575; &#1576;&#1575;&#1610;&#1578; &#1582;&#1608;&#1575;&#1607;&#1583; &#1576;&#1608;&#1583;)</span></font></SMALL></font></P>
-<p dir="rtl"><span lang="fa"><font face="Tahoma">&#1711;&#1608;&#1606;&#1607; <font size="2">(</font></font></span><font face="Tahoma">CHAR(n<span lang="fa">
-<font size="3">&nbsp;&#1576;&#1585;&#1575;&#1610; &#1584;&#1582;&#1610;&#1585;&#1607; &#1583;&#1575;&#1583;&#1607;&#8204;&#1607;&#1575;&#1610; &#1576;&#1575; &#1591;&#1608;&#1604; &#1610;&#1603;&#1587;&#1575;&#1606; &#1575;&#1587;&#1578;.&#1610;&#1603; 
-&#1711;&#1608;&#1606;&#1607;&#8204;</font>&#1610;</span><font size="3"> </font>
+<p dir="rtl"><font face="Tahoma"><span lang="fa">نام داخلي گونه‌ها را در </span>
+system catalogue <span lang="fa">‌و بعضي از پيغامهاي خطا مي‌توان ديد.</span></font></p>
+<p dir="rtl"><font face="Tahoma"><span lang="fa">چهار گونه اول همگي از نوع
+</span>varlena <span lang="fa">هستند (4 بايت اول روي ديسك طول را مشخص مي‌كند كه 
+به دنبال آن داده‌ها قرار دارند.)‌بنابراين فضاي واقعي استفاده شده روي ديسك از 
+اندازه تعريف شده بيشتر است. اما اين گونه‌ها را مي‌توان فشرده كرد كه اينكار باعث 
+مي‌شود فضاي كمتري روي ديسك اشغال كنند.</span></font></p>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">براي ذخيره رشته‌هاي با طول 
+متغير</span><font size="2">(</font><SMALL>VARCHAR(n<span lang="fa">‌
+<font size="3">بهترين انتخاب است. در اين گونه حداكثر طول رشته محدود است بر خلاف
+</font></span><font size="3">text<span lang="fa"> كه هيچ محدوديتي روي حداكثر 
+اندازه رشته نمي‌گذارد.(در اين گونه حداكثر طول يك رشته يك گيگا بايت خواهد بود)</span></font></SMALL></font></P>
+<p dir="rtl"><span lang="fa"><font face="Tahoma">گونه <font size="2">(</font></font></span><font face="Tahoma">CHAR(n<span lang="fa">
+<font size="3">&nbsp;براي ذخيره داده‌هاي با طول يكسان است.يك گونه‌</font>ي</span><font size="3"> </font>
 <font size="2"><span lang="fa">(</span></font>CHAR(n <span lang="fa">
-<font size="3">&#1576;&#1575; &#1603;&#1575;&#1585;&#1575;&#1603;&#1578;&#1585;&#1607;&#1575;&#1610; &#1576;&#1604;&#1575;&#1606;&#1603; (&#1582;&#1575;&#1604;&#1610;) &#1662;&#1585; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583; &#1578;&#1575; &#1576;&#1607; &#1591;&#1608;&#1604; &#1605;&#1588;&#1582;&#1589; &#1588;&#1583;&#1607; &#1576;&#1585;&#1587;&#1583; &#1583;&#1585; 
-&#1581;&#1575;&#1604;&#1610;&#1603;&#1607; &#1711;&#1608;&#1606;&#1607; </font></span><font size="3">VARCHAR</font><font size="3"><span lang="fa"> 
-&#1603;&#1575;&#1585;&#1575;&#1603;&#1578;&#1585;&#1607;&#1575; &#1585;&#1575; &#1576;&#1607; &#1607;&#1605;&#1575;&#1606; &#1589;&#1608;&#1585;&#1578; &#1603;&#1607; &#1607;&#1587;&#1578;&#1606;&#1583; &#1584;&#1582;&#1610;&#1585;&#1607; &#1605;&#1610;&#8204;&#1603;&#1606;&#1583;. &#1711;&#1608;&#1606;&#1607; </span>BYTEA<span lang="fa"> 
-&#1576;&#1585;&#1575;&#1610; &#1584;&#1582;&#1610;&#1585;&#1607; &#1583;&#1575;&#1583;&#1607;&#8204;&#1607;&#1575;&#1610; &#1576;&#1575;&#1610;&#1606;&#1585;&#1610; &#1575;&#1587;&#1578; &#1576;&#1607; &#1582;&#1589;&#1608;&#1589; &#1583;&#1575;&#1583;&#1607;&#8204;&#1607;&#1575;&#1610; &#1576;&#1575;&#1610;&#1606;&#1585;&#1610; &#1603;&#1607; &#1588;&#1575;&#1605;&#1604; &#1576;&#1575;&#1610;&#1578;&#8204;&#1607;&#1575;&#1610; </span>
-NULL<span lang="fa"> &#1607;&#1587;&#1578;&#1606;&#1583;. &#1575;&#1586; &#1606;&#1592;&#1585; &#1603;&#1575;&#1585;&#1575;&#1610;&#1610; &#1578;&#1605;&#1575;&#1605; &#1575;&#1610;&#1606; &#1711;&#1608;&#1606;&#1607;&#8204;&#1607;&#1575; &#1610;&#1603;&#1587;&#1575;&#1606; &#1607;&#1587;&#1578;&#1606;&#1583;.</span></font></font></p>
+<font size="3">با كاراكترهاي بلانك (خالي) پر مي‌شود تا به طول مشخص شده برسد در 
+حاليكه گونه </font></span><font size="3">VARCHAR</font><font size="3"><span lang="fa"> 
+كاراكترها را به همان صورت كه هستند ذخيره مي‌كند. گونه </span>BYTEA<span lang="fa"> 
+براي ذخيره داده‌هاي باينري است به خصوص داده‌هاي باينتري كه شامل بايت‌هاي </span>
+NULL<span lang="fa"> هستند. از نظر كارايي تمام اين گونه‌ها يكسان هستند.</span></font></font></p>
 <H4 dir="rtl"><font face="Tahoma"><A name=4.15.1>4.15.1</A>) 
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1610;&#1603; &#1601;&#1610;&#1604;&#1583; &#1587;&#1585;&#1610;&#1575;&#1604; &#1610;&#1575; &#1575;&#1601;&#1586;&#1575;&#1610;&#1588;&#1610; &#1575;&#1610;&#1580;&#1575;&#1583; &#1603;&#1606;&#1605;&#1567;</span></font></H4>
-<p dir="rtl"><font face="Tahoma">PostgreSQL<span lang="fa"> &#1575;&#1586; &#1583;&#1575;&#1583;&#1607;&#8204;&#1607;&#1575;&#1610; &#1587;&#1585;&#1610;&#1575;&#1604; 
-&#1662;&#1588;&#1578;&#1610;&#1576;&#1575;&#1606;&#1610; &#1605;&#1610;&#8204;&#1603;&#1606;&#1583;. &#1576;&#1585;&#1575;&#1610; &#1575;&#1610;&#1580;&#1575;&#1583; &#1610;&#1603; &#1601;&#1610;&#1604;&#1583; &#1587;&#1585;&#1610;&#1575;&#1604; (&#1576;&#1585;&#1575;&#1610; &#1583;&#1575;&#1588;&#1578;&#1606; &#1610;&#1603; &#1601;&#1610;&#1604;&#1583; &#1605;&#1606;&#1581;&#1589;&#1585; &#1576;&#1607; &#1601;&#1585;&#1583; &#1576;&#1585;&#1575;&#1610; 
-&#1607;&#1585; &#1585;&#1583;&#1610;&#1601; )&#1576;&#1607; &#1585;&#1608;&#1588; &#1586;&#1610;&#1585; &#1593;&#1605;&#1604; &#1603;&#1606;&#1610;&#1583;:</span></font></p>
+<span lang="fa">چگونه مي‌توانم يك فيلد سريال يا افزايشي ايجاد كنم؟</span></font></H4>
+<p dir="rtl"><font face="Tahoma">PostgreSQL<span lang="fa"> از داده‌هاي سريال 
+پشتيباني مي‌كند. براي ايجاد يك فيلد سريال (براي داشتن يك فيلد منحصر به فرد براي 
+هر رديف )به روش زير عمل كنيد:</span></font></p>
 <PRE><font face="Tahoma">    CREATE TABLE person ( 
         id   SERIAL, 
         name TEXT 
     );
 </font></PRE>
-<p dir="rtl"><span lang="fa"><font face="Tahoma">&#1583;&#1587;&#1578;&#1608;&#1585; &#1576;&#1575;&#1604;&#1575; &#1576;&#1607; &#1591;&#1608;&#1585; &#1575;&#1578;&#1608;&#1605;&#1575;&#1578;&#1610;&#1705; &#1576;&#1607; 
-&#1583;&#1587;&#1578;&#1608;&#1585; &#1586;&#1610;&#1585; &#1578;&#1576;&#1583;&#1610;&#1604; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583;:</font></span></p>
+<p dir="rtl"><span lang="fa"><font face="Tahoma">دستور بالا به طور اتوماتيک به 
+دستور زير تبديل مي‌شود:</font></span></p>
 <PRE><font face="Tahoma">    CREATE SEQUENCE person_id_seq;
     CREATE TABLE person ( 
-        id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),
+        id   INT4 NOT NULL DEFAULT nextval(&#39;person_id_seq&#39;),
         name TEXT 
     );
 </font></PRE>
-<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1576;&#1585;&#1575;&#1610; &#1583;&#1610;&#1583;&#1606; &#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578; &#1576;&#1610;&#1588;&#1578;&#1585; &#1576;&#1607; 
-&#1585;&#1575;&#1607;&#1606;&#1605;&#1575;&#1610; &#1583;&#1587;&#1578;&#1608;&#1585; </span> <I>create_sequence</I> <span lang="fa">&nbsp;&#1605;&#1585;&#1575;&#1580;&#1593;&#1607; &#1603;&#1606;&#1610;&#1583;. 
-&#1607;&#1605;&#1670;&#1606;&#1610;&#1606; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606; &#1575;&#1586; </span>OID<span lang="fa">&#8204;&#1607;&#1585; &#1585;&#1583;&#1610;&#1601; &#1576;&#1607; &#1593;&#1606;&#1608;&#1575;&#1606; &#1610;&#1603; &#1605;&#1602;&#1583;&#1575;&#1585; &#1605;&#1606;&#1581;&#1589;&#1585; &#1576;&#1607; 
-&#1601;&#1585;&#1583; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1603;&#1585;&#1583;. &#1575;&#1605;&#1575; &#1583;&#1585; &#1575;&#1610;&#1606; &#1581;&#1575;&#1604;&#1578; &#1576;&#1585;&#1575;&#1610; </span>dump<span lang="fa"> &#1603;&#1585;&#1583;&#1606; &#1608; </span>
-reload<span lang="fa">&#8204;&#1603;&#1585;&#1583;&#1606; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1576;&#1575;&#1610;&#1583; &#1583;&#1587;&#1578;&#1608;&#1585; </span><i>pg_dumps</i><span lang="fa"><i>&#8204;</i> 
-&#1585;&#1575; &#1576;&#1575; &#1711;&#1586;&#1610;&#1606;&#1607; </span>o-<span lang="fa">&#8204; &#1575;&#1580;&#1585;&#1575; &#1603;&#1606;&#1610;&#1583;.</span></font></p>
-<H4 dir="rtl"><font face="Tahoma"><A name=4.15.2>4.15.2</A>) <span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1605;&#1602;&#1583;&#1575;&#1585; &#1610;&#1603; &#1583;&#1585;&#1580; &#1587;&#1585;&#1610;&#1575;&#1604;&#1610; &#1585;&#1575; &#1576;&#1583;&#1575;&#1606;&#1605;&#1567;</span></font></H4>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1610;&#1603; &#1585;&#1608;&#1588; &#1576;&#1585;&#1575;&#1610; &#1711;&#1585;&#1601;&#1578;&#1606; &#1605;&#1602;&#1583;&#1575;&#1585; &#1576;&#1593;&#1583;&#1610; &#1610;&#1603; 
-&#1601;&#1610;&#1604;&#1583; &#1587;&#1585;&#1610;&#1575;&#1604; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1578;&#1575;&#1576;&#1593; </span><i>()nextval</i><span lang="fa"> &#1575;&#1587;&#1578;.</span>
-<span lang="fa">&#1583;&#1585; &#1588;&#1576;&#1607; &#1603;&#1615;&#1583;&#1610; &#1603;&#1607; &#1583;&#1585; &#1575;&#1583;&#1575;&#1605;&#1607; &#1570;&#1605;&#1583;&#1607; &#1575;&#1587;&#1578; &#1585;&#1608;&#1588; &#1575;&#1606;&#1580;&#1575;&#1605; &#1575;&#1610;&#1606; &#1603;&#1575;&#1585; &#1606;&#1588;&#1575;&#1606; &#1583;&#1575;&#1583;&#1607; &#1588;&#1583;&#1607; 
-&#1575;&#1587;&#1578;:</span></font></P>
-<PRE><font face="Tahoma">    new_id = execute("SELECT nextval('person_id_seq')");
-    execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
+<p dir="rtl"><font face="Tahoma"><span lang="fa">براي ديدن اطلاعات بيشتر به 
+راهنماي دستور </span> <I>create_sequence</I> <span lang="fa">&nbsp;مراجعه كنيد. 
+همچنين مي‌توان از </span>OID<span lang="fa">‌هر رديف به عنوان يك مقدار منحصر به 
+فرد استفاده كرد. اما در اين حالت براي </span>dump<span lang="fa"> كردن و </span>
+reload<span lang="fa">‌كردن پايگاه داده بايد دستور </span><i>pg_dumps</i><span lang="fa"><i>‌</i> 
+را با گزينه </span>o-<span lang="fa">‌ اجرا كنيد.</span></font></p>
+<H4 dir="rtl"><font face="Tahoma"><A name=4.15.2>4.15.2</A>) <span lang="fa">
+چگونه مي‌توانم مقدار يك درج سريالي را بدانم؟</span></font></H4>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">يك روش براي گرفتن مقدار بعدي يك 
+فيلد سريال استفاده از تابع </span><i>()nextval</i><span lang="fa"> است.</span>
+<span lang="fa">در شبه كُدي كه در ادامه آمده است روش انجام اين كار نشان داده شده 
+است:</span></font></P>
+<PRE><font face="Tahoma">    new_id = execute(&quot;SELECT nextval(&#39;person_id_seq&#39;)&quot;);
+    execute(&quot;INSERT INTO person (id, name) VALUES (new_id, &#39;Blaise Pascal&#39;)&quot;);
 </font></PRE>
-<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1576;&#1575; &#1575;&#1580;&#1585;&#1575;&#1610; &#1583;&#1587;&#1578;&#1608;&#1585; &#1601;&#1608;&#1602; &#1605;&#1602;&#1583;&#1575;&#1585; &#1580;&#1583;&#1610;&#1583; &#1585;&#1575; 
-&#1583;&#1585; &#1605;&#1578;&#1594;&#1610;&#1585; </span>new_id<span lang="fa"> &#1606;&#1610;&#1586; &#1582;&#1608;&#1575;&#1607;&#1610;&#1583;&#1583;&#1575;&#1588;&#1578; &#1603;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1610;&#1583; &#1570;&#1606; &#1585;&#1575; &#1583;&#1585; &#1576;&#1602;&#1610;&#1607; 
-&#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578;&#8204;&#1607;&#1575; &#1606;&#1610;&#1586; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1603;&#1606;&#1610;&#1583;. &#1578;&#1608;&#1580;&#1607; &#1583;&#1575;&#1588;&#1578;&#1607; &#1576;&#1575;&#1588;&#1610;&#1583; &#1603;&#1607; &#1606;&#1575;&#1605; </span>SEQUENCE<span lang="fa">&#1610;&#1610; 
-&#1603;&#1607; &#1576;&#1607; &#1591;&#1608;&#1585; &#1575;&#1578;&#1608;&#1605;&#1575;&#1578;&#1610;&#1603; &#1575;&#1610;&#1580;&#1575;&#1583; &#1588;&#1583;&#1607; &#1575;&#1587;&#1578; &#1576;&#1607; &#1589;&#1608;&#1585;&#1578; </span><i>table</i>_<I>serialcolumn</I>_<I>seq<span lang="fa">&#8204;
-</span></I><span lang="fa">&#1582;&#1608;&#1575;&#1607;&#1583; &#1576;&#1608;&#1583;</span>. <span lang="fa">&#1603;&#1607; &#1583;&#1585; &#1570;&#1606; </span>
-table<span lang="fa">&#8204; &#1606;&#1575;&#1605; &#1580;&#1583;&#1608;&#1604; &#1608; </span>serialcolumn<span lang="fa"> &#1606;&#1575;&#1605; &#1601;&#1610;&#1604;&#1583; 
-&#1587;&#1585;&#1610;&#1575;&#1604; &#1580;&#1583;&#1608;&#1604; &#1605;&#1610;&#8204;&#1576;&#1575;&#1588;&#1583;.</span></font></p>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1576;&#1585;&#1575;&#1610; &#1583;&#1610;&#1583;&#1606; &#1605;&#1602;&#1583;&#1575;&#1585; &#1606;&#1587;&#1576;&#1578; &#1583;&#1575;&#1583;&#1607; &#1588;&#1583;&#1607; 
-&#1576;&#1607; &#1601;&#1610;&#1604;&#1583; &#1587;&#1585;&#1610;&#1575;&#1604; &#1606;&#1610;&#1586; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606; &#1575;&#1586; &#1578;&#1575;&#1576;&#1593; <i>()</i></span> <I>currval </I>
-<span lang="fa">&#1576;&#1607; &#1589;&#1608;&#1585;&#1578; &#1586;&#1610;&#1585; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1603;&#1585;&#1583;. </span></font></P>
-<PRE><font face="Tahoma">    execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
-    new_id = execute("SELECT currval('person_id_seq')");
+<p dir="rtl"><font face="Tahoma"><span lang="fa">با اجرا دستور فوق مقدار جديد را 
+در متغير </span>new_id<span lang="fa"> نيز خواهيدداشت كه مي‌توانيد آن را در بقيه 
+درخواست‌هاي نيز استفاده كنيد. توجه داشته باشيد كه نام </span>SEQUENCE<span lang="fa">يي 
+كه به طور اتوماتيك ايجاد شده است به صورت </span><i>table</i>_<I>serialcolumn</I>_<I>seq<span lang="fa">‌
+</span></I><span lang="fa">خواهد بود</span>. <span lang="fa">كه در آن </span>
+table<span lang="fa">‌ نام جدول و </span>serialcolumn<span lang="fa"> نام فيلد 
+سريال جدول مي‌باشد.</span></font></p>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">براي ديدن مقدار نسبت داده شده 
+به فيلد سريال نيز مي‌توان از تابع <i>()</i></span> <I>currval </I>
+<span lang="fa">به صورت زير استفاده كرد. </span></font></P>
+<PRE><font face="Tahoma">    execute(&quot;INSERT INTO person (name) VALUES (&#39;Blaise Pascal&#39;)&quot;);
+    new_id = execute(&quot;SELECT currval(&#39;person_id_seq&#39;)&quot;);
 </font></PRE>
-<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1608; &#1587;&#1585;&#1575;&#1606;&#1580;&#1575;&#1605; &#1588;&#1605;&#1575; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1610;&#1583; &#1575;&#1586; 
-&#1605;&#1602;&#1583;&#1575;&#1585; </span>OID<span lang="fa"> &#1603;&#1607; &#1582;&#1585;&#1608;&#1580;&#1610; &#1583;&#1587;&#1578;&#1608;&#1585; </span>INSERT <span lang="fa">&nbsp;&#1575;&#1587;&#1578; 
-&#1576;&#1585;&#1575;&#1610; &#1583;&#1610;&#1583;&#1606; &#1605;&#1602;&#1583;&#1575;&#1585; &#1662;&#1610;&#1588; &#1601;&#1585;&#1590; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1603;&#1606;&#1610;&#1583;. &#1607;&#1585; &#1670;&#1606;&#1583; &#1575;&#1610;&#1606; &#1585;&#1608;&#1588; &#1583;&#1585; &#1607;&#1605;&#1607; &#1662;&#1604;&#1578;&#1601;&#1585;&#1605;&#1607;&#1575; &#1602;&#1575;&#1576;&#1604; 
-&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1606;&#1610;&#1587;&#1578; &#1608; &#1590;&#1605;&#1606; &#1575;&#1610;&#1606;&#1603;&#1607; &#1601;&#1610;&#1604;&#1583; </span>oid<span lang="fa">&#8204; &#1576;&#1593;&#1583; &#1575;&#1586; &#1593;&#1583;&#1583; 4 &#1605;&#1610;&#1604;&#1610;&#1575;&#1585;&#1583; 
-&#1583;&#1608;&#1576;&#1575;&#1585;&#1607; &#1589;&#1601;&#1585; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583;. &#1583;&#1585; &#1586;&#1576;&#1575;&#1606; </span>perl<span lang="fa"> &#1576;&#1575; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; </span>DBI<span lang="fa"> 
-&#1608; </span>DBD::Pg<span lang="fa"> &#1605;&#1602;&#1583;&#1575;&#1585; </span>oid<span lang="fa">&#8204;&#1585;&#1575; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1610;&#1583; 
-&#1576;&#1607; &#1575;&#1610;&#1606; &#1588;&#1603;&#1604; &#1575;&#1587;&#1578;&#1582;&#1585;&#1575;&#1580; &#1603;&#1606;&#1610;&#1583;:</span> <span lang="fa">&#1576;&#1593;&#1583; &#1575;&#1586; &#1575;&#1580;&#1585;&#1575;&#1610; ()</span>st-&gt;execute<span lang="fa">$ 
-&#1605;&#1602;&#1583;&#1575;&#1585; </span>oid<span lang="fa">&#8204; &#1583;&#1585; &#1605;&#1578;&#1594;&#1610;&#1585; </span>&nbsp;<I>sth-&gt;pg_oid_status<span lang="fa">$</span></I><span lang="fa"> 
-&#1584;&#1582;&#1610;&#1585;&#1607; &#1582;&#1608;&#1575;&#1607;&#1583; &#1588;&#1583;.</span></font></p>
-<H4 dir="rtl"><font face="Tahoma"><A name=4.15.3>4.15.3</A>) <span lang="fa">&#1570;&#1740;&#1575; 
-&#1578;&#1608;&#1575;&#1576;&#1593; ()</span>nextval<span lang="fa"> &#1608; ()</span>currval<span lang="fa"> &#1605;&#1606;&#1580;&#1585; 
-&#1576;&#1607; &#1575;&#1740;&#1580;&#1575;&#1583; &#1588;&#1585;&#1575;&#1740;&#1591; </span>race<span lang="fa"> &#1576;&#1585;&#1575;&#1740; &#1587;&#1575;&#1740;&#1585; &#1705;&#1575;&#1585;&#1576;&#1585;&#1575;&#1606; &#1605;&#1740; &#1588;&#1608;&#1606;&#1583;&#1567;</span></font></H4>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1582;&#1740;&#1585;&#1548; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1575;&#1740;&#1606; &#1578;&#1608;&#1575;&#1576;&#1593; &#1588;&#1585;&#1575;&#1740;&#1591;
-</span>race<span lang="fa"> &#1585;&#1575; &#1576;&#1607; &#1608;&#1580;&#1608;&#1583; &#1606;&#1605;&#1740; &#1570;&#1608;&#1585;&#1583;.</span></font></P>
+<p dir="rtl"><font face="Tahoma"><span lang="fa">و سرانجام شما مي‌توانيد از 
+مقدار </span>OID<span lang="fa"> كه خروجي دستور </span>INSERT <span lang="fa">
+&nbsp;است براي ديدن مقدار پيش فرض استفاده كنيد. هر چند اين روش در همه پلتفرمها قابل 
+استفاده نيست و ضمن اينكه فيلد </span>oid<span lang="fa">‌ بعد از عدد 4 ميليارد 
+دوباره صفر مي‌شود. در زبان </span>perl<span lang="fa"> با استفاده از </span>DBI<span lang="fa"> 
+و </span>DBD::Pg<span lang="fa"> مقدار </span>oid<span lang="fa">‌را مي‌توانيد 
+به شكل زير استخراج كنيد:</span> <span lang="fa">بعد از اجراي ()</span>st-&gt;execute<span lang="fa">$ 
+مقدار </span>oid<span lang="fa">‌ در متغير </span>&nbsp;<I>sth-&gt;pg_oid_status<span lang="fa">$</span></I><span lang="fa"> 
+ذخيره خواهد شد.</span></font></p>
+<H4 dir="rtl"><font face="Tahoma"><A name=4.15.3>4.15.3</A>) <span lang="fa">آیا 
+توابع ()</span>nextval<span lang="fa"> و ()</span>currval<span lang="fa"> منجر 
+به ایجاد شرایط </span>race<span lang="fa"> برای سایر کاربران می شوند؟</span></font></H4>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">خیر، استفاده از این توابع شرایط
+</span>race<span lang="fa"> را به وجود نمی آورد.</span></font></P>
 <H4 dir="rtl"><font face="Tahoma"><A name=4.15.4>4.15.4</A>)</font><font face="Tahoma"><span lang="fa"> 
-&#1670;&#1585;&#1575; &#1575;&#1593;&#1583;&#1575;&#1583; &#1587;&#1585;&#1740;&#1575;&#1604;&#1740; &#1605;&#1585;&#1576;&#1608;&#1591; &#1576;&#1607; &#1578;&#1585;&#1575;&#1705;&#1606;&#1588;&#1607;&#1575;&#1740; </span>abort<span lang="fa"> &#1588;&#1583;&#1607; &#1605;&#1580;&#1583;&#1583;&#1575;&#1611; 
-&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1606;&#1605;&#1740; &#1588;&#1608;&#1583;&#1567; &#1670;&#1585;&#1575; &#1576;&#1740;&#1606; &#1575;&#1593;&#1583;&#1575;&#1583; &#1587;&#1585;&#1740;&#1575;&#1604;&#1740; &#1740;&#1705; &#1601;&#1575;&#1589;&#1604;&#1607; &#1582;&#1575;&#1604;&#1740; &#1575;&#1740;&#1580;&#1575;&#1583; &#1605;&#1740; &#1588;&#1608;&#1583;&#1567;</span></font></H4>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1576;&#1585;&#1575;&#1740; &#1576;&#1575;&#1604;&#1575; &#1576;&#1585;&#1583;&#1606; &#1575;&#1605;&#1705;&#1575;&#1606; &#1575;&#1580;&#1585;&#1575;&#1740; 
-&#1607;&#1605;&#1586;&#1605;&#1575;&#1606; &#1578;&#1585;&#1575;&#1705;&#1606;&#1588;&#1607;&#1575;&#1548; &#1575;&#1593;&#1583;&#1575;&#1583; &#1587;&#1585;&#1740;&#1575;&#1604;&#1740; &#1576;&#1607; &#1605;&#1581;&#1590; &#1575;&#1580;&#1585;&#1575;&#1740; &#1578;&#1585;&#1575;&#1705;&#1606;&#1588; &#1576;&#1607; &#1570;&#1606;&#1607;&#1575; &#1578;&#1582;&#1589;&#1740;&#1589; &#1605;&#1740; &#1740;&#1575;&#1576;&#1583; &#1583;&#1585; &#1575;&#1740;&#1606; 
-&#1581;&#1575;&#1604;&#1578; &#1575;&#1711;&#1585; &#1576;&#1593;&#1590;&#1740; &#1575;&#1586; &#1578;&#1585;&#1575;&#1705;&#1606;&#1588;&#1607;&#1575; </span>abort<span lang="fa"> &#1588;&#1608;&#1606;&#1583; &#1576;&#1740;&#1606; &#1575;&#1593;&#1583;&#1575;&#1583; &#1587;&#1585;&#1740;&#1575;&#1604;&#1740; 
-&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1588;&#1583;&#1607; &#1740;&#1705; &#1601;&#1575;&#1589;&#1604;&#1607; &#1582;&#1575;&#1604;&#1740; &#1576;&#1607; &#1608;&#1580;&#1608;&#1583; &#1605;&#1740; &#1570;&#1740;&#1583;.</span></font></P>
-<H4 dir="rtl"><font face="Tahoma"><A name=4.16>4.16</A>) OID<span lang="fa"> &#1608; </span>TID<span lang="fa"> &#1670;&#1607; &#1607;&#1587;&#1578;&#1606;&#1583;&#1567;</span></font></H4>
-<P dir="rtl"><font face="Tahoma">OID<span lang="fa"> &#1585;&#1575;&#1607; &#1581;&#1604; </span>PostgreSQL<span lang="fa"> 
-&#1576;&#1585;&#1575;&#1740; &#1583;&#1575;&#1588;&#1578;&#1606; &#1740;&#1705; &#1588;&#1606;&#1575;&#1587;&#1607; &#1605;&#1606;&#1581;&#1589;&#1585; &#1576;&#1607; &#1601;&#1585;&#1583; &#1576;&#1585;&#1575;&#1740; &#1607;&#1585; &#1585;&#1583;&#1740;&#1601; &#1575;&#1587;&#1578;. &#1607;&#1585; &#1585;&#1583;&#1740;&#1601; &#1580;&#1583;&#1740;&#1583;&#1740; &#1705;&#1607; &#1575;&#1740;&#1580;&#1575;&#1583; &#1605;&#1740; &#1588;&#1608;&#1583; 
-&#1740;&#1705; </span>OID<span lang="fa"> &#1605;&#1606;&#1581;&#1589;&#1585; &#1576;&#1607; &#1601;&#1585;&#1583; &#1576;&#1607; &#1570;&#1606; &#1575;&#1582;&#1578;&#1589;&#1575;&#1589; &#1605;&#1740; &#1740;&#1575;&#1576;&#1583;. &#1578;&#1605;&#1575;&#1605; </span>OID<span lang="fa">&#1607;&#1575;&#1740;&#1740; 
-&#1705;&#1607; &#1583;&#1585; &#1581;&#1740;&#1606; </span>initdb<span lang="fa"> &#1575;&#1740;&#1580;&#1575;&#1583; &#1605;&#1740; &#1588;&#1608;&#1606;&#1583; &#1575;&#1586; 16384 &#1705;&#1605;&#1578;&#1585; &#1607;&#1587;&#1578;&#1606;&#1583; &#1608;
-</span>OID<span lang="fa">&#1607;&#1575;&#1740;&#1740; &#1576;&#1593;&#1583;&#1575;&#1611; &#1578;&#1608;&#1604;&#1740;&#1583; &#1605;&#1740; &#1588;&#1608;&#1583; &#1575;&#1586; &#1575;&#1740;&#1606; &#1593;&#1583;&#1583; &#1576;&#1586;&#1585;&#1711;&#1578;&#1585; &#1582;&#1608;&#1575;&#1607;&#1583; &#1576;&#1608;&#1583;. 
-&#1606;&#1705;&#1578;&#1607; &#1605;&#1607;&#1605; &#1570;&#1606; &#1575;&#1587;&#1578; &#1705;&#1607; </span>OID<span lang="fa">&#1607;&#1575; &#1606;&#1607; &#1578;&#1606;&#1607;&#1575; &#1583;&#1585; &#1740;&#1705; &#1580;&#1583;&#1608;&#1604; &#1588;&#1576;&#1740;&#1607; &#1606;&#1740;&#1587;&#1578;&#1606;&#1583; 
-&#1576;&#1604;&#1705;&#1607; &#1583;&#1585; &#1705;&#1604; &#1662;&#1575;&#1740;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1607;&#1740;&#1670; &#1583;&#1608; &#1585;&#1583;&#1740;&#1601;&#1740; &#1583;&#1575;&#1585;&#1575;&#1740; </span>OID<span lang="fa"> &#1740;&#1705;&#1587;&#1575;&#1606; 
-&#1606;&#1582;&#1608;&#1575;&#1607;&#1583; &#1576;&#1608;&#1583;.</span></font></P>
-<P dir="rtl"><font face="Tahoma">PostgreSQL<span lang="fa"> &#1575;&#1586; </span>OID<span lang="fa"> 
-&#1583;&#1585; &#1587;&#1740;&#1587;&#1578;&#1605; &#1583;&#1575;&#1582;&#1604;&#1740; &#1582;&#1608;&#1583; &#1576;&#1585;&#1575;&#1740; &#1575;&#1740;&#1580;&#1575;&#1583; &#1575;&#1585;&#1578;&#1576;&#1575;&#1591; &#1576;&#1740;&#1606; &#1585;&#1583;&#1740;&#1601;&#1607;&#1575;&#1740; &#1580;&#1583;&#1575;&#1608;&#1604; &#1605;&#1582;&#1578;&#1604;&#1601; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1605;&#1740; &#1705;&#1606;&#1583;. 
-&#1578;&#1608;&#1589;&#1740;&#1607; &#1605;&#1740; &#1588;&#1608;&#1583; &#1705;&#1607; &#1740;&#1705; &#1587;&#1578;&#1608;&#1606; &#1575;&#1586; &#1606;&#1608;&#1593; </span>OID<span lang="fa"> &#1576;&#1585;&#1575;&#1740; &#1584;&#1582;&#1740;&#1585;&#1607; &#1575;&#1740;&#1606; &#1601;&#1740;&#1604;&#1583; &#1583;&#1585; 
-&#1580;&#1583;&#1608;&#1604; &#1575;&#1740;&#1580;&#1575;&#1583; &#1705;&#1606;&#1740;&#1583;. &#1587;&#1575;&#1582;&#1578;&#1606; &#1740;&#1705; &#1606;&#1605;&#1575;&#1740;&#1607; &#1576;&#1585;&#1575;&#1740; &#1575;&#1740;&#1606; &#1601;&#1740;&#1604;&#1583; &#1576;&#1575;&#1593;&#1579; &#1583;&#1587;&#1578;&#1585;&#1587;&#1740; &#1587;&#1585;&#1740;&#1593;&#1578;&#1585; &#1576;&#1607; &#1570;&#1606; &#1582;&#1608;&#1575;&#1607;&#1583; &#1588;&#1583;.</span></font></P>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1578;&#1605;&#1575;&#1605; &#1662;&#1575;&#1740;&#1711;&#1575;&#1607;&#1607;&#1575;&#1740; &#1583;&#1575;&#1583;&#1607; &#1583;&#1585; </span>
-PostgreSQL<span lang="fa"> &#1576;&#1585;&#1575;&#1740; &#1711;&#1585;&#1601;&#1578;&#1606; </span>OID<span lang="fa"> &#1580;&#1583;&#1740;&#1583; &#1575;&#1586; &#1740;&#1705; 
-&#1606;&#1575;&#1581;&#1740;&#1607; &#1605;&#1585;&#1705;&#1586;&#1740; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1605;&#1740; &#1705;&#1606;&#1583;. &#1608;&#1604;&#1740; &#1575;&#1711;&#1585; &#1576;&#1582;&#1608;&#1575;&#1607;&#1740;&#1605; </span>OID<span lang="fa"> &#1585;&#1575; &#1576;&#1607; &#1585;&#1608;&#1588; 
-&#1583;&#1740;&#1711;&#1585;&#1740; &#1576;&#1711;&#1740;&#1585;&#1740;&#1605; &#1608; &#1740;&#1575; &#1575;&#1740;&#1606;&#1705;&#1607; &#1583;&#1585; &#1581;&#1740;&#1606; &#1705;&#1662;&#1740; &#1705;&#1585;&#1583;&#1606; &#1740;&#1705; &#1580;&#1583;&#1608;&#1604; &#1576;&#1582;&#1608;&#1575;&#1607;&#1740;&#1605; </span>OID<span lang="fa">&#1607;&#1575;&#1740; 
-&#1575;&#1589;&#1604;&#1740; &#1570;&#1606; &#1578;&#1594;&#1740;&#1740;&#1585; &#1606;&#1705;&#1606;&#1583; &#1576;&#1607; &#1585;&#1608;&#1588; &#1586;&#1740;&#1585; &#1605;&#1740; &#1578;&#1608;&#1575;&#1606;&#1740;&#1605; &#1593;&#1605;&#1604; &#1705;&#1606;&#1740;&#1605;:</span></font></P>
+چرا اعداد سریالی مربوط به تراکنشهای </span>abort<span lang="fa"> شده مجدداً 
+استفاده نمی شود؟ چرا بین اعداد سریالی یک فاصله خالی ایجاد می شود؟</span></font></H4>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">برای بالا بردن امکان اجرای 
+همزمان تراکنشها، اعداد سریالی به محض اجرای تراکنش به آنها تخصیص می یابد در این 
+حالت اگر بعضی از تراکنشها </span>abort<span lang="fa"> شوند بین اعداد سریالی 
+استفاده شده یک فاصله خالی به وجود می آید.</span></font></P>
+<H4 dir="rtl"><font face="Tahoma"><A name=4.16>4.16</A>) OID<span lang="fa"> و </span>
+TID<span lang="fa"> چه هستند؟</span></font></H4>
+<P dir="rtl"><font face="Tahoma">OID<span lang="fa"> راه حل </span>PostgreSQL<span lang="fa"> 
+برای داشتن یک شناسه منحصر به فرد برای هر ردیف است. هر ردیف جدیدی که ایجاد می شود 
+یک </span>OID<span lang="fa"> منحصر به فرد به آن اختصاص می یابد. تمام </span>OID<span lang="fa">هایی 
+که در حین </span>initdb<span lang="fa"> ایجاد می شوند از 16384 کمتر هستند و
+</span>OID<span lang="fa">هایی بعداً تولید می شود از این عدد بزرگتر خواهد بود. 
+نکته مهم آن است که </span>OID<span lang="fa">ها نه تنها در یک جدول شبیه نیستند 
+بلکه در کل پایگاه داده هیچ دو ردیفی دارای </span>OID<span lang="fa"> یکسان 
+نخواهد بود.</span></font></P>
+<P dir="rtl"><font face="Tahoma">PostgreSQL<span lang="fa"> از </span>OID<span lang="fa"> 
+در سیستم داخلی خود برای ایجاد ارتباط بین ردیفهای جداول مختلف استفاده می کند. 
+توصیه می شود که یک ستون از نوع </span>OID<span lang="fa"> برای ذخیره این فیلد در 
+جدول ایجاد کنید. ساختن یک نمایه برای این فیلد باعث دسترسی سریعتر به آن خواهد شد.</span></font></P>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">تمام پایگاههای داده در </span>
+PostgreSQL<span lang="fa"> برای گرفتن </span>OID<span lang="fa"> جدید از یک 
+ناحیه مرکزی استفاده می کند. ولی اگر بخواهیم </span>OID<span lang="fa"> را به روش 
+دیگری بگیریم و یا اینکه در حین کپی کردن یک جدول بخواهیم </span>OID<span lang="fa">های 
+اصلی آن تغییر نکند به روش زیر می توانیم عمل کنیم:</span></font></P>
 <P dir="rtl">&nbsp;</P>
 <div dir="ltr">
 	<PRE><font face="Tahoma">        CREATE TABLE new_table(mycol int);
         SELECT oid AS old_oid, mycol INTO tmp_table FROM old_table;
-        COPY tmp_table TO '/tmp/pgtable';
-        COPY new_table WITH OIDS FROM '/tmp/pgtable';
+        COPY tmp_table TO &#39;/tmp/pgtable&#39;;
+        COPY new_table WITH OIDS FROM &#39;/tmp/pgtable&#39;;
         DROP TABLE tmp_table;
 </font></PRE>
 </div>
-<P dir="rtl"><font face="Tahoma">OID<span lang="fa"> &#1740;&#1705; &#1593;&#1583;&#1583; &#1589;&#1581;&#1740;&#1581; 4 &#1576;&#1575;&#1740;&#1578;&#1740; &#1575;&#1587;&#1578; &#1608; 
-&#1576;&#1606;&#1575;&#1576;&#1585;&#1575;&#1740;&#1606; &#1581;&#1583;&#1575;&#1705;&#1579;&#1585; &#1605;&#1602;&#1583;&#1575;&#1585; &#1570;&#1606; 4 &#1605;&#1740;&#1604;&#1740;&#1575;&#1585;&#1583; &#1582;&#1608;&#1575;&#1607;&#1583; &#1576;&#1608;&#1583; &#1608; &#1576;&#1593;&#1583; &#1575;&#1586; &#1570;&#1606; &#1605;&#1602;&#1583;&#1575;&#1585; &#1570;&#1606; &#1587;&#1585;&#1585;&#1740;&#1586; &#1582;&#1608;&#1575;&#1607;&#1583; 
-&#1588;&#1583;.&nbsp; &#1575;&#1604;&#1576;&#1578;&#1607; &#1578;&#1575; &#1705;&#1606;&#1608;&#1606; &#1576;&#1585;&#1575;&#1740;&nbsp; &#1705;&#1587;&#1740;&nbsp; &#1575;&#1740;&#1606; &#1575;&#1578;&#1601;&#1575;&#1602; &#1606;&#1740;&#1601;&#1578;&#1575;&#1583;&#1607; &#1575;&#1587;&#1578; &#1608; &#1578;&#1589;&#1605;&#1740;&#1605; 
-&#1711;&#1585;&#1583;&#1575;&#1606;&#1583;&#1711;&#1575;&#1606; </span>PostgreSQL<span lang="fa"> &#1570;&#1606; &#1575;&#1587;&#1578; &#1705;&#1607; &#1602;&#1576;&#1604; &#1575;&#1586; &#1570;&#1606;&#1705;&#1607; &#1575;&#1740;&#1606; &#1575;&#1578;&#1601;&#1575;&#1602; &#1585;&#1582; 
-&#1583;&#1607;&#1583; &#1575;&#1740;&#1606; &#1605;&#1588;&#1705;&#1604; &#1585;&#1575; &#1576;&#1585;&#1591;&#1585;&#1601; &#1705;&#1606;&#1606;&#1583;.</span></font></P>
-<P dir="rtl"><font face="Tahoma">TID<span lang="fa">&#1607;&#1575; &#1576;&#1585;&#1575;&#1740; &#1588;&#1606;&#1575;&#1587;&#1575;&#1740;&#1740; &#1605;&#1581;&#1604; &#1601;&#1740;&#1586;&#1740;&#1705;&#1740; 
-&#1740;&#1705; &#1585;&#1583;&#1740;&#1601; &#1576;&#1585; &#1575;&#1587;&#1575;&#1587; &#1576;&#1604;&#1608;&#1705; &#1608; &#1570;&#1601;&#1587;&#1578; &#1605;&#1740; &#1576;&#1575;&#1588;&#1583;. </span>TID<span lang="fa">&#1607;&#1575; &#1576;&#1593;&#1583; &#1575;&#1586; &#1578;&#1594;&#1740;&#1740;&#1585; 
-&#1662;&#1740;&#1583;&#1575; &#1705;&#1585;&#1583;&#1606; &#1740;&#1705;&nbsp; &#1585;&#1583;&#1740;&#1601; &#1608; &#1740;&#1575;&nbsp; &#1576;&#1575;&#1586;&#1582;&#1608;&#1575;&#1606;&#1740;&nbsp; &#1570;&#1606;&nbsp; &#1593;&#1608;&#1590;&nbsp; &#1605;&#1740; &#1588;&#1608;&#1606;&#1583;. </span>TID<span lang="fa">&#1607;&#1575; 
-&#1578;&#1608;&#1587;&#1591; &#1606;&#1605;&#1575;&#1740;&#1607; &#1607;&#1575; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1605;&#1740; &#1588;&#1608;&#1606;&#1583;.</span></font></P>
+<P dir="rtl"><font face="Tahoma">OID<span lang="fa"> یک عدد صحیح 4 بایتی است و 
+بنابراین حداکثر مقدار آن 4 میلیارد خواهد بود و بعد از آن مقدار آن سرریز خواهد 
+شد.&nbsp; البته تا کنون برای&nbsp; کسی&nbsp; این اتفاق نیفتاده است و تصمیم 
+گرداندگان </span>PostgreSQL<span lang="fa"> آن است که قبل از آنکه این اتفاق رخ 
+دهد این مشکل را برطرف کنند.</span></font></P>
+<P dir="rtl"><font face="Tahoma">TID<span lang="fa">ها برای شناسایی محل فیزیکی 
+یک ردیف بر اساس بلوک و آفست می باشد. </span>TID<span lang="fa">ها بعد از تغییر 
+پیدا کردن یک ردیف و یا بازخوانی آن عوض می شوند. </span>TID<span lang="fa">ها 
+توسط نمایه ها استفاده می شوند.</span></font></P>
 <H4 dir="rtl"><font face="Tahoma"><A name=4.17>4.17</A>) 
-<span lang="fa">&#1605;&#1593;&#1606;&#1610; &#1576;&#1593;&#1590;&#1610; &#1575;&#1586; &#1578;&#1585;&#1605;&#1607;&#1575; &#1608; &#1603;&#1604;&#1605;&#1575;&#1578;&#1610; &#1603;&#1607; &#1583;&#1585; </span>PostgreSQL<span lang="fa">&#8204; 
-&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1605;&#1610;&#8204;&#1588;&#1608;&#1583; &#1670;&#1610;&#1587;&#1578;&#1567;</span></font></H4>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1604;&#1740;&#1587;&#1578; &#1576;&#1585;&#1582;&#1740; &#1575;&#1586; &#1578;&#1585;&#1605;&#1607;&#1575; &#1608; &#1705;&#1604;&#1605;&#1575;&#1578;&#1740; &#1705;&#1607; 
-&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1605;&#1740; &#1588;&#1608;&#1606;&#1583;:</span></font></P>
+<span lang="fa">معني بعضي از ترمها و كلماتي كه در </span>PostgreSQL<span lang="fa">‌ 
+استفاده مي‌شود چيست؟</span></font></H4>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">لیست برخی از ترمها و کلماتی که 
+استفاده می شوند:</span></font></P>
 <UL>
   <LI dir="ltr">
 	<p dir="ltr"><font face="Tahoma">table, relation, class <span lang="fa">
-    :&#1705;&#1604;&#1575;&#1587;&#1548; &#1585;&#1575;&#1576;&#1591;&#1607;&#1548; &#1580;&#1583;&#1608;&#1604;</span></font><LI dir="ltr">
-	<p dir="ltr"><font face="Tahoma">row, record, tuple <span lang="fa">&#1670;&#1606;&#1583;&#1578;&#1575;&#1740;&#1740;&#1548; 
-    &#1585;&#1705;&#1608;&#1585;&#1583;&#1548; &#1585;&#1583;&#1740;&#1601;</span></font><LI dir="ltr">
+    :کلاس، رابطه، جدول</span></font><LI dir="ltr">
+	<p dir="ltr"><font face="Tahoma">row, record, tuple <span lang="fa">چندتایی، 
+	رکورد، ردیف</span></font><LI dir="ltr">
 	<p dir="ltr"><font face="Tahoma">column, field, attribute <span lang="fa">
-    &#1589;&#1601;&#1578;&#1548; &#1601;&#1740;&#1604;&#1583;&#1548; &#1587;&#1578;&#1608;&#1606;</span></font><LI dir="ltr">
-	<p dir="ltr"><font face="Tahoma">retrieve, select <span lang="fa">&#1575;&#1606;&#1578;&#1582;&#1575;&#1576;&#1548; 
-    &#1582;&#1608;&#1575;&#1606;&#1583;&#1606;</span></font><LI dir="ltr">
-	<p dir="ltr"><font face="Tahoma">replace, update<span lang="fa">&#1576;&#1607; &#1585;&#1608;&#1586; &#1705;&#1585;&#1583;&#1606;&#1548; 
-    &#1580;&#1575;&#1740;&#1711;&#1586;&#1740;&#1606;&#1740;</span> 
+    صفت، فیلد، ستون</span></font><LI dir="ltr">
+	<p dir="ltr"><font face="Tahoma">retrieve, select <span lang="fa">انتخاب، 
+	خواندن</span></font><LI dir="ltr">
+	<p dir="ltr"><font face="Tahoma">replace, update<span lang="fa">به روز کردن، 
+	جایگزینی</span> 
   </font> 
   <LI dir="ltr">
-	<p dir="ltr"><font face="Tahoma">append, insert <span lang="fa">&#1583;&#1585;&#1580;&#1548; &#1575;&#1590;&#1575;&#1601;&#1607; 
-    &#1705;&#1585;&#1583;&#1606;</span></font><LI dir="ltr">
+	<p dir="ltr"><font face="Tahoma">append, insert <span lang="fa">درج، اضافه 
+	کردن</span></font><LI dir="ltr">
 	<p dir="ltr"><font face="Tahoma"><SMALL>OID</SMALL>, serial value
-    <span lang="fa">&#1605;&#1602;&#1583;&#1575;&#1585; &#1587;&#1585;&#1740;&#1575;&#1604;</span></font><LI dir="ltr">
+    <span lang="fa">مقدار سریال</span></font><LI dir="ltr">
 	<p dir="ltr"><font face="Tahoma">portal, cursor 
   </font> 
   <LI dir="ltr">
 	<p dir="ltr"><font face="Tahoma">range variable, table name, table alias 
 	</font> </LI></UL>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1740;&#1705; &#1604;&#1740;&#1587;&#1578; &#1593;&#1605;&#1608;&#1605;&#1740; &#1575;&#1586; &#1578;&#1585;&#1605;&#1607;&#1575;&#1740; &#1605;&#1608;&#1585;&#1583; 
-&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1583;&#1585; &#1662;&#1575;&#1740;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1583;&#1585; &#1570;&#1583;&#1585;&#1587;&nbsp; </span> <A 
+<P dir="rtl"><font face="Tahoma"><span lang="fa">یک لیست عمومی از ترمهای مورد 
+استفاده در پایگاه داده در آدرس&nbsp; </span> <A 
 href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html">
 http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.htm</A>
-<span lang="fa">&#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;.</span></font></P>
+<span lang="fa">وجود دارد.</span></font></P>
 <H4 dir="rtl"><font face="Tahoma"><A name=4.18>4.18</A>) <span lang="fa"> 
-&#1670;&#1585;&#1575; &#1605;&#1606; &#1582;&#1591;&#1575;&#1610; </span><i>&quot;ERROR: Memory exhausted in AllocSetAlloc&quot;</i><span lang="fa"> 
-&#1605;&#1610;&#8204;&#1711;&#1610;&#1585;&#1605;&#1567;</span></font></H4>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1575;&#1740;&#1606; &#1582;&#1591;&#1575; &#1575;&#1581;&#1578;&#1605;&#1575;&#1604;&#1575;&#1611; &#1740;&#1575; &#1576;&#1607; &#1582;&#1575;&#1591;&#1585; 
-&#1578;&#1605;&#1575;&#1605; &#1588;&#1583;&#1606; &#1581;&#1575;&#1601;&#1592;&#1607; &#1605;&#1580;&#1575;&#1586;&#1740; &#1587;&#1740;&#1587;&#1578;&#1605; &#1588;&#1605;&#1575;&#1587;&#1578; &#1608; &#1740;&#1575; &#1575;&#1740;&#1606;&#1705;&#1607; &#1705;&#1585;&#1606;&#1604; &#1576;&#1585;&#1575;&#1740; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; &#1607;&#1575; &#1583;&#1585; &#1605;&#1608;&#1585;&#1583; &#1605;&#1740;&#1586;&#1575;&#1606; 
-&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1581;&#1575;&#1601;&#1592;&#1607; &#1605;&#1580;&#1575;&#1586;&#1740; &#1605;&#1581;&#1583;&#1608;&#1583;&#1740;&#1578; &#1575;&#1593;&#1605;&#1575;&#1604; &#1705;&#1585;&#1583;&#1607; &#1575;&#1587;&#1578;. &#1602;&#1576;&#1604; &#1575;&#1586; &#1575;&#1580;&#1585;&#1575;&#1740; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; &#1575;&#1589;&#1604;&#1740; &#1740;&#1705;&#1740; &#1575;&#1586; 
-&#1583;&#1587;&#1578;&#1608;&#1585;&#1575;&#1578; &#1586;&#1740;&#1585; &#1585;&#1575; &#1575;&#1580;&#1585;&#1575; &#1705;&#1606;&#1740;&#1583;.</span></font></P>
+چرا من خطاي </span><i>&quot;ERROR: Memory exhausted in AllocSetAlloc&quot;</i><span lang="fa"> 
+مي‌گيرم؟</span></font></H4>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">این خطا احتمالاً یا به خاطر 
+تمام شدن حافظه مجازی سیستم شماست و یا اینکه کرنل برای برنامه ها در مورد میزان 
+استفاده از حافظه مجازی محدودیت اعمال کرده است. قبل از اجرای برنامه اصلی یکی از 
+دستورات زیر را اجرا کنید.</span></font></P>
 <div dir="ltr">
 	<PRE><font face="Tahoma">    ulimit -d 262144
     limit datasize 256m
 </font></PRE></div>
-<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1576;&#1587;&#1578;&#1607; &#1576;&#1607; &#1606;&#1608;&#1593; &#1588;&#1604; &#1740;&#1705;&#1740; &#1575;&#1586; &#1575;&#1740;&#1606; 
-&#1583;&#1587;&#1578;&#1608;&#1585;&#1575;&#1578; &#1605;&#1605;&#1705;&#1606; &#1575;&#1587;&#1578; &#1576;&#1575; &#1605;&#1608;&#1601;&#1602;&#1740;&#1578; &#1575;&#1580;&#1585;&#1575; &#1588;&#1608;&#1583;. &#1576;&#1575; &#1575;&#1580;&#1585;&#1575;&#1740; &#1570;&#1606; &#1583;&#1587;&#1578;&#1608;&#1585; &#1605;&#1581;&#1583;&#1608;&#1583;&#1740;&#1578; &#1581;&#1575;&#1601;&#1592;&#1607; &#1605;&#1580;&#1575;&#1586;&#1740; &#1576;&#1585;&#1575;&#1740; 
-&#1576;&#1585;&#1606;&#1575;&#1605;&#1607; &#1607;&#1575; &#1576;&#1585;&#1583;&#1575;&#1588;&#1578;&#1607; &#1588;&#1583;&#1607; &#1608; &#1576;&#1575; &#1575;&#1740;&#1606; &#1705;&#1575;&#1585; &#1575;&#1581;&#1578;&#1605;&#1575;&#1604;&#1575;&#1611; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578;&#1740; &#1705;&#1607; &#1602;&#1576;&#1604;&#1575;&#1611; &#1582;&#1591;&#1575; &#1605;&#1740; &#1583;&#1575;&#1583;&#1607; &#1575;&#1587;&#1578; 
-&#1575;&#1580;&#1585;&#1575; &#1582;&#1608;&#1575;&#1607;&#1583; &#1588;&#1583;.</span></font></p>
-<H4 dir="rtl"><font face="Tahoma"><A name=4.19>4.19</A>) <span lang="fa">&#1575;&#1586; &#1603;&#1580;&#1575; 
-&#1578;&#1588;&#1582;&#1610;&#1589; &#1583;&#1607;&#1605; &#1603;&#1607; &#1608;&#1610;&#1585;&#1575;&#1610;&#1588; &#1610;&#1575; &#1606;&#1587;&#1582;&#1607; </span>PostgreSQL<span lang="fa">&#1610;&#1610; 
-&#1603;&#1607; &#1605;&#1606; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1605;&#1610;&#8204;&#1603;&#1606;&#1605; &#1670;&#1610;&#1587;&#1578;&#1567;</span></font></H4>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1576;&#1575; &#1575;&#1580;&#1585;&#1575;&#1740; &#1583;&#1587;&#1578;&#1608;&#1585;</span>
+<p dir="rtl"><font face="Tahoma"><span lang="fa">بسته به نوع شل یکی از این 
+دستورات ممکن است با موفقیت اجرا شود. با اجرای آن دستور محدودیت حافظه مجازی برای 
+برنامه ها برداشته شده و با این کار احتمالاً درخواستی که قبلاً خطا می داده است 
+اجرا خواهد شد.</span></font></p>
+<H4 dir="rtl"><font face="Tahoma"><A name=4.19>4.19</A>) <span lang="fa">از كجا 
+تشخيص دهم كه ويرايش يا نسخه </span>PostgreSQL<span lang="fa">يي كه من استفاده 
+مي‌كنم چيست؟</span></font></H4>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">با اجرای دستور</span>
 <span lang="fa">()</span>SELECT version</font></P>
-<H4 dir="rtl"><font face="Tahoma"><A name=4.20>4.20</A>) <span lang="fa">&#1670;&#1585;&#1575;  
-&#1581;&#1740;&#1606; &#1575;&#1580;&#1585;&#1575;&#1740; &#1593;&#1605;&#1604;&#1740;&#1575;&#1578; &#1585;&#1608;&#1740; </span>large-object<span lang="fa">&#1607;&#1575; &#1582;&#1591;&#1575;&#1740; </span>&quot;<I>invalid 
-large obj descriptor</I>&quot;<span lang="fa">&#1576;&#1607; &#1608;&#1580;&#1608;&#1583; &#1605;&#1740; &#1570;&#1740;&#1583;&#1567;</span></font></H4>
-<p align="right" dir="rtl"><font face="Tahoma"><span lang="fa">&#1588;&#1605;&#1575; &#1576;&#1575;&#1740;&#1583; &#1602;&#1576;&#1604; &#1575;&#1586; 
-&#1588;&#1585;&#1608;&#1593; &#1583;&#1587;&#1578;&#1608;&#1585;&#1575;&#1578;&#1740; &#1705;&#1607; &#1576;&#1575; </span>large-object<span lang="fa">&#1607;&#1575; &#1705;&#1575;&#1585; &#1605;&#1740; &#1705;&#1606;&#1606;&#1583; </span>BEGIN<span lang="fa">&nbsp; &#1608; &#1576;&#1593;&#1583; &#1575;&#1586; &#1570;&#1606;&#1607;&#1575; &#1607;&#1605; &#1740;&#1705; </span>END<span lang="fa"> 
-&#1576;&#1711;&#1584;&#1575;&#1585;&#1740;&#1583;. &#1583;&#1585; &#1581;&#1575;&#1604; &#1581;&#1575;&#1590;&#1585; </span>PostgreSQL<span lang="fa"> &#1607;&#1606;&#1583;&#1604; </span>large-object<span lang="fa">&#1607;&#1575; 
-&#1585;&#1575; &#1583;&#1585; &#1586;&#1605;&#1575;&#1606; &#1606;&#1607;&#1575;&#1740;&#1740; &#1588;&#1583;&#1606; &#1578;&#1585;&#1575;&#1705;&#1606;&#1588; (</span>commit<span lang="fa">&#1588;&#1583;&#1606;)</span>
-<span lang="fa">&#1605;&#1740; &#1576;&#1606;&#1583;&#1583;. &#1576;&#1607; &#1607;&#1605;&#1740;&#1606; &#1583;&#1604;&#1740;&#1604; &#1575;&#1608;&#1604;&#1740;&#1606; &#1578;&#1604;&#1575;&#1588; &#1576;&#1585;&#1575;&#1740; &#1575;&#1606;&#1580;&#1575;&#1605; &#1607;&#1585; &#1705;&#1575;&#1585;&#1740; &#1576;&#1575; &#1607;&#1606;&#1583;&#1604; &#1605;&#1606;&#1580;&#1585; 
-&#1576;&#1607; &#1582;&#1591;&#1575;&#1740; </span><i>invalid large obj descriptor</i><span lang="fa"> &#1582;&#1608;&#1575;&#1607;&#1583; &#1588;&#1583;.</span>
-<span lang="fa">&#1576;&#1585;&#1575;&#1740; &#1580;&#1604;&#1608;&#1711;&#1740;&#1585;&#1740; &#1575;&#1586; &#1575;&#1740;&#1606; &#1582;&#1591;&#1575; &#1581;&#1578;&#1605;&#1575;&#1611; &#1576;&#1575;&#1740;&#1583; &#1575;&#1586; &#1740;&#1705; &#1578;&#1585;&#1575;&#1705;&#1606;&#1588; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1705;&#1606;&#1740;&#1583;. 
-&#1575;&#1740;&#1606; &#1705;&#1575;&#1585; &#1607;&#1605;&#1575;&#1606;&#1591;&#1608;&#1585; &#1705;&#1607; &#1602;&#1576;&#1604;&#1575;&#1611; &#1711;&#1601;&#1578;&#1607; &#1588;&#1583; &#1576;&#1575; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1602;&#1585;&#1575;&#1585; &#1583;&#1575;&#1583;&#1606; </span>BEGIN<span lang="fa"> 
-&#1608; </span>END<span lang="fa"> &#1583;&#1585; &#1575;&#1576;&#1578;&#1583;&#1575; &#1608; &#1575;&#1606;&#1578;&#1607;&#1575;&#1740; &#1583;&#1587;&#1578;&#1608;&#1585;&#1575;&#1578; &#1575;&#1606;&#1580;&#1575;&#1605; &#1605;&#1740; &#1588;&#1608;&#1583;.</span></font></p>
-<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1575;&#1711;&#1585; &#1575;&#1740;&#1606; &#1582;&#1591;&#1575; &#1585;&#1575; &#1583;&#1585; &#1581;&#1740;&#1606; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; 
-&#1575;&#1586; &#1740;&#1705; &#1583;&#1585;&#1575;&#1740;&#1608;&#1585; </span>ODBC<span lang="fa"> &#1583;&#1585;&#1740;&#1575;&#1601;&#1578; &#1705;&#1585;&#1583;&#1740;&#1583; &#1575;&#1581;&#1578;&#1605;&#1575;&#1604;&#1575;&#1611; &#1576;&#1575;&#1740;&#1583; &#1575;&#1740;&#1606; &#1583;&#1587;&#1578;&#1608;&#1585; &#1585;&#1575; 
-&#1575;&#1580;&#1585;&#1575; &#1705;&#1606;&#1740;&#1583;: </span>set </font> <CODE><font face="Tahoma">auto-commit off</font></CODE></p>
+<H4 dir="rtl"><font face="Tahoma"><A name=4.20>4.20</A>) <span lang="fa">چرا در 
+حین اجرای عملیات روی </span>large-object<span lang="fa">ها خطای </span>&quot;<I>invalid 
+large obj descriptor</I>&quot;<span lang="fa">به وجود می آید؟</span></font></H4>
+<p align="right" dir="rtl"><font face="Tahoma"><span lang="fa">شما باید قبل از 
+شروع دستوراتی که با </span>large-object<span lang="fa">ها کار می کنند از </span>
+BEGIN<span lang="fa">&nbsp; و بعد از آنها هم یک </span>END<span lang="fa"> 
+بگذارید. در حال حاضر </span>PostgreSQL<span lang="fa"> هندل </span>large-object<span lang="fa">ها 
+را در زمان نهایی شدن تراکنش (</span>commit<span lang="fa">شدن)</span>
+<span lang="fa">می بندد. به همین دلیل اولین تلاش برای انجام هر کاری با هندل منجر 
+به خطای </span><i>invalid large obj descriptor</i><span lang="fa"> خواهد شد.</span>
+<span lang="fa">برای جلوگیری از این خطا حتماً باید از یک تراکنش استفاده کنید. 
+این کار همانطور که قبلاً گفته شد با استفاده از قرار دادن </span>BEGIN<span lang="fa"> 
+و </span>END<span lang="fa"> در ابتدا و انتهای دستورات انجام می شود.</span></font></p>
+<p dir="rtl"><font face="Tahoma"><span lang="fa">اگر این خطا را در حین استفاده 
+از یک درایور </span>ODBC<span lang="fa"> دریافت کردید احتمالاً باید این دستور را 
+اجرا کنید: </span>set </font> <CODE><font face="Tahoma">auto-commit off</font></CODE></p>
 <H4 dir="rtl"><font face="Tahoma"><A name=4.21>4.21</A>) 
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1610;&#1603; &#1587;&#1578;&#1608;&#1606; &#1575;&#1610;&#1580;&#1575;&#1583; &#1603;&#1606;&#1605; &#1603;&#1607; &#1605;&#1602;&#1583;&#1575;&#1585; &#1586;&#1605;&#1575;&#1606; &#1580;&#1575;&#1585;&#1610; &#1585;&#1575; &#1576;&#1607; &#1593;&#1606;&#1608;&#1575;&#1606; &#1605;&#1602;&#1583;&#1575;&#1585; 
-&#1662;&#1610;&#1588;&#8204;&#1601;&#1585;&#1590; &#1583;&#1575;&#1588;&#1578;&#1607; &#1576;&#1575;&#1588;&#1583;&#1567;</span></font></H4>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1575;&#1586;</span> <I>CURRENT_TIMESTAMP
-<span lang="fa">&nbsp;</span></I><span lang="fa">&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1705;&#1606;&#1740;&#1583; &#1583;&#1585; &#1605;&#1579;&#1575;&#1604; &#1586;&#1740;&#1585; &#1606;&#1581;&#1608;&#1607; 
-&#1575;&#1606;&#1580;&#1575;&#1605; &#1575;&#1740;&#1606; &#1705;&#1575;&#1585; &#1606;&#1588;&#1575;&#1606; &#1583;&#1575;&#1583;&#1607; &#1588;&#1583;&#1607; &#1575;&#1587;&#1578;:</span></font></P>
+<span lang="fa">چگونه يك ستون ايجاد كنم كه مقدار زمان جاري را به عنوان مقدار 
+پيش‌فرض داشته باشد؟</span></font></H4>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">از</span> <I>CURRENT_TIMESTAMP
+<span lang="fa">&nbsp;</span></I><span lang="fa">استفاده کنید در مثال زیر نحوه انجام 
+این کار نشان داده شده است:</span></font></P>
 <div dir="ltr">
 	<PRE><CODE><font face="Tahoma">CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
 </font></CODE><font face="Tahoma">
 </font></PRE>
 </div>
 <H4 dir="rtl"><font face="Tahoma"><A name=4.22>4.22</A>) 
-<span lang="fa">&#1670;&#1585;&#1575; &quot;&#1586;&#1610;&#1585; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578;&#1607;&#1575;&#1610;&#1610;&quot; &#1603;&#1607; &#1575;&#1586; </span>IN<span lang="fa"> &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; 
-&#1605;&#1610;&#8204;&#1603;&#1606;&#1606;&#1583; &#1603;&#1606;&#1583; &#1607;&#1587;&#1578;&#1606;&#1583;&#1567;</span></font></H4>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1583;&#1585; &#1606;&#1587;&#1582;&#1607; &#1607;&#1575;&#1740; &#1602;&#1576;&#1604; &#1575;&#1586; 7.4 &#1593;&#1605;&#1604; 
-&#1575;&#1604;&#1581;&#1575;&#1602; &#1586;&#1740;&#1585; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578; &#1608; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578; &#1575;&#1589;&#1604;&#1740; &#1576;&#1607; &#1575;&#1740;&#1606; &#1589;&#1608;&#1585;&#1578; &#1575;&#1606;&#1580;&#1575;&#1605; &#1605;&#1740; &#1588;&#1608;&#1583; &#1705;&#1607; &#1606;&#1578;&#1575;&#1740;&#1580; &#1576;&#1607; &#1583;&#1587;&#1578; &#1570;&#1605;&#1583;&#1607; 
-&#1575;&#1586; &#1586;&#1740;&#1585; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578; &#1576;&#1607; &#1589;&#1608;&#1585;&#1578; &#1578;&#1585;&#1578;&#1740;&#1576;&#1740; &#1576;&#1585;&#1575;&#1740; &#1607;&#1585; &#1585;&#1583;&#1740;&#1601; &#1575;&#1593;&#1605;&#1575;&#1604; &#1605;&#1740; &#1588;&#1608;&#1583;. &#1575;&#1711;&#1585; &#1586;&#1740;&#1585;&#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578; &#1585;&#1583;&#1740;&#1601; &#1607;&#1575;&#1740; 
-&#1705;&#1605;&#1740; &#1585;&#1575; &#1576;&#1607; &#1593;&#1606;&#1608;&#1575;&#1606; &#1582;&#1585;&#1608;&#1580;&#1740; &#1576;&#1585;&#1711;&#1585;&#1583;&#1575;&#1606;&#1583; &#1608; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578; &#1576;&#1740;&#1585;&#1608;&#1606;&#1740; &#1585;&#1583;&#1740;&#1601; &#1607;&#1575;&#1740; &#1586;&#1740;&#1575;&#1583;&#1740; &#1585;&#1575; &#1588;&#1575;&#1605;&#1604; &#1588;&#1608;&#1583; 
-&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; </span>IN<span lang="fa"> &#1576;&#1607;&#1578;&#1585;&#1740;&#1606; &#1585;&#1608;&#1588; &#1575;&#1587;&#1578; &#1583;&#1585; &#1594;&#1740;&#1585; &#1575;&#1740;&#1606;&#1589;&#1608;&#1585;&#1578; &#1576;&#1607;&#1578;&#1585; &#1575;&#1587;&#1578; &#1575;&#1586;
-</span>EXISTS<span lang="fa"> &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1588;&#1608;&#1583;</span></font></P>
+<span lang="fa">چرا &quot;زير درخواستهايي&quot; كه از </span>IN<span lang="fa"> استفاده 
+مي‌كنند كند هستند؟</span></font></H4>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">در نسخه های قبل از 7.4 عمل 
+الحاق زیر درخواست و درخواست اصلی به این صورت انجام می شود که نتایج به دست آمده 
+از زیر درخواست به صورت ترتیبی برای هر ردیف اعمال می شود. اگر زیردرخواست ردیف های 
+کمی را به عنوان خروجی برگرداند و درخواست بیرونی ردیف های زیادی را شامل شود 
+استفاده از </span>IN<span lang="fa"> بهترین روش است در غیر اینصورت بهتر است از
+</span>EXISTS<span lang="fa"> استفاده شود</span></font></P>
 <div dir="ltr">
 	<PRE><font face="Tahoma">    SELECT *
     FROM tab
     WHERE col IN (SELECT subcol FROM subtab);
 </font></PRE></div>
-<p dir="rtl"><span lang="fa"><font face="Tahoma">&#1576;&#1607;:</font></span></p>
+<p dir="rtl"><span lang="fa"><font face="Tahoma">به:</font></span></p>
 <div dir="ltr">
 	<PRE><font face="Tahoma">    SELECT *
     FROM tab
     WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
 </font></PRE></div>
-<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1576;&#1585;&#1575;&#1740; &#1575;&#1580;&#1585;&#1575;&#1740; &#1587;&#1585;&#1740;&#1593; &#1575;&#1740;&#1606; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578; 
-&#1576;&#1575;&#1740;&#1583; &#1576;&#1585;&#1575;&#1740; &#1587;&#1578;&#1608;&#1606; </span>subcol<span lang="fa"> &#1606;&#1605;&#1575;&#1740;&#1607; &#1575;&#1740;&#1580;&#1575;&#1583; &#1588;&#1583;&#1607; &#1576;&#1575;&#1588;&#1583;.</span></font></p>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1583;&#1585; &#1606;&#1587;&#1582;&#1607; &#1607;&#1575;&#1740; &#1576;&#1593;&#1583; &#1575;&#1586; 7.4 </span>
-IN<span lang="fa"> &#1576;&#1585;&#1575;&#1740; &#1575;&#1604;&#1581;&#1575;&#1602; &#1575;&#1586; &#1607;&#1605;&#1575;&#1606; &#1578;&#1705;&#1606;&#1740;&#1705; &#1662;&#1740;&#1670;&#1740;&#1583;&#1607; &#1605;&#1608;&#1585;&#1583; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1583;&#1585; &#1583;&#1587;&#1578;&#1608;&#1585;&#1575;&#1578; 
-&#1605;&#1593;&#1605;&#1608;&#1604;&#1740; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1605;&#1740; &#1705;&#1606;&#1583; &#1608; &#1576;&#1606;&#1575;&#1576;&#1585;&#1575;&#1740;&#1606; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1570;&#1606; &#1606;&#1587;&#1576;&#1578; &#1576;&#1607; </span>EXISTS<span lang="fa"> 
-&#1575;&#1585;&#1580;&#1581;&#1740;&#1578; &#1583;&#1575;&#1585;&#1583;.</span></font><H4 dir="rtl"><font face="Tahoma"><A name=4.23>4.23</A>) <span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1610;&#1603; &#1575;&#1604;&#1581;&#1575;&#1602; &#1582;&#1575;&#1585;&#1580;&#1610; (</span>outer join<span lang="fa">) 
-&#1575;&#1606;&#1580;&#1575;&#1605; &#1583;&#1607;&#1605;&#1567;</span></font></H4>
-<p dir="rtl"><span lang="fa"><font face="Tahoma">&#1576;&#1585;&#1575;&#1740; &#1575;&#1606;&#1580;&#1575;&#1605; &#1575;&#1604;&#1581;&#1575;&#1602; &#1582;&#1575;&#1585;&#1580;&#1740; &#1576;&#1607; &#1585;&#1608;&#1588; 
-&#1586;&#1740;&#1585; &#1593;&#1605;&#1604; &#1705;&#1606;&#1740;&#1583;:</font></span></p>
+<p dir="rtl"><font face="Tahoma"><span lang="fa">برای اجرای سریع این درخواست 
+باید برای ستون </span>subcol<span lang="fa"> نمایه ایجاد شده باشد.</span></font></p>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">در نسخه های بعد از 7.4 </span>
+IN<span lang="fa"> برای الحاق از همان تکنیک پیچیده مورد استفاده در دستورات 
+معمولی استفاده می کند و بنابراین استفاده از آن نسبت به </span>EXISTS<span lang="fa"> 
+ارجحیت دارد.</span></font><H4 dir="rtl"><font face="Tahoma"><A name=4.23>4.23</A>) <span lang="fa">
+چگونه مي‌توانم يك الحاق خارجي (</span>outer join<span lang="fa">) انجام دهم؟</span></font></H4>
+<p dir="rtl"><span lang="fa"><font face="Tahoma">برای انجام الحاق خارجی به روش 
+زیر عمل کنید:</font></span></p>
 <div dir="ltr">
 	<PRE><font face="Tahoma">    SELECT *
     FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
 </font></PRE></div>
-<p dir="rtl"><span lang="fa"><font face="Tahoma">&#1740;&#1575;</font></span></p>
+<p dir="rtl"><span lang="fa"><font face="Tahoma">یا</font></span></p>
 <div dir="ltr">
 	<PRE><font face="Tahoma">    SELECT *
     FROM t1 LEFT OUTER JOIN t2 USING (col);
 </font></PRE>
 </div>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578;&#1607;&#1575;&#1740; &#1576;&#1575;&#1604;&#1575; </span>t1.col , 
-t2.col<span lang="fa"> &#1585;&#1575; &#1576;&#1607; &#1607;&#1605; &#1575;&#1604;&#1581;&#1575;&#1602; &#1605;&#1740; &#1705;&#1606;&#1583; &#1608; &#1607;&#1605;&#1670;&#1606;&#1740;&#1606; &#1585;&#1583;&#1740;&#1601;&#1607;&#1575;&#1740; </span>t1<span lang="fa"> 
-&#1705;&#1607; &#1606;&#1592;&#1740;&#1585; &#1570;&#1606;&#1607;&#1575; &#1583;&#1585; </span>t2<span lang="fa"> &#1606;&#1576;&#1608;&#1583;&#1607; &#1575;&#1587;&#1578; &#1585;&#1575; &#1606;&#1740;&#1586; &#1576;&#1585;&#1605;&#1740; &#1711;&#1585;&#1583;&#1575;&#1606;&#1583;. &#1575;&#1711;&#1585; &#1575;&#1586;
-</span>RIGHT<span lang="fa"> &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1588;&#1608;&#1583; &#1606;&#1578;&#1740;&#1580;&#1607; &#1576;&#1585; &#1593;&#1705;&#1587; &#1575;&#1587;&#1578;. &#1740;&#1593;&#1606;&#1740; &#1585;&#1583;&#1740;&#1601;&#1607;&#1575;&#1740; </span>
-t2<span lang="fa"> &#1705;&#1607; &#1606;&#1592;&#1740;&#1585; &#1570;&#1606;&#1607;&#1575; &#1583;&#1585; </span>t1 <span lang="fa">&#1606;&#1576;&#1575;&#1588;&#1583; &#1585;&#1575; &#1606;&#1588;&#1575;&#1606; &#1605;&#1740; 
-&#1583;&#1607;&#1583; &#1608; &#1575;&#1711;&#1585; &#1575;&#1586; </span>FULL<span lang="fa"> &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1588;&#1608;&#1583; &#1606;&#1578;&#1740;&#1580;&#1607; &#1607;&#1605; &#1588;&#1575;&#1605;&#1604; &#1585;&#1583;&#1740;&#1601;&#1607;&#1575;&#1740;
-</span>t1<span lang="fa"> &#1575;&#1587;&#1578;&nbsp; &#1608; &#1607;&#1605; &#1588;&#1575;&#1605;&#1604; &#1585;&#1583;&#1740;&#1601;&#1607;&#1575;&#1740; </span>t2<span lang="fa">. 
-&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1575;&#1586; &#1705;&#1604;&#1605;&#1607; </span>OUTER<span lang="fa"> &#1575;&#1582;&#1578;&#1740;&#1575;&#1585;&#1740; &#1575;&#1587;&#1578; &#1670;&#1585;&#1575; &#1705;&#1607; &#1575;&#1740;&#1606; &#1705;&#1604;&#1605;&#1607; &#1576;&#1607; &#1591;&#1608;&#1585; 
-&#1590;&#1605;&#1606;&#1740; &#1583;&#1585; &#1583;&#1587;&#1578;&#1608;&#1585;&#1607;&#1575;&#1740; </span>LEFT, RIGHT, FULL<span lang="fa"> &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;.</span></font></P>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1583;&#1585; &#1606;&#1587;&#1582;&#1607; &#1607;&#1575;&#1740; &#1602;&#1576;&#1604;&#1740; &#1662;&#1575;&#1740;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1605;&#1740; 
-&#1578;&#1608;&#1575;&#1606;&#1740;&#1605; &#1575;&#1604;&#1581;&#1575;&#1602; &#1582;&#1575;&#1585;&#1580;&#1740; &#1585;&#1575; &#1576;&#1607; &#1705;&#1605;&#1705; &#1583;&#1587;&#1578;&#1608;&#1585;&#1607;&#1575;&#1740; </span>UNION, NOT IN<span lang="fa"> &#1588;&#1576;&#1740;&#1607; 
-&#1587;&#1575;&#1586;&#1740; &#1705;&#1606;&#1740;&#1605;. &#1575;&#1740;&#1606; &#1705;&#1575;&#1585; &#1583;&#1585; &#1605;&#1579;&#1575;&#1604; &#1586;&#1740;&#1585; &#1606;&#1588;&#1575;&#1606; &#1583;&#1575;&#1583;&#1607; &#1588;&#1583;&#1607; &#1575;&#1587;&#1578;:</span><BR></font></P>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">درخواستهای بالا </span>t1.col , 
+t2.col<span lang="fa"> را به هم الحاق می کند و همچنین ردیفهای </span>t1<span lang="fa"> 
+که نظیر آنها در </span>t2<span lang="fa"> نبوده است را نیز برمی گرداند. اگر از
+</span>RIGHT<span lang="fa"> استفاده شود نتیجه بر عکس است. یعنی ردیفهای </span>
+t2<span lang="fa"> که نظیر آنها در </span>t1 <span lang="fa">نباشد را نشان می 
+دهد و اگر از </span>FULL<span lang="fa"> استفاده شود نتیجه هم شامل ردیفهای
+</span>t1<span lang="fa"> است&nbsp; و هم شامل ردیفهای </span>t2<span lang="fa">. 
+استفاده از کلمه </span>OUTER<span lang="fa"> اختیاری است چرا که این کلمه به طور 
+ضمنی دستورهای </span>LEFT, RIGHT, FULL<span lang="fa"> وجود دارد.</span></font></P>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">در نسخه های قبلی پایگاه داده می 
+توانیم الحاق خارجی را به کمک دستورهای </span>UNION, NOT IN<span lang="fa"> شبیه 
+سازی کنیم. این کار در مثال زیر نشان داده شده است:</span><BR></font></P>
 <div dir="ltr">
 	<PRE><font face="Tahoma">    SELECT tab1.col1, tab2.col2
     FROM tab1, tab2
@@ -1422,90 +1441,93 @@ t2<span lang="fa"> &#1705;&#1607; &#1606;&#1592;&#1740;&#1585; &#1570;&#1606;&#1
 </font></PRE>
 </div>
 <H4 dir="rtl"><font face="Tahoma"><A name=4.24>4.24</A>) 
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578;&#1607;&#1575;&#1610;&#1610; &#1575;&#1586; &#1670;&#1606;&#1583; &#1662;&#1575;&#1610;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1578;&#1608;&#1604;&#1610;&#1583; &#1603;&#1585;&#1583;&#1567;</span></font></H4>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1583;&#1585; &#1581;&#1575;&#1604; &#1581;&#1575;&#1590;&#1585; &#1575;&#1740;&#1606; &#1705;&#1575;&#1585; &#1575;&#1605;&#1705;&#1575;&#1606; &#1662;&#1584;&#1740;&#1585; 
-&#1606;&#1740;&#1587;&#1578;. </span>PostgreSQL<span lang="fa"> &#1601;&#1602;&#1591; &#1575;&#1605;&#1705;&#1575;&#1606; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578; &#1575;&#1586; &#1662;&#1575;&#1740;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1575;&#1740; &#1585;&#1575; 
-&#1605;&#1740; &#1583;&#1607;&#1583; &#1705;&#1607; &#1583;&#1585; &#1581;&#1575;&#1604; &#1581;&#1575;&#1590;&#1585; &#1576;&#1607; &#1570;&#1606; &#1605;&#1578;&#1589;&#1604; &#1576;&#1575;&#1588;&#1740;&#1583; &#1608; &#1606;&#1605;&#1740;&#8204;&#1578;&#1608;&#1575;&#1606; &#1576;&#1607; &#1591;&#1608;&#1585; &#1607;&#1605;&#1586;&#1605;&#1575;&#1606; &#1575;&#1586; &#1583;&#1608; &#1662;&#1575;&#1740;&#1711;&#1575;&#1607; 
-&#1583;&#1575;&#1583;&#1607; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1705;&#1585;&#1583;. &#1575;&#1604;&#1576;&#1578;&#1607; &#1740;&#1705; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; &#1705;&#1575;&#1585;&#1576;&#1585;&#1583;&#1740; &#1582;&#1608;&#1583; &#1605;&#1740; &#1578;&#1608;&#1575;&#1606;&#1583; &#1576;&#1607; &#1591;&#1608;&#1585; &#1607;&#1605;&#1586;&#1605;&#1575;&#1606; &#1583;&#1608;&nbsp; 
-&#1662;&#1575;&#1740;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1585;&#1575; &#1605;&#1608;&#1585;&#1583; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1602;&#1585;&#1575;&#1585; &#1583;&#1575;&#1583;&#1607; &#1608; &#1606;&#1578;&#1575;&#1740;&#1580; &#1585;&#1575; &#1576;&#1575; &#1607;&#1605; &#1578;&#1585;&#1705;&#1740;&#1576; &#1705;&#1606;&#1583; &#1608;&#1604;&#1740; &#1606;&#1605;&#1740; &#1578;&#1608;&#1575;&#1606;&#1583; 
-&#1583;&#1585; &#1740;&#1705; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578; &#1576;&#1607; &#1607;&#1585;&nbsp; &#1583;&#1608; &#1662;&#1575;&#1740;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1585;&#1580;&#1608;&#1593; &#1705;&#1606;&#1583;.</span></font></P>
+<span lang="fa">چگونه مي‌توان درخواستهايي از چند پايگاه داده توليد كرد؟</span></font></H4>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">در حال حاضر این کار امکان پذیر 
+نیست. </span>PostgreSQL<span lang="fa"> فقط امکان درخواست از پایگاه داده ای را 
+می دهد که در حال حاضر به آن متصل باشید و نمی توان به طور همزمان از دو پایگاه 
+داده استفاده کرد. البته یک برنامه کاربردی خود می تواند به طور همزمان دو&nbsp; 
+پایگاه داده را مورد استفاده قرار داده و نتایج را با هم ترکیب کند ولی نمی تواند 
+در یک درخواست به هر&nbsp; دو پایگاه داده رجوع کند.</span></font></P>
 <H4 dir="rtl"><font face="Tahoma"><A name=4.25>4.25</A>)  
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1582;&#1585;&#1608;&#1580;&#1610; &#1610;&#1603; &#1578;&#1575;&#1576;&#1593; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1583;&nbsp; &#1670;&#1606;&#1583; &#1585;&#1583;&#1610;&#1601; &#1610;&#1575; &#1587;&#1578;&#1608;&#1606; &#1576;&#1575;&#1588;&#1583;&#1567;</span></font></H4>
-<P dir="rtl"><span lang="fa"><font face="Tahoma">&#1583;&#1585; &#1606;&#1587;&#1582;&#1607; 7.3 &#1582;&#1585;&#1608;&#1580;&#1740; &#1740;&#1705; &#1578;&#1575;&#1576;&#1593; &#1605;&#1740; 
-&#1578;&#1608;&#1575;&#1606;&#1583; &#1670;&#1606;&#1583; &#1585;&#1583;&#1740;&#1601; &#1740;&#1575; &#1670;&#1606;&#1583; &#1587;&#1578;&#1608;&#1606; &#1576;&#1575;&#1588;&#1583;. &#1576;&#1585;&#1575;&#1740; &#1583;&#1740;&#1583;&#1606;&nbsp; &#1575;&#1591;&#1604;&#1575;&#1593;&#1575;&#1578; &#1576;&#1740;&#1588;&#1578;&#1585; &#1576;&#1607; &#1587;&#1575;&#1740;&#1578; &#1586;&#1740;&#1585; 
-&#1605;&#1585;&#1575;&#1580;&#1593;&#1607; &#1705;&#1606;&#1740;&#1583;:</font></span><font face="Tahoma"><A 
+<span lang="fa">چگونه خروجي يك تابع مي‌تواند&nbsp; چند رديف يا ستون باشد؟</span></font></H4>
+<P dir="rtl"><span lang="fa"><font face="Tahoma">در نسخه 7.3 خروجی یک تابع می 
+تواند چند ردیف یا چند ستون باشد. برای دیدن&nbsp; اطلاعات بیشتر به سایت زیر 
+مراجعه کنید:</font></span><font face="Tahoma"><A 
 href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</A><span lang="fa">
 </span>&nbsp;</font><H4 dir="rtl"><font face="Tahoma"><A name=4.26>4.26</A>) 
-<span lang="fa">&#1583;&#1585; &#1578;&#1608;&#1575;&#1576;&#1593; </span>PL/PgSQL<span lang="fa"> &#1670;&#1585;&#1575; &#1606;&#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606; &#1576;&#1575; &#1575;&#1591;&#1605;&#1610;&#1606;&#1575;&#1606; 
-&#1580;&#1583;&#1575;&#1608;&#1604; &#1605;&#1608;&#1602;&#1578; &#1585;&#1575; &#1575;&#1610;&#1580;&#1575;&#1583; &#1610;&#1575; &#1581;&#1584;&#1601; &#1603;&#1585;&#1583;&#1567;</span></font></H4>
-<P dir="rtl"><font face="Tahoma">PL/PgSQL<span lang="fa"> &#1605;&#1581;&#1578;&#1608;&#1575;&#1740; &#1578;&#1608;&#1575;&#1576;&#1593; &#1585;&#1575; &#1584;&#1582;&#1740;&#1585;&#1607; 
-(</span>cache<span lang="fa">) &#1605;&#1740; &#1705;&#1606;&#1583;.</span> <span lang="fa">&#1740;&#1705; &#1575;&#1579;&#1585; &#1576;&#1583; &#1580;&#1575;&#1606;&#1576;&#1740; 
-&#1575;&#1740;&#1606; &#1705;&#1575;&#1585; &#1570;&#1606; &#1575;&#1587;&#1578; &#1705;&#1607; &#1575;&#1711;&#1585; &#1583;&#1585; &#1578;&#1575;&#1576;&#1593; &#1575;&#1586; &#1740;&#1705; &#1580;&#1583;&#1608;&#1604; &#1605;&#1608;&#1602;&#1578; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1588;&#1608;&#1583; &#1608; &#1576;&#1593;&#1583;&#1575;&#1611; &#1570;&#1606; &#1580;&#1583;&#1608;&#1604; &#1581;&#1584;&#1601; &#1608; 
-&#1740;&#1705; &#1580;&#1583;&#1608;&#1604; &#1580;&#1583;&#1740;&#1583; &#1576;&#1607; &#1580;&#1575;&#1740; &#1570;&#1606; &#1575;&#1740;&#1580;&#1575;&#1583; &#1588;&#1608;&#1583;&#1548; &#1583;&#1585; &#1601;&#1585;&#1575;&#1582;&#1608;&#1575;&#1606;&#1740; &#1605;&#1580;&#1583;&#1583;&nbsp; &#1570;&#1606; &#1578;&#1575;&#1576;&#1593;&#1548; &#1605;&#1581;&#1578;&#1608;&#1575;&#1740; &#1584;&#1582;&#1740;&#1585;&#1607; 
-&#1588;&#1583;&#1607; &#1578;&#1575;&#1576;&#1593;&nbsp; &#1607;&#1606;&#1608;&#1586; &#1576;&#1607; &#1580;&#1583;&#1608;&#1604; &#1602;&#1583;&#1740;&#1605;&#1740; &#1575;&#1588;&#1575;&#1585;&#1607; &#1605;&#1740; &#1705;&#1606;&#1583; &#1608; &#1576;&#1606;&#1575;&#1576;&#1585;&#1575;&#1740;&#1606; &#1575;&#1580;&#1585;&#1575;&#1740; &#1578;&#1575;&#1576;&#1593; &#1576;&#1575; &#1575;&#1588;&#1705;&#1575;&#1604; 
-&#1605;&#1608;&#1575;&#1580;&#1607; &#1605;&#1740; &#1588;&#1608;&#1583;. &#1585;&#1575;&#1607; &#1581;&#1604; &#1575;&#1740;&#1606; &#1605;&#1588;&#1705;&#1604; &#1570;&#1606; &#1575;&#1587;&#1578; &#1705;&#1607; &#1576;&#1585;&#1575;&#1740; &#1580;&#1583;&#1575;&#1608;&#1604; &#1605;&#1608;&#1602;&#1578; &#1575;&#1586; &#1583;&#1587;&#1578;&#1608;&#1585; </span>EXECUTE<span lang="fa"> 
-&#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1588;&#1608;&#1583; &#1705;&#1607; &#1575;&#1740;&#1606; &#1705;&#1575;&#1585; &#1587;&#1576;&#1576; &#1605;&#1740; &#1588;&#1608;&#1583; &#1705;&#1607; &#1583;&#1585;&#1582;&#1608;&#1575;&#1587;&#1578; &#1576;&#1585;&#1575;&#1740; &#1607;&#1585; &#1576;&#1575;&#1585; &#1575;&#1580;&#1585;&#1575; &#1605;&#1580;&#1583;&#1583;&#1575;&#1611; &#1662;&#1740;&#1605;&#1575;&#1740;&#1588; &#1608; 
-&#1578;&#1601;&#1587;&#1740;&#1585; &#1588;&#1608;&#1583;.</span></font></P>
+<span lang="fa">در توابع </span>PL/PgSQL<span lang="fa"> چرا نمي‌توان با اطمينان 
+جداول موقت را ايجاد يا حذف كرد؟</span></font></H4>
+<P dir="rtl"><font face="Tahoma">PL/PgSQL<span lang="fa"> محتوای توابع را ذخیره 
+(</span>cache<span lang="fa">) می کند.</span> <span lang="fa">یک اثر بد جانبی 
+این کار آن است که اگر در تابع از یک جدول موقت استفاده شود و بعداً آن جدول حذف و 
+یک جدول جدید به جای آن ایجاد شود، در فراخوانی مجدد&nbsp; آن تابع، محتوای ذخیره 
+شده تابع&nbsp; هنوز به جدول قدیمی اشاره می کند و بنابراین اجرای تابع با اشکال 
+مواجه می شود. راه حل این مشکل آن است که برای جداول موقت از دستور </span>EXECUTE<span lang="fa"> 
+استفاده شود که این کار سبب می شود که درخواست برای هر بار اجرا مجدداً پیمایش و 
+تفسیر شود.</span></font></P>
 <H4 dir="rtl"><font face="Tahoma"><A name=4.27>4.27</A>) 
-<span lang="fa">&#1670;&#1607; &#1711;&#1586;&#1610;&#1606;&#1607;&#8204;&#1607;&#1575;&#1610;&#1610; &#1576;&#1585;&#1575;&#1610; &#1578;&#1603;&#1585;&#1575;&#1585; (</span>replication<span lang="fa">)</span>
-<span lang="fa">&#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;&#1567;</span> 
+<span lang="fa">چه گزينه‌هايي براي تكرار (</span>replication<span lang="fa">)</span>
+<span lang="fa">وجود دارد؟</span> 
 </font> </H4>
-<P dir="rtl"><font face="Tahoma">There are several master/slave replication options available. These allow 
-only the master to make database changes and the slave can only do database 
-reads. The bottom of <A 
-href="http://gborg.postgresql.org/genpage?replication_research">http://gborg.PostgreSQL.org/genpage?replication_research</A> 
+<P dir="rtl"><font face="Tahoma">There are several master/slave replication 
+options available. These allow only the master to make database changes and the 
+slave can only do database reads. The bottom of <A 
+href="http://gborg.postgresql.org/genpage?replication_research">
+http://gborg.PostgreSQL.org/genpage?replication_research</A> 
 lists them. A multi-master replication solution is being worked on at <A 
-href="http://gborg.postgresql.org/project/pgreplication/projdisplay.php">http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php</A>.</font></P>
+href="http://gborg.postgresql.org/project/pgreplication/projdisplay.php">
+http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php</A>.</font></P>
 <H4 dir="rtl"><font face="Tahoma"><A name=4.28>4.28</A>) 
-<span lang="fa">&#1670;&#1607; &#1711;&#1586;&#1610;&#1606;&#1607;&#8204;&#1607;&#1575;&#1610;&#1610; &#1576;&#1585;&#1575;&#1610; &#1585;&#1605;&#1586;&#1606;&#1711;&#1575;&#1585;&#1610; &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;&#1567;</span> 
+<span lang="fa">چه گزينه‌هايي براي رمزنگاري وجود دارد؟</span> 
 </font> </H4>
 <UL>
   <LI dir="rtl">
 	<p dir="rtl"><font face="Tahoma">contrib<I>/pgcrypto </I><span lang="fa">
-    &#1588;&#1575;&#1605;&#1604; &#1578;&#1608;&#1575;&#1576;&#1593; &#1585;&#1605;&#1586;&#1606;&#1711;&#1575;&#1585;&#1740; &#1586;&#1740;&#1575;&#1583;&#1740; &#1575;&#1587;&#1578; &#1705;&#1607; &#1605;&#1740; &#1578;&#1608;&#1575;&#1606; &#1575;&#1586; &#1570;&#1606;&#1607;&#1575; &#1583;&#1585; &#1583;&#1587;&#1578;&#1608;&#1585;&#1575;&#1578; </span>SQL<span lang="fa"> 
-    &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1705;&#1585;&#1583;.</span></font><LI dir="rtl">
-	<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1576;&#1585;&#1575;&#1740; &#1585;&#1605;&#1586; &#1705;&#1585;&#1583;&#1606; &#1575;&#1585;&#1578;&#1576;&#1575;&#1591; &#1576;&#1740;&#1606;
-    </span>client<span lang="fa"> &#1608; </span>server<span lang="fa">&nbsp; &#1662;&#1575;&#1740;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; 
-    &#1581;&#1578;&#1605;&#1575;&#1611; &#1711;&#1586;&#1740;&#1606;&#1607; </span>SSL<span lang="fa"> &#1585;&#1575; &#1576;&#1585; &#1585;&#1608;&#1740; &#1662;&#1575;&#1740;&#1711;&#1575;&#1607; &#1583;&#1575;&#1583;&#1607; &#1601;&#1593;&#1575;&#1604; &#1705;&#1606;&#1740;&#1605;.</span></font><LI dir="rtl">
-	<p dir="rtl"><font face="Tahoma"><span lang="fa">&#1583;&#1585; &#1606;&#1587;&#1582;&#1607; 7.3 &#1576;&#1607; &#1576;&#1593;&#1583; &#1705;&#1604;&#1605;&#1575;&#1578; 
-    &#1593;&#1576;&#1608;&#1585; &#1705;&#1575;&#1585;&#1576;&#1585;&#1575;&#1606; &#1576;&#1607; &#1591;&#1608;&#1585; &#1575;&#1578;&#1608;&#1605;&#1575;&#1578;&#1740;&#1705; &#1576;&#1607; &#1589;&#1608;&#1585;&#1578; &#1585;&#1605;&#1586; &#1588;&#1583;&#1607; &#1584;&#1582;&#1740;&#1585;&#1607; &#1605;&#1740; &#1588;&#1608;&#1583; &#1608;&#1604;&#1740; &#1583;&#1585; &#1606;&#1587;&#1582;&#1607; &#1607;&#1575;&#1740; 
-    &#1602;&#1576;&#1604;&#1740; &#1576;&#1575;&#1740;&#1583; &#1711;&#1586;&#1740;&#1606;&#1607; </span> 
-  <I>PASSWORD_ENCRYPTION</I> <span lang="fa">&#1585;&#1575;&nbsp;&#1583;&#1585; &#1601;&#1575;&#1740;&#1604;</span><I>postgresql.conf </I>
-    <span lang="fa">&#1601;&#1593;&#1575;&#1604; &#1705;&#1606;&#1740;&#1605;. </span> 
+    شامل توابع رمزنگاری زیادی است که می توان از آنها در دستورات </span>SQL<span lang="fa"> 
+    استفاده کرد.</span></font><LI dir="rtl">
+	<p dir="rtl"><font face="Tahoma"><span lang="fa">برای رمز کردن ارتباط بین
+    </span>client<span lang="fa"> و </span>server<span lang="fa"> ، پایگاه داده 
+	حتماً گزینه </span>SSL<span lang="fa"> را بر روی پایگاه داده فعال کنیم.</span></font><LI dir="rtl">
+	<p dir="rtl"><font face="Tahoma"><span lang="fa">در نسخه 7.3 به بعد کلمات 
+	عبور کاربران به طور اتوماتیک به صورت رمز شده ذخیره می شود ولی در نسخه های 
+	قبلی باید گزینه </span> 
+  <I>PASSWORD_ENCRYPTION</I> <span lang="fa">&nbsp;در فایل</span><I>postgresql.conf </I>
+    <span lang="fa">فعال کنیم. </span> 
   </font> 
   <LI dir="rtl">
-	<p dir="rtl"><span lang="fa"><font face="Tahoma">&#1605;&#1740; &#1578;&#1608;&#1575;&#1606; &#1662;&#1575;&#1740;&#1711;&#1575;&#1607;&#1607;&#1575;&#1740; &#1583;&#1575;&#1583;&#1607; &#1585;&#1575; 
-    &#1585;&#1608;&#1740; &#1740;&#1705; &#1601;&#1575;&#1740;&#1604; &#1587;&#1740;&#1587;&#1578;&#1605; &#1585;&#1605;&#1586;&#1588;&#1583;&#1607; &#1606;&#1711;&#1575;&#1607;&#1583;&#1575;&#1585;&#1740; &#1705;&#1585;&#1583;</font></span></LI></UL>
+	<p dir="rtl"><span lang="fa"><font face="Tahoma">می توان پایگاههای داده را 
+	روی یک فایل سیستم رمزشده نگاهداری کرد</font></span></LI></UL>
 <HR dir="rtl">
 
 <H2 align=center dir="rtl"><font face="Tahoma">Extending PostgreSQL</font></H2>
 <H4 dir="rtl"><font face="Tahoma"><A name=5.1>5.1</A>)
-<span lang="fa">&#1605;&#1606; &#1610;&#1603; &#1578;&#1575;&#1576;&#1593; &#1606;&#1608;&#1588;&#1578;&#1607;&#8204;&#1575;&#1605;. &#1670;&#1711;&#1608;&#1606;&#1607; &#1570;&#1606; &#1585;&#1575; &#1583;&#1585; </span>psql<span lang="fa"> 
-&#1575;&#1580;&#1585;&#1575; &#1603;&#1606;&#1605;&#1567; &#1670;&#1585;&#1575; &#1576;&#1575; &#1575;&#1580;&#1585;&#1575;&#1610; &#1570;&#1606; </span>core dump<span lang="fa"> &#1605;&#1610;&#8204;&#1711;&#1610;&#1585;&#1605;&#1567;</span></font></H4>
-<p dir="rtl"><span lang="fa"><font face="Tahoma">&#1583;&#1604;&#1575;&#1740;&#1604; &#1605;&#1582;&#1578;&#1604;&#1601;&#1740; &#1605;&#1740; &#1578;&#1608;&#1575;&#1606;&#1583; &#1576;&#1575;&#1593;&#1579; &#1576;&#1585;&#1608;&#1586; 
-&#1575;&#1740;&#1606; &#1605;&#1588;&#1705;&#1604; &#1588;&#1608;&#1583;. &#1575;&#1605;&#1575; &#1602;&#1576;&#1604; &#1575;&#1586; &#1607;&#1605;&#1607;&#1548; &#1578;&#1575;&#1576;&#1593; &#1582;&#1608;&#1583; &#1585;&#1575; &#1576;&#1607; &#1589;&#1608;&#1585;&#1578; &#1580;&#1583;&#1575; &#1578;&#1587;&#1578; &#1705;&#1606;&#1740;&#1583;.</font></span></p>
-<H4 dir="rtl"><font face="Tahoma"><A name=5.2>5.2</A>) <span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1583;&#1585; &#1578;&#1608;&#1604;&#1610;&#1583; &#1606;&#1608;&#1593;&#8204;&#1607;&#1575; &#1608; &#1578;&#1608;&#1575;&#1576;&#1593; &#1580;&#1583;&#1610;&#1583; &#1608; &#1580;&#1575;&#1604;&#1576; &#1576;&#1585;&#1575;&#1610;
-</span>PostgreSQL<span lang="fa">&#8204; &#1607;&#1605;&#1603;&#1575;&#1585;&#1610; &#1608; &#1605;&#1588;&#1575;&#1585;&#1603;&#1578; &#1583;&#1575;&#1588;&#1578;&#1607; &#1576;&#1575;&#1588;&#1605;</span></font><span lang="fa"><font face="Tahoma">&#1567;</font></span></H4>
-<p dir="rtl"><span lang="fa"><font face="Tahoma">&#1705;&#1583; &#1582;&#1608;&#1583; &#1585;&#1575; &#1576;&#1607; &#1711;&#1585;&#1608;&#1607; &#1662;&#1587;&#1578;&#1740; </font>
+<span lang="fa">من يك تابع نوشته‌ام. چگونه آن را در </span>psql<span lang="fa"> 
+اجرا كنم؟ چرا با اجراي آن </span>core dump<span lang="fa"> مي‌گيرم؟</span></font></H4>
+<p dir="rtl"><span lang="fa"><font face="Tahoma">دلایل مختلفی می تواند باعث بروز 
+این مشکل شود. اما قبل از همه تابع خود را به صورت جدا تست کنید.</font></span></p>
+<H4 dir="rtl"><font face="Tahoma"><A name=5.2>5.2</A>) <span lang="fa">چگونه 
+مي‌توانم در توليد نوع‌ها و توابع جديد و جالب براي
+</span>PostgreSQL<span lang="fa">‌ همكاري و مشاركت داشته باشم</span></font><span lang="fa"><font face="Tahoma">؟</font></span></H4>
+<p dir="rtl"><span lang="fa"><font face="Tahoma">کد خود را به گروه پستی </font>
 </span><font face="Tahoma"> <I>pgsql-hackers<span lang="fa">&nbsp; </span></I>
-<span lang="fa">&nbsp;&#1575;&#1585;&#1587;&#1575;&#1604; &#1705;&#1606;&#1740;&#1583;.</span></font></p>
+<span lang="fa">&nbsp;ارسال کنید.</span></font></p>
 <H4 dir="rtl"><font face="Tahoma"><A name=5.3>5.3</A>)&nbsp;
-<span lang="fa">&#1670;&#1711;&#1608;&#1606;&#1607; &#1605;&#1610;&#8204;&#1578;&#1608;&#1575;&#1606;&#1605; &#1610;&#1603; &#1578;&#1575;&#1576;&#1593; &#1576;&#1607; &#1586;&#1576;&#1575;&#1606; </span>C<span lang="fa"> &#1576;&#1606;&#1608;&#1610;&#1587;&#1605; 
-&#1603;&#1607; &#1582;&#1585;&#1608;&#1580;&#1610; &#1570;&#1606; &#1610;&#1603;</span> <span lang="fa">&#8204;</span>tuple<span lang="fa"> </span>&nbsp;<span lang="fa">(&#1670;&#1606;&#1583; 
-&#1578;&#1575;&#1610;&#1610;) &#1576;&#1575;&#1588;&#1583;&#1567;</span></font></H4>
-<P dir="rtl"><font face="Tahoma"><span lang="fa">&#1583;&#1585; &#1606;&#1587;&#1582;&#1607; &#1607;&#1575;&#1740; 7.3 &#1576;&#1607; &#1576;&#1593;&#1583; &#1740;&#1705; &#1578;&#1575;&#1576;&#1593; 
-&#1605;&#1740; &#1578;&#1608;&#1575;&#1606;&#1583; &#1740;&#1705; &#1580;&#1583;&#1608;&#1604; &#1585;&#1575; &#1576;&#1607; &#1593;&#1606;&#1608;&#1575;&#1606; &#1582;&#1585;&#1608;&#1580;&#1740; &#1576;&#1585;&#1711;&#1585;&#1583;&#1575;&#1606;&#1583;. &#1575;&#1740;&#1606; &#1608;&#1740;&#1688;&#1711;&#1740; &#1583;&#1585; &#1578;&#1608;&#1575;&#1576;&#1593;&#1740; &#1705;&#1607; &#1576;&#1607; &#1586;&#1576;&#1575;&#1606;&#1607;&#1575;&#1740;
-</span>C<span lang="fa"> &#1608; </span>PL/PgSQL<span lang="fa"> &#1606;&#1608;&#1588;&#1578;&#1607; &#1605;&#1740;&#8204;&#1588;&#1608;&#1606;&#1583; &#1576;&#1607; &#1591;&#1608;&#1585; 
-&#1705;&#1575;&#1605;&#1604; &#1608;&#1580;&#1608;&#1583; &#1583;&#1575;&#1585;&#1583;. &#1585;&#1575;&#1607;&#1606;&#1605;&#1575; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607; &#1606;&#1608;&#1740;&#1587;&#1575;&#1606; &#1585;&#1575; &#1605;&#1591;&#1575;&#1604;&#1593;&#1607; &#1705;&#1606;&#1740;&#1583;. &#1740;&#1705; &#1605;&#1579;&#1575;&#1604; &#1575;&#1586; &#1606;&#1581;&#1608;&#1607; &#1576;&#1585;&#1711;&#1585;&#1583;&#1575;&#1606;&#1583;&#1606; 
-&#1740;&#1705; &#1580;&#1583;&#1608;&#1604; &#1576;&#1607; &#1593;&#1606;&#1608;&#1575;&#1606; &#1582;&#1585;&#1608;&#1580;&#1740; &#1583;&#1585; </span><i>contrib/tablefunc</i><span lang="fa"> &#1570;&#1605;&#1583;&#1607; 
-&#1575;&#1587;&#1578;.</span></font></P>
+<span lang="fa">چگونه مي‌توانم يك تابع به زبان </span>C<span lang="fa"> بنويسم 
+كه خروجي آن يك</span> <span lang="fa">‌</span>tuple<span lang="fa"> </span>&nbsp;<span lang="fa">(چند 
+تايي) باشد؟</span></font></H4>
+<P dir="rtl"><font face="Tahoma"><span lang="fa">در نسخه های 7.3 به بعد یک تابع 
+می تواند یک جدول را به عنوان خروجی برگرداند. این ویژگی در توابعی که به زبانهای
+</span>C<span lang="fa"> و </span>PL/PgSQL<span lang="fa"> نوشته می شوند به طور 
+کامل وجود دارد. راهنما برنامه نویسان را مطالعه کنید. یک مثال از نحوه برگرداندن 
+یک جدول به عنوان خروجی در </span><i>contrib/tablefunc</i><span lang="fa"> آمده 
+است.</span></font></P>
 <H4 dir="rtl"><font face="Tahoma"><A name=5.4>5.4</A>) 
-<span lang="fa">&#1605;&#1606; &#1610;&#1603; &#1601;&#1575;&#1610;&#1604; &#1605;&#1606;&#1576;&#1593; &#1585;&#1575; &#1593;&#1608;&#1590; &#1603;&#1585;&#1583;&#1607; &#1575;&#1605; &#1670;&#1585;&#1575; &#1583;&#1585; &#1593;&#1605;&#1604;&#1610;&#1575;&#1578; &#1603;&#1575;&#1605;&#1662;&#1610;&#1604; &#1605;&#1580;&#1583;&#1583; &#1570;&#1606;&#1548; 
-&#1578;&#1594;&#1610;&#1610;&#1585; &#1583;&#1610;&#1583;&#1607; &#1606;&#1605;&#1610;&#8204;&#1588;&#1608;&#1583;&#1567;</span></font></H4>
-<P dir="rtl"><font face="Tahoma">Makefile<span lang="fa"> &#1576;&#1585;&#1575;&#1740; &#1601;&#1575;&#1740;&#1604;&#1607;&#1575;&#1740; </span>
-include<span lang="fa"> &#1588;&#1583;&#1607; &#1608;&#1575;&#1576;&#1587;&#1578;&#1711;&#1740;&#1607;&#1575; &#1585;&#1575; &#1576;&#1607; &#1583;&#1585;&#1587;&#1578;&#1740; &#1606;&#1588;&#1575;&#1606; &#1606;&#1605;&#1740; &#1583;&#1607;&#1583;. &#1576;&#1585;&#1575;&#1740; &#1575;&#1591;&#1605;&#1740;&#1606;&#1575;&#1606; &#1575;&#1586; 
-&#1575;&#1740;&#1606;&#1705;&#1607; &#1601;&#1575;&#1740;&#1604;&#1740; &#1705;&#1607; &#1593;&#1608;&#1590; &#1705;&#1585;&#1583;&#1607; &#1575;&#1740;&#1583; &#1581;&#1578;&#1605;&#1575;&#1611; &#1583;&#1608;&#1576;&#1575;&#1585;&#1607; &#1705;&#1575;&#1605;&#1662;&#1740;&#1604; &#1605;&#1740;&#8204;&#1588;&#1608;&#1583; &#1583;&#1587;&#1578;&#1608;&#1585; </span>make clean<span lang="fa"> 
-&#1585;&#1575; &#1575;&#1580;&#1585;&#1575; &#1705;&#1606;&#1740;&#1583;. &#1575;&#1711;&#1585; &#1575;&#1586; &#1705;&#1575;&#1605;&#1662;&#1740;&#1604;&#1585; </span>gcc<span lang="fa"> &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1605;&#1740; &#1705;&#1606;&#1740;&#1583; &#1605;&#1740; 
-&#1578;&#1608;&#1575;&#1606;&#1740;&#1583; &#1575;&#1586; &#1711;&#1586;&#1740;&#1606;&#1607; </span>enable-depend--<span lang="fa"> &#1583;&#1585; &#1605;&#1608;&#1602;&#1593; &#1575;&#1580;&#1585;&#1575;&#1740; &#1576;&#1585;&#1606;&#1575;&#1605;&#1607;
-</span>configure<span lang="fa"> &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1705;&#1606;&#1740;&#1583; &#1575;&#1740;&#1606; &#1711;&#1586;&#1740;&#1606;&#1607; &#1576;&#1575;&#1593;&#1579; &#1605;&#1740; &#1588;&#1608;&#1583; &#1705;&#1607; &#1608;&#1575;&#1576;&#1587;&#1578;&#1711;&#1740;&#1607;&#1575; 
-&#1576;&#1607; &#1591;&#1608;&#1585; &#1575;&#1578;&#1608;&#1605;&#1575;&#1578;&#1740;&#1705; &#1578;&#1608;&#1604;&#1740;&#1583; &#1588;&#1608;&#1583;.</span></font></P></BODY></HTML>
\ No newline at end of file
+<span lang="fa">من يك فايل منبع را عوض كرده ام چرا در عمليات كامپيل مجدد آن 
+تغيير ديده نمي‌شود؟</span></font></H4>
+<P dir="rtl"><font face="Tahoma">Makefile<span lang="fa"> برای فایلهای </span>
+include<span lang="fa"> شده وابستگیها را به درستی نشان نمی دهد. برای اطمینان از 
+اینکه فایلی که عوض کرده اید حتماً دوباره کامپیل می شود دستور </span>make clean<span lang="fa"> 
+را اجرا کنید. اگر از کامپیلر </span>gcc<span lang="fa"> استفاده می کنید می 
+توانید از گزینه </span>enable-depend--<span lang="fa"> در موقع اجرای برنامه
+</span>configure<span lang="fa"> استفاده کنید این گزینه باعث می شود که وابستگیها 
+به طور اتوماتیک تولید شود.</span></font></P></BODY></HTML>
\ No newline at end of file
diff --git a/doc/src/FAQ/FAQ_french.html b/doc/src/FAQ/FAQ_french.html
index 0436774..6764c28 100644
--- a/doc/src/FAQ/FAQ_french.html
+++ b/doc/src/FAQ/FAQ_french.html
@@ -152,7 +152,7 @@
 
     <P>PostgreSQL se prononce <I>Post-Gres-Q-L</I>. Un fichier audio est
     disponible sur <A
-    HREF="http://www.postgresql.org/postgresql.mp3">http://www.postgresql.org/postgresql.mp3</A>
+    href="http://www.postgresql.org/postgresql.mp3">http://www.postgresql.org/postgresql.mp3</A>
     pour ceux souhaitant entendre la prononciation.</P>
 
     <P>PostgreSQL est une am�lioration du syst�me de gestion de bases
@@ -173,7 +173,7 @@
     d�veloppement de PostgreSQL. C'est un projet soutenu par une
     communaut� sans �tre contr�l� par une soci�t�. Pour y contribuer,
     voir la FAQ des d�veloppeurs sur <A
-    HREF="http://www.postgresql.org/docs/faqs/FAQ_DEV.html">http://www.postgresql.org/docs/faqs/FAQ_DEV.html</A>.</P>
+    href="http://www.postgresql.org/docs/faqs/FAQ_DEV.html">http://www.postgresql.org/docs/faqs/FAQ_DEV.html</A>.</P>
 
     <P>Les auteurs de PostgreSQL 1.01 �taient Andrew Yu et Jolly Chen.
     Beaucoup d'autres personnes ont contribu� au portage, aux tests,
@@ -292,7 +292,7 @@
     PostgreSQL sur le site web de PostgreSQL&nbsp;:</P>
 
     <BLOCKQUOTE>
-      <A href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A>
+      <p><A href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A></p>
     </BLOCKQUOTE>
 
     <P>Il y a aussi un canal IRC sur Freenode et EFNet, le canal
@@ -337,7 +337,7 @@
     <H4><A name="1.9">1.9</A>) Comment savoir quels sont les bogues connus ou les fonctionnalit�s manquantes&nbsp;?</H4>
 
     <P>PostgreSQL supporte un sous-ensemble �tendu de <SMALL>SQL</SMALL>-92.
-    Voir notre liste <A href="http://developer.PostgreSQL.org/todo.php">TODO</A>
+    Voir notre liste <A href="http://www.postgresql.org/docs/faqs.TODO.html">TODO</A>
     pour les bogues connus, les fonctionnalit�s manquantes et les
     plans pour le futur.</P>
 
@@ -819,7 +819,7 @@
     l'int�gralit� de la requ�te peut �tre �valu�e, jusqu'� g�n�rer les lignes
     d�sir�es.</P>
 
-    <P>Pour faire un <SMALL>SELECT</SMALL> sur une ligne al�atoire&nbsp;:
+    <P>Pour faire un <SMALL>SELECT</SMALL> sur une ligne al�atoire&nbsp;:</P>
 <PRE>
     SELECT colonne
     FROM table
@@ -1004,7 +1004,6 @@
     <LI>La locale <I>C</I> par d�faut doit �tre utilis�e lors de
     <i>initdb</i>.</LI>
     </UL>
-    <P>
 
     <p>Dans les versions ant�rieures � la 8.0, les indexs ne peuvent souvent
     pas �tre utilis�s sauf si les types de donn�es correspondent exactement au
@@ -1398,7 +1397,7 @@ BYTEA           bytea           tableau d'octets (accepte les octets nuls)
     <P>A partir de la 7.3, vous pouvez facilement renvoyer plusieurs lignes ou
     colonnes � partir d'une fonction,
     <a href="http://techdocs.postgresql.org/guides/SetReturningFunctions">
-    http://techdocs.postgresql.org/guides/SetReturningFunctions</a>.
+    http://techdocs.postgresql.org/guides/SetReturningFunctions</a>.</P>
 
     <H4><A name="4.26">4.26</A>) Pourquoi ne puis-je pas cr�er/supprimer des
     tables temporaires dans les fonctions PL/PgSQL de fa�on stable&nbsp;?</H4>
@@ -1422,7 +1421,7 @@ BYTEA           bytea           tableau d'octets (accepte les octets nuls)
     exister dans <I>pg_hba.conf</I>, et le <I>sslmode</I> du client ne doit pas
     �tre <I>d�sactiv�e</I>. Notez qu'il est aussi possible d'utiliser un
     transport crypt� d'une troisi�me partie, tel que stunnel ou ssh, plut�t que
-    les connexions SSL natives de PostgreSQL.
+    les connexions SSL natives de PostgreSQL.</LI>
     <LI>Les mots de passe des utilisateurs sont automatiquement crypt�s depuis
     la version 7.3. Pour les versions pr�c�dentes, vous devez activer l'option
     <I>PASSWORD_ENCRYPTION</I> dans <I>postgresql.conf</I>.</LI>
diff --git a/doc/src/FAQ/FAQ_german.html b/doc/src/FAQ/FAQ_german.html
index 4d842ad..a15fb5f 100644
--- a/doc/src/FAQ/FAQ_german.html
+++ b/doc/src/FAQ/FAQ_german.html
@@ -212,7 +212,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
     <p>Eine Portierung für Novell Netware 6 gibt es unter <a href="http://forge.novell.com">http://forge.novell.com</a>.</p>
 
     <p>Für OS/2 (eComStation) gibt es eine Version hier:
-    <a href="http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F">http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F</a>
+    <a href="http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&amp;button=Search&amp;key=postgreSQL&amp;stype=all&amp;sort=type&amp;dir=%2F">http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&amp;button=Search&amp;key=postgreSQL&amp;stype=all&amp;sort=type&amp;dir=%2F</a></p>
 
     <h4><a name="1.5">1.5</a>) Woher bekomme ich PostgreSQL?</h4>
 
@@ -223,7 +223,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
     <h4><a name="1.6">1.6</a>) Wo bekomme ich Support für PostgreSQL?</h4>
 
     <p>Die zentrale (englischsprachige) Mailing-Liste ist:
-    <a href="mailto:pgsql-general@postgresql.org">mailto:pgsql-general@postgresql.org</a> .
+    <a href="mailto:pgsql-general@postgresql.org">mailto:pgsql-general@postgresql.org</a> .</p>
 
     <p>Die Liste ist Themen vorbehalten, die PostgreSQL betreffen. Die Anmeldung
     erfolgt mit einer Email an die Adresse <a href="mailto:pgsql-general-request@postgresql.org">pgsql-general-request@postgresql.org</a> mit folgenden Zeilen im Text
@@ -260,7 +260,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
 
     <p>Weitere Mailinglisten und Informationen zu PostgreSQL befinden sich auf der PostgreSQL-Homepage:</p>
 <blockquote>
-<a href="http://www.postgresql.org">http://www.postgresql.org</a>
+<p><a href="http://www.postgresql.org">http://www.postgresql.org</a></p>
 </blockquote>
     <p>Es gibt außerdem einen IRC-Channel bei EFNet und bei Freenode, Channel
     <em>#PostgreSQL</em>. Unter UNIX/Linux können Sie mit z.B.
@@ -300,7 +300,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
     <h4><a name="1.9">1.9</a>) Wie erfahre ich von bekannten Bugs oder fehlenden Features?</h4>
 
     <p>PostgreSQL unterstützt eine erweiterte Teilmenge von SQL-92. Siehe
-    unsere TODO-Liste unter <a href="http://developer.postgresql.org/todo.php">http://developer.postgresql.org/todo.php</a> für eine Auflistung 
+    unsere TODO-Liste unter <a href="http://www.postgresql.org/docs/faqs.TODO.html">http://www.postgresql.org/docs/faqs.TODO.html</a> für eine Auflistung 
     der bekannten Bugs, fehlenden Features und zukünftigen Pläne.</p>
 
     <h4><a name="1.10">1.10</a>) Wie kann ich <small>SQL</small> lernen?</h4>
@@ -341,7 +341,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
     <h4><a name="1.13">1.13</a>) Wie sende ich einen Fehlerbericht?</h4>
 
     <p>Bitte besuchen Sie die PostgreSQL-BugTool-Seite <a href="http://www.postgresql.org/bugform.html">http://www.postgresql.org/bugform.html</a>,
-    die Hinweise und Anleitungen zur Einreichung von Fehlerberichten enthält.
+    die Hinweise und Anleitungen zur Einreichung von Fehlerberichten enthält.</p>
 
     <p>Überprüfe auch den ftp-Server <a href="ftp://ftp.postgresql.org/pub/">ftp://ftp.postgresql.org/pub/</a>,
     um nachzusehen, ob es eine neuere PostgreSQL-Version oder neue Patches gibt.</p>
@@ -475,7 +475,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
     </a>) und Rekall (<a href="http://www.thekompany.com/products/rekall/">
     http://www.thekompany.com/products/rekall/</a>, GPL/proprietär). Es gibt 
     außerdem phpPgAdmin (<a href="http://phppgadmin.sourceforge.net/">
-    http://phppgadmin.sourceforge.net/ </a>), eine web-basierte Schnittstelle. 
+    http://phppgadmin.sourceforge.net/ </a>), eine web-basierte Schnittstelle. </p>
 
     <h4><a name="2.4">2.4</a>) Welche Programmiersprachen und Schnittstellen gibt es?</h4>
 
@@ -500,7 +500,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
     (Bereich <em>Drivers/Interfaces</em>) bezogen werden.
     </p>
     <hr />
-    <h2 align="center">Administrative Fragen</h2><p>
+    <h2 align="center">Administrative Fragen</h2>
 
     <h4><a name="3.1">3.1</a>) Wie installiere ich PostgreSQL woanders als in /usr/local/pgsql?</h4>
 
@@ -632,7 +632,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
 
     <p>Wenn der <em>postmaster</em> hingegen läuft, führen Sie <em>psql</em> in einem Fenster aus,
     ermitteln Sie die Prozessnummer (<small>PID</small>) des <em>postgres</em>-Prozesses, der von <em>psql</em>
-    verwendet wird (mit <pre>SELECT pg_backend_pid()</pre>). Binden Sie einen Debugger an diese <small>PID</small>
+    verwendet wird (mit <code>SELECT pg_backend_pid()</code>). Binden Sie einen Debugger an diese <small>PID</small>
     und führen Sie Abfragen von <em>psql</em> aus. Wenn Sie den postgres-Serverstart analysieren 
     wollen, setzen Sie die Umgebungsvariable <em>PGOPTIONS="-W </em>n<em>"</em>, und starten Sie 
     dann <em>psql</em>. Dies verzögert den Start um <em>n</em> Sekunden, damit Sie einen Debugger an
@@ -728,7 +728,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
     <h4><a name="4.2">4.2</a>) Wie wähle ich per <small>SELECT</small>-Anweisung nur die ersten paar
     Zeilen bzw. eine beliebige Zeile in einer Abfrage aus?</h4>
 
-    <p>Vgl. die <small>FETCH</small> Man-Page, oder benutzen Sie <small>SELECT ... LIMIT...</small> .
+    <p>Vgl. die <small>FETCH</small> Man-Page, oder benutzen Sie <small>SELECT ... LIMIT...</small> .</p>
 
     <p>Selbst wenn Sie nur die ersten paar Zeilen einer Tabelle abfragen möchten,
     muß unter Umständen die komplette Abfrage abgearbeitet werden. Ziehen Sie also
@@ -1123,7 +1123,7 @@ BYTEA         bytea           Bytearray mit variabler Länge (auch für
     durch Block und Offset Werte zu identifizieren. T<small>ID</small>s
     verändern sich, sobald Zeilen verändert oder zurückgeladen werden. Sie
     werden in Indexeinträgen benutzt um auf die physikalischen Zeilen zu
-    zeigen.
+    zeigen.</p>
 
     <h4><a name="4.16">4.16</a>) Welche Bedeutung haben die verschiedenen Ausdrücke, die in
     PostgreSQL benutzt werden (z.B. attribute, class,...)?</h4>
diff --git a/doc/src/FAQ/FAQ_polish.html b/doc/src/FAQ/FAQ_polish.html
index a92b90d..f61e6fe 100644
--- a/doc/src/FAQ/FAQ_polish.html
+++ b/doc/src/FAQ/FAQ_polish.html
@@ -237,7 +237,7 @@
 
     <P>Tekst powy�ej, jest klasyczn� licencj� BSD.
     Nie posiada ona �adnych restrykcji co do u�ywania kodu �r�d�owego.
-	 Podoba nam si� i nie zamierzamy jej zmienia�.
+	 Podoba nam si� i nie zamierzamy jej zmienia�.</P>
 
     <H4><A name="1.3">1.3</A>) Na jakich systemach Unixowych dzia�a
 	      PostreSQL?</H4>
@@ -266,7 +266,7 @@
     <P>Serwer mo�e by� uruchamiany na Windows NT i Win2k u�ywaj�c
 	 bibliotek Cygwin, Cygnus Unix/NT. W pliku <I>pgsql/doc/FAQ_MSWIN</I>
 	 znajduj�cym si� w �r�d�ach lub pod adresem: <A href=
-    "http://www.postgresql.org/docs/faqs/text/FAQ_MSWIN">http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN</A> na naszych stronach.<P>
+    "http://www.postgresql.org/docs/faqs/text/FAQ_MSWIN">http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN</A> na naszych stronach.</P><P>
 	 Obecnie prowadzone s� prace nad stworzeniem wersji dla MS Win
 	 NT/200/XP. Je�li chcesz si� dowiedzie� o obecnym statusie tych prac
 	 zobacz <A
@@ -283,7 +283,7 @@
 
     <P>G��wny serwer ftp z dost�pem "anonymous" dla PostgreSQL znajduje
 	 si� <A href="ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub</A>.
-	 je�li szukasz mirror�w sprawd� nasz� g��wn� stron� www.<P>
+	 je�li szukasz mirror�w sprawd� nasz� g��wn� stron� www.</P>
 
     <H4><A name="1.6">1.6</A>) Gdzie mo�na szuka� wsparcia technicznego?</H4>
 
@@ -334,7 +334,7 @@
 	 mo�na znale�� na stronach WWW PostgreSQL pod adresem:</P>
 
     <BLOCKQUOTE>
-      <A href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A>
+      <P><A href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A></P>
     </BLOCKQUOTE>
 
     <P>W sieci EFNet istnieje kana� IRC <I>#PostgreSQL</I>. Ja, do
@@ -381,7 +381,7 @@
 	      b��dach czy brakuj�cych rozwi�zanich?</H4>
 
     <P>PostgreSQL wspiera rozszerzony podzbi�r standardu <SMALL>SQL</SMALL>-92.
-    Sprawd� nasz� list� <A href="http://developer.PostgreSQL.org/todo.php">TODO</A>
+    Sprawd� nasz� list� <A href="http://www.postgresql.org/docs/faqs.TODO.html">TODO</A>
     aby znale�� informacj� o znanych problemach, brakuj�cych
 	 rozwi�zaniach czy przysz�ych planach.</P>
 
@@ -599,7 +599,7 @@
 	</P>
 	<P>
 	Wi�cej informacji na ten temat znajduje si� pod adresem See
-	<A href="http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools</A>.
+	<A href="http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools</A>.</P>
 	 
 	 <H4><A name="2.4">2.4</A>) Za pomoc� jakich j�zyk�w programowania
 	 mo�na si� komunikowa� z PostgreSQL?</H4>
@@ -882,14 +882,13 @@
 	 pierwszych rz�d�w, by� mo�e b�dzie konieczno�� wykonania zapytania do
 	 momentu a� zostan� znalezione po��dane wyniki.</P>
 	 <P>
-	 Aby otrzyma� losowy rz�d, u�yj:
+	 Aby otrzyma� losowy rz�d, u�yj:</P>
 	 <PRE>
     SELECT col
     FROM tab
     ORDER BY random()
     LIMIT 1;
 	 </PRE>
-	</P>
 
     <H4><A name="4.3">4.3</A>) Jak mog� uzyska� list� wszystkich tabel
 	 czy  innych rzeczy pod <I>psql</I>?</H4>
@@ -926,7 +925,6 @@
    ALTER TABLE tab DROP COLUMN old_col;
    COMMIT;
 	</PRE>
-	</P>
 
     <H4><A name="4.5">4.5</A>) Jaki jest maksymalny rozmiar dla rz�du,
 	      tabeli i bazy danych?</H4>
@@ -1034,7 +1032,7 @@
 	 przy wykonywaniu z��cze� (join). Sekwencyjne przeszukiwanie po kt�rym
 	 nast�puje sortowanie jest zazwyczaj szybsze ni� wyszukiwanie za
 	 pomoc� indeksu na du�ej tabeli.</P>
-	 Jakkolwiek <SMALL>LIMIT</SMALL> w po��czeniu z <SMALL>ORDER BY</SMALL>
+	 <P>Jakkolwiek <SMALL>LIMIT</SMALL> w po��czeniu z <SMALL>ORDER BY</SMALL>
 	cz�sto b�dzie wykorzystywa� indeksy poniewa� jedynie ma�a cz�� z
 	tabeli jest zwracana. W rzeczywisto�ci, chocia� MAX() i MIN() nie
 	u�ywaj� indeks�w, mo�liwe jest aby zwr�ci� te warto�ci u�ywaj�c
@@ -1049,7 +1047,7 @@
 	<P>
 	Je�li uwa�asz, �e optimizer myli si� wybieraj�c sequential scan, u�yj
 	SET enable_seqscan TO 'off' i uruchom testy aby sprawdzi� czy wtym
-	wypadku zapytanie b�dzie szybciej wykonywane.
+	wypadku zapytanie b�dzie szybciej wykonywane.</P>
 
     <P>Kiedy u�ywa si� operator�w dopasuj�cych takich jak
 	 <SMALL>LIKE</SMALL> lub <I>~</I>, indeksy b�d� u�ywane jedynie w
@@ -1057,16 +1055,16 @@
 	 <UL>
 	 <LI>Pocz�tek wyszukiwania jest oparty na pocz�tku �a�cucha tekstu.
 	 <UL>
-	 	<LI>wzorce <SMALL>LIKE</SMALL> nie mog� si� zaczyna� <I>%</I>
+	 	<LI>wzorce <SMALL>LIKE</SMALL> nie mog� si� zaczyna� <I>%</I></LI>
 		<LI>dopasowania operatorem <I>~</I> (dopasowania regularne)
-		musz� si� zaczyna� znakiem specjalnym <I>^</I>.</P>
-	 </UL>
+		musz� si� zaczyna� znakiem specjalnym <I>^</I>.</LI>
+	 </UL></LI>
 	 <LI>Pocz�tek wyszukiwania nie mo�e si� zaczyna� od klas znak�w, np.
-	 [a-e].
+	 [a-e].</LI>
 	 <LI>Case-insensitive searches such as ILIKE and ~* do not utilise
 	 indexes. Instead, use functional indexes, which are described in
-	 section 4.12.
-	 <LI>Standardowe locale C musi by� uzyte przy wykonywaniu initdb
+	 section 4.12.</LI>
+	 <LI>Standardowe locale C musi by� uzyte przy wykonywaniu initdb</LI>
 	 </UL>
     <H4><A name="4.9">4.9</A>) Jak mog� sprawdzi� w jakis spos�b "query
 	 optimizer" wykonuje moje zapytanie?</H4>
@@ -1165,7 +1163,7 @@ BYTEA           bytea              zmiennej d
 	 przechowywane out-of-line jako <SMALL>TOAST</SMALL>, wi�c faktyczne
 	 zu�ycie miejsca na dysku mo�e by� mniejsze ni� oczekiwane.</P>
 
-	 <SMALL>VARCHAR(n)</SMALL> jest
+	<P> <SMALL>VARCHAR(n)</SMALL> jest
 	 najodpowiedniejszy do przechowywania �a�cuch�w o r�nej d�ugo�ci
 	 ale okre�la on maksymaln� jego d�ugo��. 
 	 
@@ -1344,7 +1342,7 @@ BYTEA           bytea              zmiennej d
 
     <P>List� termin�w zwi�zanych z bazami danych mo�esz znale�� pod tym
 	 adresem:<A
-	 href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html">http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html</A>.
+	 href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html">http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html</A>.</P>
 
     <H4><A name="4.18">4.18</A>) Sk�d bierze si� ten b��d <I>"ERROR:
 	 Memory exhausted in AllocSetAlloc()"</I>?</H4>
@@ -1488,7 +1486,7 @@ BYTEA           bytea              zmiennej d
 	      kolumn?</H4>
 
      <P>Mo�esz w �atwy spos�b zwraca� wiele rz�d�w lub kolumn u�ywaj�c
-	  funkcji z: <A HREF="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</A>.
+	  funkcji z: <A href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</A>.</P>
      
 	<H4><A name="4.26">4.26</A>) Dlaczego nie mog� w spos�b pewny
 	     tworzy�/usuwa� tabel tymczasowych w funkcjach PL/PgSQL?</H4>
@@ -1503,38 +1501,36 @@ BYTEA           bytea              zmiennej d
 	funkcji.
 	</P>
 	
-	<H4><A name="4.27">4.27) Jakie s� mo�liwo�ci replikacji w PostgreSQL?</H4>
+	<H4><A name="4.27">4.27</A>) Jakie s� mo�liwo�ci replikacji w PostgreSQL?</H4>
 	<P>
 	Jest kilka opcji aby stosowa� replikacj� typu master/slave. Ten typ
 	pozwala jedynie masterowi na dokonywanie zmian w bazie danych, a
 	slave mo�e jedynie te zmiany odczytywa�. Na stronie 
 	<A
-	HREF="http://gborg.PostgreSQL.org/genpage?replication_research">http://gborg.PostgreSQL.org/genpage?replication_research</A>
+	href="http://gborg.PostgreSQL.org/genpage?replication_research">http://gborg.PostgreSQL.org/genpage?replication_research</A>
 	znajduje si� ich lista. Replikacja typu multi-master jest w trakcie
 	prac, opis projektu znajduje si� pod adresem: <A
-	HREF="http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php">
+	href="http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php">
 http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php</A>.
 	</P>
 
-	<H4><A name="4.28">4.28) Jakie mo�liwo�ci szyfrowania oferuje
+	<H4><A name="4.28">4.28</A>) Jakie mo�liwo�ci szyfrowania oferuje
 	PostgreSQL?</H4>
-	<P>
 	<UL>
 	<LI>contrib/pgcrypto zawiera wiele funkcji za pomoc�, kt�rych mo�emy u�ywa�
-	kryptografii w zapytaniach SQL.
+	kryptografii w zapytaniach SQL.</LI>
 	<LI>Aby szyfrowa� transmisj� od klienta do serwera, ten musi mie�
 	ustawion� opcj� ssl na true w pliku postgresql.conf, odpowiedni
 	wpis host lub hostssl musi wyst�powa� w pliku pg_hba.conf, oraz
 	sslmode nie mo�e by� wy��czone w kliencie. (Warto zwr�ci� uwag�, �e
 	mo�liwe jest tak�e u�ywanie transport�w szyfruj�c�w przez strony
 	trzecie, takie jak stunnel lub ssh, poza natywnym wsparciem dla SSL
-	przez PostgreSQL).
+	przez PostgreSQL).</LI>
 	<LI>Has�a u�ytkownik�w bazy danych s� automatycznie szyfrowane od
 	wersji 7.3. W poprzednich wersjach, nale�y t� funkcjonalno�� poprzez
-	w��czenie opcji PASSWORD_ENCRYPTION w postgresql.conf. 
-	<LI>Serwer mo�e dzia�a� u�ywaj�c szyfrowanego systemu plik�w.
+	w��czenie opcji PASSWORD_ENCRYPTION w postgresql.conf. </LI>
+	<LI>Serwer mo�e dzia�a� u�ywaj�c szyfrowanego systemu plik�w.</LI>
 	</UL>
-</P>
 
     <H2 align="center">Rozwijanie PostgreSQL</H2>
 
diff --git a/doc/src/FAQ/FAQ_turkish.html b/doc/src/FAQ/FAQ_turkish.html
index e0921f6..ac31a57 100644
--- a/doc/src/FAQ/FAQ_turkish.html
+++ b/doc/src/FAQ/FAQ_turkish.html
@@ -111,7 +111,7 @@ adreslerinde g
 	<a href="#4.18">4.18</a>) Neden "<code>ERROR: Memory exhausted in AllocSetAlloc()</code>"
 	hatas�n� al�yorum?<br>
 	<a href="#4.19">4.19</a>) Hangi PostgreSQL s�r�m�n� �al�st�rd���m� nas�l g�rebilirim?<br>
-	<a href="#4.20">4.20</a>) Neden <i>large-object</i> i�lemlerim, "</code>invalid large
+	<a href="#4.20">4.20</a>) Neden <i>large-object</i> i�lemlerim, "<code>invalid large
 	obj descriptor</code>" hatas�n� veriyor?<br>
 	<a href="#4.21">4.21</a>) �u andaki zaman� �ntan�ml� de�er olarak kabul
 	eden kolonu nas�l yarat�r�m?<br>
@@ -190,7 +190,7 @@ adreslerinde g
 	        <P>PostgreSQL 8.0 s�r�m� ile , PostgreSQL art�k Win2000, WinXP ve Win2003 gibi Microsoft 
 		Windows NT tabanl� i�letim sistemlerinde do�al olarak �al��maya ba�lam��t�r. Paketlenmi� bir
 		kurulum program�, <a href="http://pgfoundry.org/projects/pginstaller">http://pgfoundry.org/projects/pginstaller</a>. adresinden 
-		indirilebilir.
+		indirilebilir.</P>
 
 		<p>Ayr�ca, http://forge.novell.com adresinde Novell Netware 6 portu bulunmaktad�r.</p>
 		
@@ -218,7 +218,7 @@ adreslerinde g
 		<pre>subscribe<br>end</pre>
 		<p>yazan bir e-posta atman�z yeterli olacakt�r.</p>
 		<p>Bunun d���ndaki e-posta listelerine ve PostgreSQL hakk�nda bilgiye, PostgreSQL WWW 
-		ana sayfas�ndan ulasabilirsiniz: <i><a href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</a></i><p>
+		ana sayfas�ndan ulasabilirsiniz: <i><a href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</a></i></p>
 		<p>Ayn� zamanda, EFNet �zerinde, <code>#PostgreSQL</code> adl� bir IRC kanal�
 		bulunmaktad�r. Bunun i�in, <code>irc -c '#PostgreSQL' "$USER" irc.phoenix.net</code>
 		Unix komutunu kullanabilirsiniz.</p>
@@ -235,7 +235,7 @@ adreslerinde g
 		<code>/doc</code> dizinine bak�n�z. Ayr�ca, bu el kitap��klar�n� online olarak
 		<i><a href="http://www.PostgreSQL.org/docs/">http://www.PostgreSQL.org/docs/</a></i> adresinden inceleyebilirsiniz.</p>
 		<p><i><a href="http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</a></i>
-		ve <i><a href="http://www.commandprompt.com/ppbook">http://www.commandprompt.com/ppbook<a></i>
+		ve <i><a href="http://www.commandprompt.com/ppbook">http://www.commandprompt.com/ppbook</a></i>
 		adreslerinde PostgreSQL kitaplar� bulunmaktad�r. PostgreSQL kitablar�n�n listesine, 
 		<i><a href="http://www.ca.PostgreSQL.org/books/">http://www.ca.PostgreSQL.org/books/</a></i> adresinden ula�aiblirsiniz.
 		Ayr�ca, PostgreSQL konusundaki teknik makalelere de
@@ -288,7 +288,7 @@ adreslerinde g
 		<h4><a name="1.14">1.14</a>) PostgreSQL, diger DBMS'lerle nas�l kar��last�r�labilir?</h4>
 		<p>Bir yaz�l�m�n g�c�n� �l�mek i�in �e�itli yollar vard�r: Yaz�l�m�n �zellikleri, 
 		ba�ar�m�, g�venilirli�i, deste�i ve �creti.</p>
-		<p>�zellikler:<p>
+		<p>�zellikler:</p>
 		<p>PostgreSQL mevcut b�y�k ticari veritabanlar�n�n, <i>transaction</i>,
 		<i>subselect</i>, <i>trigger</i>, <i>view</i>, <i>foreign key referential integrity</i>
 		ve <i>sophisticated locking</i> gibi (<i>user-defined types</i>), <i>rules</i>,
@@ -355,7 +355,7 @@ adreslerinde g
 		<p><i><a href="http://www.webreview.com/">http://www.webreview.com/</a></i> adresinde,
 		arka planda veritaban� �al�st�ran Web sayfalar� i�in giri� seviyesinde bilgi bulunmaktad�r.</p>
 		<p>Web ile b�t�nle�me i�in, PHP (<i><a href="http://www.php.net/"></a></i>)
-		m�kemmel bir arabirim sunar.<p>
+		m�kemmel bir arabirim sunar.</p>
 		<p>Karma��k sorunlar i�in, �o�u kisi Perl arabirimini ve CGI.pm ya da mod_perl kullan�r.</p>
 		
 		<h4><a name="2.3">2.3</a>) PostgreSQL'in grafik kullan�c� arabirimi var m�d�r?</h4>
@@ -466,7 +466,7 @@ adreslerinde g
 		<p>Postmaster ve postgres �e�itli hata ay�klama se�eneklerine sahiptir. �ncelikle,
 		postmaster'� ba�latt���n�zda, standart ��kt�y� ve hatalar� bir log dosyas�na 
 		y�nlendirdi�inize emin olun:</p>
-		<pre>cd /usr/local/pgsql<br>./bin/postmaster >server.log 2>&1 &</pre>
+		<pre>cd /usr/local/pgsql<br>./bin/postmaster >server.log 2>&amp;1 &amp;</pre>
 		<p>Bu i�lem PostgreSQL ana dizinine <code>server.log</code> dosyas� yerle�tirecektir.
 		Bu dosya sunucunun ya�ad��� sorunlar ya da hatalar hakk�nda yararl� bilgiler i�erir.
 		<code>-d</code> se�ene�i, hata ay�klama seviyesini belirten bir rakam ile kullan�l�r.
@@ -497,7 +497,7 @@ adreslerinde g
 		de�eri ile ya da <code>postgresql.conf</code> dosyas�n� d�zenleyerek yeniden
 		ba�latmakla artt�rabilirsiniz.</p>
 		<p>E�er <code>-N</code> de�erini 32'den b�y�k yapacaksan�z, ayn� zamanda
-		<code>-B</code> de�erini de de�i�tirmeniz gerekti�ini unutmay�n. </code>-B</code>,
+		<code>-B</code> de�erini de de�i�tirmeniz gerekti�ini unutmay�n. <code>-B</code>,
 		<code>-N</code>'nin en az 2 kat� kadar olmal�d�r; daha iyi ba�ar�m i�in bu say�y� daha
 		da artt�rmal�s�n�z. Y�ksek say�daki <i>backend</i> s�re�leri i�in, �e�itli �ekirdek
 		yap�land�rma parametrelerini artt�rman�z gerekecektir. Yap�lmas� gerekenler,
@@ -554,7 +554,7 @@ adreslerinde g
 		<code>LIMIT</code> ... kullan�n�z.</p>
 		<p>�lk birka� sat�r� almak isteseniz bile, t�m sorgu de�erlendirilmek durumunda kal�nabilir. ORDER 
  		BY i�eren bir sorgu d���n�n. E�er ORDER BY i�e e�le�en bir index varsa, PostgreSQL istenen ilk birka�  
-		sat�r� i�leyebilir, ya da t�m sorgu istenen sat�rlar �retilene kadar i�lenebilir. </b></p>
+		sat�r� i�leyebilir, ya da t�m sorgu istenen sat�rlar �retilene kadar i�lenebilir. </p>
 		
 		<h4><a name="4.3">4.3</a>) psql'in i�inde g�rd�g�m tablolar�n ya da di�er
 		�eylerin listesini nas�l alabilirim?</h4>
@@ -786,7 +786,7 @@ CREATE UNIQUE INDEX person_id_key ON person ( id );
     execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");</pre>
 
 	<P>Di�er sorgular i�in new_id'de yeni de�erin saklanmas� gerekir. Otomatik olarak yarat�lan SEQUENE nesnesinin ad�,
-  <tablo ad�>_<serial kolonu ad�>_seq �eklinde olacakt�r (< > i�aretleri olmadan).</p>
+  &lt;tablo ad�&gt;_&lt;serial kolonu ad�&gt;_seq �eklinde olacakt�r (&lt; &gt; i�aretleri olmadan).</p>
 
 		<p>Alternatif olarak, atanm�� SERIAL de�erini, de�er girildikten sonra currval()
 		fonksiyonu ile alabilirsiniz:</p>
diff --git a/doc/src/sgml/client-auth.sgml b/doc/src/sgml/client-auth.sgml
index db10b77..81aa50e 100644
--- a/doc/src/sgml/client-auth.sgml
+++ b/doc/src/sgml/client-auth.sgml
@@ -575,9 +575,8 @@ local   db1,db2,@demodbs  all                         md5
     The password-based authentication methods are <literal>md5</>,
     <literal>crypt</>, and <literal>password</>. These methods operate
     similarly except for the way that the password is sent across the
-    connection.  But only <literal>md5</> supports encrypted
-    passwords stored in <structname>pg_shadow</structname>;
-    the other two require unencrypted passwords to be stored there.
+    connection.  However, <literal>crypt</> does not allow encrypted
+    passwords to be stored in <structname>pg_shadow</structname>.
    </para>
 
    <para>
@@ -709,7 +708,7 @@ local   db1,db2,@demodbs  all                         md5
 
    <para>
     The ident authentication method works by obtaining the client's
-    operating system user name and determining the allowed database
+    operating system user name, then determining the allowed database
     user names using a map file that lists the permitted
     corresponding pairs of names.  The determination of the client's
     user name is the security-critical point, and it works differently
@@ -752,6 +751,15 @@ local   db1,db2,@demodbs  all                         md5
      </para>
     </blockquote>
    </para>
+
+   <para>
+    Some ident servers have a nonstandard option that causes the returned
+    user name to be encrypted, using a key that only the originating
+    machine's administrator knows.  This option <emphasis>must not</> be
+    used when using the ident server with <productname>PostgreSQL</>,
+    since <productname>PostgreSQL</> does not have any way to decrypt the
+    returned string to determine the actual user name.
+   </para>
    </sect3>
 
    <sect3>
@@ -874,11 +882,13 @@ omicron       bryanh            guest1
     default PAM service name is <literal>postgresql</literal>. You can
     optionally supply your own service name after the <literal>pam</>
     key word in the file <filename>pg_hba.conf</filename>.
-    For more information about PAM, please read the <ulink
-    url="http://www.kernel.org/pub/linux/libs/pam/"><productname>Linux-PAM</>
-    Page</ulink> and the <ulink
-    url="http://www.sun.com/software/solaris/pam/"><systemitem
-    class="osname">Solaris</> PAM Page</ulink>.
+    PAM is used only to validate username/password pairs.
+    Therefore the user must already exist in the database before PAM
+    can be used for authentication.  For more information about 
+    PAM, please read the <ulink url="http://www.kernel.org/pub/linux/libs/pam/">
+    <productname>Linux-PAM</> Page</ulink>
+    and the <ulink url="http://www.sun.com/software/solaris/pam/">
+    <systemitem class="osname">Solaris</> PAM Page</ulink>.
    </para>
   </sect2>
  </sect1>
@@ -892,9 +902,9 @@ omicron       bryanh            guest1
    </para>
 
    <para>
-<ProgramListing>
+<programlisting>
 FATAL:  no pg_hba.conf entry for host "123.123.123.123", user "andym", database "testdb"
-</ProgramListing>
+</programlisting>
     This is what you are most likely to get if you succeed in contacting
     the server, but it does not want to talk to you. As the message
     suggests, the server refused the connection request because it found
@@ -903,9 +913,9 @@ FATAL:  no pg_hba.conf entry for host "123.123.123.123", user "andym", database
    </para>
 
    <para>
-<ProgramListing>
+<programlisting>
 FATAL:  Password authentication failed for user "andym"
-</ProgramListing>
+</programlisting>
     Messages like this indicate that you contacted the server, and it is
     willing to talk to you, but not until you pass the authorization
     method specified in the <filename>pg_hba.conf</filename> file. Check
@@ -915,16 +925,16 @@ FATAL:  Password authentication failed for user "andym"
    </para>
 
    <para>
-<ProgramListing>
+<programlisting>
 FATAL:  user "andym" does not exist
-</ProgramListing>
+</programlisting>
     The indicated user name was not found.
    </para>
 
    <para>
-<ProgramListing>
+<programlisting>
 FATAL:  database "testdb" does not exist
-</ProgramListing>
+</programlisting>
     The database you are trying to connect to does not exist. Note that
     if you do not specify a database name, it defaults to the database
     user name, which may or may not be the right thing.
diff --git a/doc/src/sgml/contacts.sgml b/doc/src/sgml/contacts.sgml
index e20698f..b4a5c5f 100644
--- a/doc/src/sgml/contacts.sgml
+++ b/doc/src/sgml/contacts.sgml
@@ -1,35 +1,35 @@
-<Appendix Label="B" Id="contacts">
-<Title>Contacts</Title>
+<appendix label="B" id="contacts">
+<title>Contacts</title>
 
 <!--
-<Para>
+<para>
 Support for <productname>PostgreSQL</productname> comes primarily from
 this printed documentation, the web-based mailing list archives,
 and the mailing lists themselves.
-</Para>
+</para>
 
-<Sect1 id="mailing-list">
-<Title>Mailing Lists</Title>
+<sect1 id="mailing-list">
+<title>Mailing Lists</title>
 
-<Para>
+<para>
 Refer to the introduction in this manual or to the
 <ulink url="http://www.postgresql.org"><productname>PostgreSQL</productname> web page</ulink>
  for subscription information to the no-cost mailing lists.
-</Para>
+</para>
 
-<Sect1 id="people">
-<Title>People</Title>
+<sect1 id="people">
+<title>People</title>
 -->
 
-<Para>
-<ItemizedList Mark="bullet" Spacing="compact">
-<ListItem>
-<Para>
-<ULink url="lockhart@fourpalms.org">Thomas Lockhart</ULink>
+<para>
+<itemizedlist mark="bullet" spacing="compact">
+<listitem>
+<para>
+<ulink url="lockhart@fourpalms.org">Thomas Lockhart</ulink>
  works on SQL standards compliance and documentation.
-</Para>
-</ListItem>
-</ItemizedList>
-</Para>
+</para>
+</listitem>
+</itemizedlist>
+</para>
 
-</Appendix>
+</appendix>
diff --git a/doc/src/sgml/ddl.sgml b/doc/src/sgml/ddl.sgml
index 4fa5526..cad982e 100644
--- a/doc/src/sgml/ddl.sgml
+++ b/doc/src/sgml/ddl.sgml
@@ -275,7 +275,7 @@ CREATE TABLE products (
 CREATE TABLE products (
     product_no integer,
     name text,
-    price numeric <emphasis>CHECK (price > 0)</emphasis>
+    price numeric <emphasis>CHECK (price &gt; 0)</emphasis>
 );
 </programlisting>
    </para>
@@ -303,7 +303,7 @@ CREATE TABLE products (
 CREATE TABLE products (
     product_no integer,
     name text,
-    price numeric <emphasis>CONSTRAINT positive_price</emphasis> CHECK (price > 0)
+    price numeric <emphasis>CONSTRAINT positive_price</emphasis> CHECK (price &gt; 0)
 );
 </programlisting>
     So, to specify a named constraint, use the key word
@@ -320,9 +320,9 @@ CREATE TABLE products (
 CREATE TABLE products (
     product_no integer,
     name text,
-    price numeric CHECK (price > 0),
-    discounted_price numeric CHECK (discounted_price > 0),
-    <emphasis>CHECK (price > discounted_price)</emphasis>
+    price numeric CHECK (price &gt; 0),
+    discounted_price numeric CHECK (discounted_price &gt; 0),
+    <emphasis>CHECK (price &gt; discounted_price)</emphasis>
 );
 </programlisting>
    </para>
@@ -350,10 +350,10 @@ CREATE TABLE products (
     product_no integer,
     name text,
     price numeric,
-    CHECK (price > 0),
+    CHECK (price &gt; 0),
     discounted_price numeric,
-    CHECK (discounted_price > 0),
-    CHECK (price > discounted_price)
+    CHECK (discounted_price &gt; 0),
+    CHECK (price &gt; discounted_price)
 );
 </programlisting>
     or even
@@ -361,9 +361,9 @@ CREATE TABLE products (
 CREATE TABLE products (
     product_no integer,
     name text,
-    price numeric CHECK (price > 0),
+    price numeric CHECK (price &gt; 0),
     discounted_price numeric,
-    CHECK (discounted_price > 0 AND price > discounted_price)
+    CHECK (discounted_price &gt; 0 AND price &gt; discounted_price)
 );
 </programlisting>
     It's a matter of taste.
@@ -377,10 +377,10 @@ CREATE TABLE products (
     product_no integer,
     name text,
     price numeric,
-    CHECK (price > 0),
+    CHECK (price &gt; 0),
     discounted_price numeric,
-    CHECK (discounted_price > 0),
-    <emphasis>CONSTRAINT valid_discount</> CHECK (price > discounted_price)
+    CHECK (discounted_price &gt; 0),
+    <emphasis>CONSTRAINT valid_discount</> CHECK (price &gt; discounted_price)
 );
 </programlisting>
    </para>
@@ -442,7 +442,7 @@ CREATE TABLE products (
 CREATE TABLE products (
     product_no integer NOT NULL,
     name text NOT NULL,
-    price numeric NOT NULL CHECK (price > 0)
+    price numeric NOT NULL CHECK (price &gt; 0)
 );
 </programlisting>
     The order doesn't matter.  It does not necessarily determine in which
diff --git a/doc/src/sgml/dfunc.sgml b/doc/src/sgml/dfunc.sgml
index 5628a68..cbd23e6 100644
--- a/doc/src/sgml/dfunc.sgml
+++ b/doc/src/sgml/dfunc.sgml
@@ -307,7 +307,7 @@ cc <other flags> -c foo.c
 You must then create a symbol \*(lqexports\*(rq file for the object
 file:
 .nf
-mkldexport foo.o `pwd` > foo.exp
+mkldexport foo.o `pwd` &gt; foo.exp
 .fi
 Finally, you can create the shared library:
 .nf
diff --git a/doc/src/sgml/dml.sgml b/doc/src/sgml/dml.sgml
index 5bcbc3d..d0c8ca2 100644
--- a/doc/src/sgml/dml.sgml
+++ b/doc/src/sgml/dml.sgml
@@ -191,7 +191,7 @@ UPDATE products SET price = price * 1.10;
    <literal>UPDATE</literal> command by listing more than one
    assignment in the <literal>SET</literal> clause.  For example:
 <programlisting>
-UPDATE mytable SET a = 5, b = 3, c = 1 WHERE a > 0;
+UPDATE mytable SET a = 5, b = 3, c = 1 WHERE a &gt; 0;
 </programlisting>
   </para>
  </sect1>
diff --git a/doc/src/sgml/docguide.sgml b/doc/src/sgml/docguide.sgml
index 39ab202..0666d5f 100644
--- a/doc/src/sgml/docguide.sgml
+++ b/doc/src/sgml/docguide.sgml
@@ -419,7 +419,7 @@ perl -pi -e 's/iso-(.*).gml/ISO\1/g' docbook.cat
      <filename>/usr/local/share/sgml/catalog</filename> can also be
      made:
 <programlisting>
-CATALOG "docbook-dsssl-1.<replaceable>xx</>/catalog
+CATALOG "docbook-dsssl-1.<replaceable>xx</>/catalog"
 </programlisting>
      Because stylesheets change rather often, and it's sometimes
      beneficial to try out alternative versions,
diff --git a/doc/src/sgml/ecpg.sgml b/doc/src/sgml/ecpg.sgml
index 7e23c6f..4c393ce 100644
--- a/doc/src/sgml/ecpg.sgml
+++ b/doc/src/sgml/ecpg.sgml
@@ -446,7 +446,7 @@ char  foo[16], bar[16];
    </para>
 
    <para>
-    The declarations are also echoed to the output file as a normal C
+    The declarations are also echoed to the output file as normal C
     variables, so there's no need to declare them again.  Variables
     that are not intended to be used in SQL commands can be declared
     normally outside these special sections.
@@ -627,7 +627,7 @@ EXEC SQL EXECUTE mystmt USING 42, 'foobar';
    <literal>INTO</literal> clause:
 <programlisting>
 EXEC SQL BEGIN DECLARE SECTION;
-const char *stmt = "SELECT a, b, c FROM test1 WHERE a > ?";
+const char *stmt = "SELECT a, b, c FROM test1 WHERE a &gt; ?";
 int v1, v2;
 VARCHAR v3;
 EXEC SQL END DECLARE SECTION;
diff --git a/doc/src/sgml/geqo.sgml b/doc/src/sgml/geqo.sgml
index 66f21cc..c8f9f47 100644
--- a/doc/src/sgml/geqo.sgml
+++ b/doc/src/sgml/geqo.sgml
@@ -147,7 +147,7 @@ Genetic Optimizer
 
 <literallayout class="monospaced">
 +=========================================+
-|>>>>>>>>>>>  Algorithm GA  <<<<<<<<<<<<<<|
+|&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;  Algorithm GA  &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;|
 +=========================================+
 | INITIALIZE t := 0                       |
 +=========================================+
diff --git a/doc/src/sgml/indexcost.sgml b/doc/src/sgml/indexcost.sgml
index 1fd872c..0409e72 100644
--- a/doc/src/sgml/indexcost.sgml
+++ b/doc/src/sgml/indexcost.sgml
@@ -205,7 +205,7 @@ amcostestimate (Query *root,
 
      <programlisting>
 *indexSelectivity = clauselist_selectivity(root, indexQuals,
-                                           rel->relid, JOIN_INNER);
+                                           rel-&gt;relid, JOIN_INNER);
      </programlisting>
     </para>
    </step>
diff --git a/doc/src/sgml/indices.sgml b/doc/src/sgml/indices.sgml
index 27879bf..5346958 100644
--- a/doc/src/sgml/indices.sgml
+++ b/doc/src/sgml/indices.sgml
@@ -563,7 +563,7 @@ CREATE TABLE access_log (
     such as this:
 <programlisting>
 CREATE INDEX access_log_client_ip_ix ON access_log (client_ip)
-    WHERE NOT (client_ip > inet '192.168.100.0' AND client_ip < inet '192.168.100.255');
+    WHERE NOT (client_ip &gt; inet '192.168.100.0' AND client_ip &lt; inet '192.168.100.255');
 </programlisting>
    </para>
 
@@ -617,12 +617,12 @@ CREATE INDEX orders_unbilled_index ON orders (order_nr)
    <para>
     A possible query to use this index would be
 <programlisting>
-SELECT * FROM orders WHERE billed is not true AND order_nr < 10000;
+SELECT * FROM orders WHERE billed is not true AND order_nr &lt; 10000;
 </programlisting>
     However, the index can also be used in queries that do not involve
     <structfield>order_nr</> at all, e.g.,
 <programlisting>
-SELECT * FROM orders WHERE billed is not true AND amount > 5000.00;
+SELECT * FROM orders WHERE billed is not true AND amount &gt; 5000.00;
 </programlisting>
     This is not as efficient as a partial index on the
     <structfield>amount</> column would be, since the system has to
diff --git a/doc/src/sgml/plhandler.sgml b/doc/src/sgml/plhandler.sgml
index 61d4b7c..37195ba 100644
--- a/doc/src/sgml/plhandler.sgml
+++ b/doc/src/sgml/plhandler.sgml
@@ -121,7 +121,7 @@ plsample_call_handler(PG_FUNCTION_ARGS)
         /*
          * Called as a trigger procedure
          */
-        TriggerData    *trigdata = (TriggerData *) fcinfo->context;
+        TriggerData    *trigdata = (TriggerData *) fcinfo-&gt;context;
 
         retval = ...
     }
diff --git a/doc/src/sgml/pltcl.sgml b/doc/src/sgml/pltcl.sgml
index 4f9854a..eabce88 100644
--- a/doc/src/sgml/pltcl.sgml
+++ b/doc/src/sgml/pltcl.sgml
@@ -102,7 +102,7 @@ $$ LANGUAGE pltcl;
 
 <programlisting>
 CREATE FUNCTION tcl_max(integer, integer) RETURNS integer AS $$
-    if {$1 > $2} {return $1}
+    if {$1 &gt; $2} {return $1}
     return $2
 $$ LANGUAGE pltcl STRICT;
 </programlisting>
@@ -129,7 +129,7 @@ CREATE FUNCTION tcl_max(integer, integer) RETURNS integer AS $$
         return $2
     }
     if {[argisnull 2]} { return $1 }
-    if {$1 > $2} {return $1}
+    if {$1 &gt; $2} {return $1}
     return $2
 $$ LANGUAGE pltcl;
 </programlisting>
@@ -156,10 +156,10 @@ CREATE TABLE employee (
 );
 
 CREATE FUNCTION overpaid(employee) RETURNS boolean AS $$
-    if {200000.0 < $1(salary)} {
+    if {200000.0 &lt; $1(salary)} {
         return "t"
     }
-    if {$1(age) < 30 && 100000.0 < $1(salary)} {
+    if {$1(age) &lt; 30 && 100000.0 &lt; $1(salary)} {
         return "t"
     }
     return "f"
diff --git a/doc/src/sgml/queries.sgml b/doc/src/sgml/queries.sgml
index 1e7bd3a..c6e5a96 100644
--- a/doc/src/sgml/queries.sgml
+++ b/doc/src/sgml/queries.sgml
@@ -374,7 +374,7 @@ FROM <replaceable>table_reference</replaceable> <optional>, <replaceable>table_r
 </programlisting>
      then we get the following results for the various joins:
 <screen>
-<prompt>=></> <userinput>SELECT * FROM t1 CROSS JOIN t2;</>
+<prompt>=&gt;</> <userinput>SELECT * FROM t1 CROSS JOIN t2;</>
  num | name | num | value
 -----+------+-----+-------
    1 | a    |   1 | xxx
@@ -388,28 +388,28 @@ FROM <replaceable>table_reference</replaceable> <optional>, <replaceable>table_r
    3 | c    |   5 | zzz
 (9 rows)
 
-<prompt>=></> <userinput>SELECT * FROM t1 INNER JOIN t2 ON t1.num = t2.num;</>
+<prompt>=&gt;</> <userinput>SELECT * FROM t1 INNER JOIN t2 ON t1.num = t2.num;</>
  num | name | num | value
 -----+------+-----+-------
    1 | a    |   1 | xxx
    3 | c    |   3 | yyy
 (2 rows)
 
-<prompt>=></> <userinput>SELECT * FROM t1 INNER JOIN t2 USING (num);</>
+<prompt>=&gt;</> <userinput>SELECT * FROM t1 INNER JOIN t2 USING (num);</>
  num | name | value
 -----+------+-------
    1 | a    | xxx
    3 | c    | yyy
 (2 rows)
 
-<prompt>=></> <userinput>SELECT * FROM t1 NATURAL INNER JOIN t2;</>
+<prompt>=&gt;</> <userinput>SELECT * FROM t1 NATURAL INNER JOIN t2;</>
  num | name | value
 -----+------+-------
    1 | a    | xxx
    3 | c    | yyy
 (2 rows)
 
-<prompt>=></> <userinput>SELECT * FROM t1 LEFT JOIN t2 ON t1.num = t2.num;</>
+<prompt>=&gt;</> <userinput>SELECT * FROM t1 LEFT JOIN t2 ON t1.num = t2.num;</>
  num | name | num | value
 -----+------+-----+-------
    1 | a    |   1 | xxx
@@ -417,7 +417,7 @@ FROM <replaceable>table_reference</replaceable> <optional>, <replaceable>table_r
    3 | c    |   3 | yyy
 (3 rows)
 
-<prompt>=></> <userinput>SELECT * FROM t1 LEFT JOIN t2 USING (num);</>
+<prompt>=&gt;</> <userinput>SELECT * FROM t1 LEFT JOIN t2 USING (num);</>
  num | name | value
 -----+------+-------
    1 | a    | xxx
@@ -425,7 +425,7 @@ FROM <replaceable>table_reference</replaceable> <optional>, <replaceable>table_r
    3 | c    | yyy
 (3 rows)
 
-<prompt>=></> <userinput>SELECT * FROM t1 RIGHT JOIN t2 ON t1.num = t2.num;</>
+<prompt>=&gt;</> <userinput>SELECT * FROM t1 RIGHT JOIN t2 ON t1.num = t2.num;</>
  num | name | num | value
 -----+------+-----+-------
    1 | a    |   1 | xxx
@@ -433,7 +433,7 @@ FROM <replaceable>table_reference</replaceable> <optional>, <replaceable>table_r
      |      |   5 | zzz
 (3 rows)
 
-<prompt>=></> <userinput>SELECT * FROM t1 FULL JOIN t2 ON t1.num = t2.num;</>
+<prompt>=&gt;</> <userinput>SELECT * FROM t1 FULL JOIN t2 ON t1.num = t2.num;</>
  num | name | num | value
 -----+------+-----+-------
    1 | a    |   1 | xxx
@@ -450,7 +450,7 @@ FROM <replaceable>table_reference</replaceable> <optional>, <replaceable>table_r
      prove useful for some queries but needs to be thought out
      carefully.  For example:
 <screen>
-<prompt>=></> <userinput>SELECT * FROM t1 LEFT JOIN t2 ON t1.num = t2.num AND t2.value = 'xxx';</>
+<prompt>=&gt;</> <userinput>SELECT * FROM t1 LEFT JOIN t2 ON t1.num = t2.num AND t2.value = 'xxx';</>
  num | name | num | value
 -----+------+-----+-------
    1 | a    |   1 | xxx
@@ -508,7 +508,7 @@ SELECT * FROM some_very_long_table_name s JOIN another_fairly_long_name a ON s.i
      current query &mdash; it is no longer possible to refer to the table
      by the original name.  Thus
 <programlisting>
-SELECT * FROM my_table AS m WHERE my_table.a > 5;
+SELECT * FROM my_table AS m WHERE my_table.a &gt; 5;
 </programlisting>
      is not valid SQL syntax.  What will actually happen (this is a
      <productname>PostgreSQL</productname> extension to the standard)
@@ -516,7 +516,7 @@ SELECT * FROM my_table AS m WHERE my_table.a > 5;
      <literal>FROM</literal> clause, so the query is processed as if
      it were written as
 <programlisting>
-SELECT * FROM my_table AS m, my_table AS my_table WHERE my_table.a > 5;
+SELECT * FROM my_table AS m, my_table AS my_table WHERE my_table.a &gt; 5;
 </programlisting>
      which will result in a cross join, which is usually not what you
      want.
@@ -732,7 +732,7 @@ FROM a NATURAL JOIN b WHERE b.val &gt; 5
    <para>
     Here are some examples of <literal>WHERE</literal> clauses:
 <programlisting>
-SELECT ... FROM fdt WHERE c1 > 5
+SELECT ... FROM fdt WHERE c1 &gt; 5
 
 SELECT ... FROM fdt WHERE c1 IN (1, 2, 3)
 
@@ -742,7 +742,7 @@ SELECT ... FROM fdt WHERE c1 IN (SELECT c3 FROM t2 WHERE c2 = fdt.c1 + 10)
 
 SELECT ... FROM fdt WHERE c1 BETWEEN (SELECT c3 FROM t2 WHERE c2 = fdt.c1 + 10) AND 100
 
-SELECT ... FROM fdt WHERE EXISTS (SELECT c1 FROM t2 WHERE c2 > fdt.c1)
+SELECT ... FROM fdt WHERE EXISTS (SELECT c1 FROM t2 WHERE c2 &gt; fdt.c1)
 </programlisting>
     <literal>fdt</literal> is the table derived in the
     <literal>FROM</> clause. Rows that do not meet the search
@@ -795,7 +795,7 @@ SELECT <replaceable>select_list</replaceable>
     eliminate redundancy in the output and/or compute aggregates that
     apply to these groups.  For instance:
 <screen>
-<prompt>=></> <userinput>SELECT * FROM test1;</>
+<prompt>=&gt;</> <userinput>SELECT * FROM test1;</>
  x | y
 ---+---
  a | 3
@@ -804,7 +804,7 @@ SELECT <replaceable>select_list</replaceable>
  a | 1
 (4 rows)
 
-<prompt>=></> <userinput>SELECT x FROM test1 GROUP BY x;</>
+<prompt>=&gt;</> <userinput>SELECT x FROM test1 GROUP BY x;</>
  x
 ---
  a
@@ -827,7 +827,7 @@ SELECT <replaceable>select_list</replaceable>
     used in the grouping cannot be referenced except in aggregate
     expressions.  An example with aggregate expressions is:
 <screen>
-<prompt>=></> <userinput>SELECT x, sum(y) FROM test1 GROUP BY x;</>
+<prompt>=&gt;</> <userinput>SELECT x, sum(y) FROM test1 GROUP BY x;</>
  x | sum
 ---+-----
  a |   4
@@ -901,14 +901,14 @@ SELECT <replaceable>select_list</replaceable> FROM ... <optional>WHERE ...</opti
    <para>
     Example:
 <screen>
-<prompt>=></> <userinput>SELECT x, sum(y) FROM test1 GROUP BY x HAVING sum(y) > 3;</>
+<prompt>=&gt;</> <userinput>SELECT x, sum(y) FROM test1 GROUP BY x HAVING sum(y) &gt; 3;</>
  x | sum
 ---+-----
  a |   4
  b |   5
 (2 rows)
 
-<prompt>=></> <userinput>SELECT x, sum(y) FROM test1 GROUP BY x HAVING x < 'c';</>
+<prompt>=&gt;</> <userinput>SELECT x, sum(y) FROM test1 GROUP BY x HAVING x &lt; 'c';</>
  x | sum
 ---+-----
  a |   4
@@ -922,9 +922,9 @@ SELECT <replaceable>select_list</replaceable> FROM ... <optional>WHERE ...</opti
 <programlisting>
 SELECT product_id, p.name, (sum(s.units) * (p.price - p.cost)) AS profit
     FROM products p LEFT JOIN sales s USING (product_id)
-    WHERE s.date > CURRENT_DATE - INTERVAL '4 weeks'
+    WHERE s.date &gt; CURRENT_DATE - INTERVAL '4 weeks'
     GROUP BY product_id, p.name, p.price, p.cost
-    HAVING sum(p.price * s.units) > 5000;
+    HAVING sum(p.price * s.units) &gt; 5000;
 </programlisting>
     In the example above, the <literal>WHERE</> clause is selecting
     rows by a column that is not grouped (the expression is only true for
diff --git a/doc/src/sgml/query.sgml b/doc/src/sgml/query.sgml
index 276b8b8..e49325a 100644
--- a/doc/src/sgml/query.sgml
+++ b/doc/src/sgml/query.sgml
@@ -605,8 +605,8 @@ SELECT *
 SELECT W1.city, W1.temp_lo AS low, W1.temp_hi AS high,
     W2.city, W2.temp_lo AS low, W2.temp_hi AS high
     FROM weather W1, weather W2
-    WHERE W1.temp_lo < W2.temp_lo
-    AND W1.temp_hi > W2.temp_hi;
+    WHERE W1.temp_lo &lt; W2.temp_lo
+    AND W1.temp_hi &gt; W2.temp_hi;
 
      city      | low | high |     city      | low | high
 ---------------+-----+------+---------------+-----+------
@@ -737,7 +737,7 @@ SELECT city, max(temp_lo)
 SELECT city, max(temp_lo)
     FROM weather
     GROUP BY city
-    HAVING max(temp_lo) < 40;
+    HAVING max(temp_lo) &lt; 40;
 </programlisting>
 
 <screen>
@@ -757,7 +757,7 @@ SELECT city, max(temp_lo)
     FROM weather
     WHERE city LIKE 'S%'<co id="co.tutorial-agg-like">
     GROUP BY city
-    HAVING max(temp_lo) < 40;
+    HAVING max(temp_lo) &lt; 40;
 </programlisting>
    <calloutlist>
     <callout arearefs="co.tutorial-agg-like">
@@ -814,7 +814,7 @@ SELECT city, max(temp_lo)
 <programlisting>
 UPDATE weather
     SET temp_hi = temp_hi - 2,  temp_lo = temp_lo - 2
-    WHERE date > '1994-11-28';
+    WHERE date &gt; '1994-11-28';
 </programlisting>
    </para>
 
diff --git a/doc/src/sgml/ref/create_conversion.sgml b/doc/src/sgml/ref/create_conversion.sgml
index eacd0d5..e42acd5 100644
--- a/doc/src/sgml/ref/create_conversion.sgml
+++ b/doc/src/sgml/ref/create_conversion.sgml
@@ -8,7 +8,7 @@
 
  <refnamediv>
   <refname>CREATE CONVERSION</refname>
-  <refpurpose>define a new conversion</refpurpose>
+  <refpurpose>define a new encoding conversion</refpurpose>
  </refnamediv>
 
  <indexterm zone="sql-createconversion">
@@ -26,10 +26,12 @@ CREATE [DEFAULT] CONVERSION <replaceable>name</replaceable>
   <title>Description</title>
 
   <para>
-   <command>CREATE CONVERSION</command> defines a new encoding
-   conversion.  Conversion names may be used in the <function>convert</function> function
+   <command>CREATE CONVERSION</command> defines a new conversion between
+   character set encodings.  Conversion names may be used in the
+   <function>convert</function> function
    to specify a particular encoding conversion.  Also, conversions that
-   are marked <literal>DEFAULT</> can be used for automatic encoding conversion between
+   are marked <literal>DEFAULT</> can be used for automatic encoding
+   conversion between
    client and server. For this purpose, two conversions, from encoding A to
    B <emphasis>and</emphasis> from encoding B to A, must be defined.
  </para>
@@ -109,7 +111,7 @@ conv_proc(
     integer,  -- source encoding ID
     integer,  -- destination encoding ID
     cstring,  -- source string (null terminated C string)
-    cstring,  -- destination string (null terminated C string)
+    internal, -- destination (fill with a null terminated C string)
     integer   -- source string length
 ) RETURNS void;
 </programlisting>
diff --git a/doc/src/sgml/ref/create_domain.sgml b/doc/src/sgml/ref/create_domain.sgml
index 9f5344b..60dcedd 100644
--- a/doc/src/sgml/ref/create_domain.sgml
+++ b/doc/src/sgml/ref/create_domain.sgml
@@ -167,8 +167,8 @@ where <replaceable class="PARAMETER">constraint</replaceable> is:
 <programlisting>
 CREATE DOMAIN us_postal_code AS TEXT
 CHECK(
-   VALUE ~ '^\d{5}$'
-OR VALUE ~ '^\d{5}-\d{4}$'
+   VALUE ~ '^\\d{5}$'
+OR VALUE ~ '^\\d{5}-\\d{4}$'
 );
 
 CREATE TABLE us_snail_addy (
diff --git a/doc/src/sgml/ref/create_table.sgml b/doc/src/sgml/ref/create_table.sgml
index 4806d04..a3dd404 100644
--- a/doc/src/sgml/ref/create_table.sgml
+++ b/doc/src/sgml/ref/create_table.sgml
@@ -732,7 +732,7 @@ CREATE TABLE films (
 
 <programlisting>
 CREATE TABLE distributors (
-    did     integer CHECK (did > 100),
+    did     integer CHECK (did &gt; 100),
     name    varchar(40)
 );
 </programlisting>
@@ -745,7 +745,7 @@ CREATE TABLE distributors (
 CREATE TABLE distributors (
     did     integer,
     name    varchar(40)
-    CONSTRAINT con1 CHECK (did > 100 AND name &lt;&gt; '')
+    CONSTRAINT con1 CHECK (did &gt; 100 AND name &lt;&gt; '')
 );
 </programlisting>
   </para>
diff --git a/doc/src/sgml/ref/createuser.sgml b/doc/src/sgml/ref/createuser.sgml
index 55902a4..2f1be77 100644
--- a/doc/src/sgml/ref/createuser.sgml
+++ b/doc/src/sgml/ref/createuser.sgml
@@ -68,8 +68,10 @@ PostgreSQL documentation
       <term><replaceable class="parameter">username</replaceable></term>
       <listitem>
        <para>
-	Specifies the name of the <productname>PostgreSQL</productname> user to be created. 
-	This name must be unique among all <productname>PostgreSQL</productname> users.
+        Specifies the name of the <productname>PostgreSQL</productname> user
+        to be created.
+        This name must be unique among all users of this
+        <productname>PostgreSQL</productname> installation.
        </para>
       </listitem>
      </varlistentry>  
@@ -290,7 +292,7 @@ PostgreSQL documentation
     server:
 <screen>
 <prompt>$ </prompt><userinput>createuser joe</userinput>
-<computeroutput>Is the new user allowed to create databases? (y/n) </computeroutput><userinput>n</userinput>
+<computeroutput>Shall the new user be allowed to create databases? (y/n) </computeroutput><userinput>n</userinput>
 <computeroutput>Shall the new user be allowed to create more new users? (y/n) </computeroutput><userinput>n</userinput>
 <computeroutput>CREATE USER</computeroutput>
 </screen>
@@ -301,11 +303,28 @@ PostgreSQL documentation
     server on host <literal>eden</>, port 5000, avoiding the prompts and
     taking a look at the underlying command:
 <screen>
-<prompt>$ </prompt><userinput>createuser -p 5000 -h eden -D -A -e joe</userinput>
-<computeroutput>CREATE USER "joe" NOCREATEDB NOCREATEUSER</computeroutput>
+<prompt>$ </prompt><userinput>createuser -h eden -p 5000 -D -A -e joe</userinput>
+<computeroutput>CREATE USER joe NOCREATEDB NOCREATEUSER;</computeroutput>
 <computeroutput>CREATE USER</computeroutput>
 </screen>
    </para>
+
+   <para>
+    To create the user <literal>joe</literal> as a superuser,
+    and assign a password immediately:
+<screen>
+<prompt>$ </prompt><userinput>createuser -P -d -a -e joe</userinput>
+<computeroutput>Enter password for new user: </computeroutput><userinput>xyzzy</userinput>
+<computeroutput>Enter it again: </computeroutput><userinput>xyzzy</userinput>
+<computeroutput>CREATE USER joe PASSWORD 'xyzzy' CREATEDB CREATEUSER;</computeroutput>
+<computeroutput>CREATE USER</computeroutput>
+</screen>
+    In the above example, the new password isn't actually echoed when typed,
+    but we show what was typed for clarity.  However the password
+    <emphasis>will</> appear in the echoed command, as illustrated &mdash;
+    so you don't want to use <literal>-e</> when assigning a password, if
+    anyone else can see your screen.
+   </para>
  </refsect1>
 
 
diff --git a/doc/src/sgml/ref/initdb.sgml b/doc/src/sgml/ref/initdb.sgml
index 47f29b7..a71d669 100644
--- a/doc/src/sgml/ref/initdb.sgml
+++ b/doc/src/sgml/ref/initdb.sgml
@@ -43,34 +43,23 @@ PostgreSQL documentation
   </para>
 
   <para>
-   Creating a database cluster consists of creating the directories in which
-   the database data will live, generating the shared catalog tables 
-   (tables that belong to the whole cluster rather than to any particular
-   database), and creating the <literal>template1</literal>
-   database.  When you later create a new database, everything in the
-   <literal>template1</literal> database is copied.
-   It contains catalog tables filled in for things like the
-   built-in types.
+   Creating a database cluster consists of creating the directories in
+   which the database data will live, generating the shared catalog
+   tables (tables that belong to the whole cluster rather than to any
+   particular database), and creating the <literal>template1</literal>
+   database. When you later create a new database, everything in the
+   <literal>template1</literal> database is copied. It contains catalog
+   tables containing things like built-in data types.
   </para>
 
   <para>
-   <command>initdb</command> initializes the database cluster's default
-   locale and character set encoding. Some locale categories are fixed
-   for the lifetime of the cluster. There is also a performance impact
-   in using locales other than <literal>C</> or <literal>POSIX</>.
-   Therefore it is important to make the right choice when running
-   <command>initdb</command>. Other locale categories can be changed
-   later when the server is started. <command>initdb</command> will
-   write those locale settings into the
-   <filename>postgresql.conf</filename> configuration file so they are
-   the default, but they can be changed by editing that file. To set the
-   locale that <command>initdb</command> uses, see the description of
-   the <option>--locale</option> option. The character set encoding can
-   be set separately for each database as it is created.
-   <command>initdb</command> determines the encoding for the
-   <literal>template1</literal> database, which will serve as the
-   default for all other databases. To alter the default encoding use
-   the <option>--encoding</option> option.
+   Although <command>initdb</command> will attempt to create the
+   specified data directory, it might not have permission if the parent
+   directory of the desired data directory is root-owned. To initialize
+   in such a setup, create an empty data directory as root, then use
+   <command>chown</command> to assign ownership of that directory to the
+   database user account, then <command>su</command> to become the
+   database user to run <command>initdb</command>.
   </para>
 
   <para>
@@ -83,15 +72,28 @@ PostgreSQL documentation
   </para>
 
   <para>
-   Although <command>initdb</command> will attempt to create the
-   specified data directory, often it won't have permission to do so,
-   since the parent of the desired data directory is often a root-owned
-   directory.  To set up an arrangement like this, create an empty data
-   directory as root, then use <command>chown</command> to hand over
-   ownership of that directory to the database user account, then
-   <command>su</command> to become the database user, and
-   finally run <command>initdb</command> as the database user.
+   <command>initdb</command> initializes the database cluster's default
+   locale and character set encoding. The collation order
+   (<literal>LC_COLLATE</>) and character set classes
+   (<literal>LC_CTYPE</>, e.g. upper, lower, digit) are fixed for all
+   databases and can not be changed. Collation orders other than
+   <literal>C</> or <literal>POSIX</> also have a performance penalty.
+   For these reasons it is important to choose the right locale when
+   running <command>initdb</command>. The remaining locale categories
+   can be changed later when the server is started. All server locale
+   values (<literal>lc_*</>) can be displayed via <command>SHOW ALL</>.
+   More details can be found in <xref linkend="locale">.
   </para>
+
+  <para>
+   The character set encoding can be set separately for a database when
+   it is created. <command>initdb</command> determines the encoding for
+   the <literal>template1</literal> database, which will serve as the
+   default for all other databases. To alter the default encoding use
+   the <option>--encoding</option> option. More details can be found in
+   <xref linkend="multibyte">.
+  </para>
+
  </refsect1>
 
  <refsect1>
diff --git a/doc/src/sgml/ref/lock.sgml b/doc/src/sgml/ref/lock.sgml
index 376c30a..cefbc4c 100644
--- a/doc/src/sgml/ref/lock.sgml
+++ b/doc/src/sgml/ref/lock.sgml
@@ -210,8 +210,8 @@ COMMIT WORK;
 BEGIN WORK;
 LOCK TABLE films IN SHARE ROW EXCLUSIVE MODE;
 DELETE FROM films_user_comments WHERE id IN
-    (SELECT id FROM films WHERE rating < 5);
-DELETE FROM films WHERE rating < 5;
+    (SELECT id FROM films WHERE rating &lt; 5);
+DELETE FROM films WHERE rating &lt; 5;
 COMMIT WORK;
 </programlisting>
   </para>
diff --git a/doc/src/sgml/ref/pg_ctl-ref.sgml b/doc/src/sgml/ref/pg_ctl-ref.sgml
index 803dd4b..09419cb 100644
--- a/doc/src/sgml/ref/pg_ctl-ref.sgml
+++ b/doc/src/sgml/ref/pg_ctl-ref.sgml
@@ -70,6 +70,19 @@ PostgreSQL documentation
    <arg choice="plain">kill</arg>
    <arg><replaceable>signal_name</replaceable></arg>
    <arg><replaceable>process_id</replaceable></arg>
+   <sbr>
+   <command>pg_ctl</command>
+   <arg choice="plain">register</arg>
+   <arg>-N <replaceable>servicename</replaceable></arg>
+   <arg>-U <replaceable>username</replaceable></arg>
+   <arg>-P <replaceable>password</replaceable></arg>
+   <arg>-D <replaceable>datadir</replaceable></arg>
+   <arg>-w</arg>
+   <arg>-o <replaceable>options</replaceable></arg>
+   <sbr>
+   <command>pg_ctl</command>
+   <arg choice="plain">unregister</arg>
+   <arg>-N <replaceable>servicename</replaceable></arg>
   </cmdsynopsis>
  </refsynopsisdiv>
 
@@ -143,6 +156,17 @@ PostgreSQL documentation
     which does not have a <application>kill</> command.  Use 
     <literal>--help</> to see a list of supported signal names.
   </para>
+
+  <para>
+   <option>register</option> mode allows you to register a system service
+   on <productname>Microsoft Windows</>.
+  </para>
+
+  <para>
+   <option>unregister</option> mode allows you to unregister a system service
+   on <productname>Microsoft Windows</>, previously registered with the
+   <option>register</option> command.
+  </para>
  </refsect1>
 
  <refsect1 id="app-pg-ctl-options">
@@ -253,8 +277,44 @@ PostgreSQL documentation
        </para>
       </listitem>
      </varlistentry>
-    </variablelist>
-   </para>
+   </variablelist>
+  </para>
+ </refsect1>
+
+ <refsect1 id="app-pg-ctl-svcoptions">
+  <title>Windows options</title>
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><option>-N <replaceable class="parameter">servicename</replaceable></option></term>
+     <listitem>
+      <para>
+       Name of the system service to register. The name will be used
+       as both the service name and the display name.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term><option>-P <replaceable class="parameter">password</replaceable></option></term>
+     <listitem>
+      <para>
+       Password for the user to start the service.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term><option>-U <replaceable class="parameter">username</replaceable></option></term>
+     <listitem>
+      <para>
+       Username for the user to start the service. For domain users, use the
+       format <literal>DOMAIN\username</literal>.
+      </para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
  </refsect1>
 
 
diff --git a/doc/src/sgml/ref/pg_restore.sgml b/doc/src/sgml/ref/pg_restore.sgml
index f336070..3b823d7 100644
--- a/doc/src/sgml/ref/pg_restore.sgml
+++ b/doc/src/sgml/ref/pg_restore.sgml
@@ -230,8 +230,8 @@
       <term><option>--use-list=<replaceable class="parameter">list-file</replaceable></option></term>
       <listitem>
        <para>
-        Restore elements in <REPLACEABLE
-        CLASS="PARAMETER">list-file</REPLACEABLE> only, and in the
+        Restore elements in <replaceable class="PARAMETER">
+        list-file</replaceable> only, and in the
         order they appear in the file. Lines can be moved and may also
         be commented out by placing a <literal>;</literal> at the
         start of the line.  (See below for examples.)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index fa29b1d..65924a5 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -348,7 +348,7 @@ PostgreSQL documentation
       <term><option>-u</></term>
       <listitem>
       <para>
-      Makes <application>psql</application> prompt for the user name and
+      Forces <application>psql</application> to prompt for the user name and
       password before connecting to the database.
       </para>
 
@@ -406,21 +406,25 @@ PostgreSQL documentation
       <term><option>--password</></term>
       <listitem>
       <para>
-      Cause <application>psql</application> to prompt for a
-      password before connecting to a database. This will remain set for
-      the entire session, even if you change the database connection
-      with the meta-command <command>\connect</command>.
+      Forces <application>psql</application> to prompt for a
+      password before connecting to a database.  
       </para>
 
       <para>
-      In the current version, <application>psql</application>
-      automatically issues a password prompt whenever the server
-      requests password authentication. Because this is currently based
-      on a hack, the automatic recognition might mysteriously fail,
-      hence this option to force a prompt. If no password prompt is
-      issued and the server requires password authentication, the
-      connection attempt will fail.
+      <application>psql</application> should automatically prompt for a
+      password whenever the server requests password authentication.
+      However, currently password request detection is not totally
+      reliable, hence this option to force a prompt. If no password
+      prompt is issued and the server requires password authentication,
+      the connection attempt will fail.
       </para>
+
+      <para>
+      This option will remain set for the entire session, even if you
+      change the database connection with the meta-command
+      <command>\connect</command>.
+      </para>
+
       </listitem>
     </varlistentry>
 
@@ -508,7 +512,10 @@ PostgreSQL documentation
     some typing by setting the environment variables
     <envar>PGDATABASE</envar>, <envar>PGHOST</envar>,
     <envar>PGPORT</envar> and/or <envar>PGUSER</envar> to appropriate
-    values.
+    values. (For additional environment variables, see <xref
+    linkend="libpq-envars">.) It is also convenient to have a
+    <filename>~/.pgpass</> file to avoid regularly having to type in
+    passwords. See <xref linkend="libpq-pgpass"> for more information.
     </para>
 
     <para>
@@ -536,7 +543,7 @@ Type:  \copyright for distribution terms
        \g or terminate with semicolon to execute query
        \q to quit
 
-testdb=>
+testdb=&gt;
 </programlisting>
     </para>
 
@@ -881,7 +888,7 @@ testdb=>
         types, relations (tables, views, indexes, sequences, large
         objects), rules, and triggers.) For example:
 <programlisting>
-=> <userinput>\dd version</userinput>
+=&gt; <userinput>\dd version</userinput>
                      Object descriptions
    Schema   |  Name   |  Object  |        Description
 ------------+---------+----------+---------------------------
@@ -1107,7 +1114,7 @@ testdb=>
         space and followed by a newline. This can be useful to
         intersperse information in the output of scripts. For example:
 <programlisting>
-=> <userinput>\echo `date`</userinput>
+=&gt; <userinput>\echo `date`</userinput>
 Tue Oct 26 21:40:57 CEST 1999
 </programlisting>
         If the first argument is an unquoted <literal>-n</literal> the trailing
@@ -1271,7 +1278,7 @@ Tue Oct 26 21:40:57 CEST 1999
         large object. Optionally, it associates the given
         comment with the object. Example:
 <programlisting>
-foo=> <userinput>\lo_import '/home/peter/pictures/photo.xcf' 'a picture of me'</userinput>
+foo=&gt; <userinput>\lo_import '/home/peter/pictures/photo.xcf' 'a picture of me'</userinput>
 lo_import 152801
 </programlisting>
         The response indicates that the large object received object ID
@@ -1817,14 +1824,14 @@ lo_import 152801
     <application>psql</application> meta-command
     <command>\set</command>:
 <programlisting>
-testdb=> <userinput>\set foo bar</userinput>
+testdb=&gt; <userinput>\set foo bar</userinput>
 </programlisting>
     sets the variable <literal>foo</literal> to the value
     <literal>bar</literal>. To retrieve the content of the variable, precede
     the name with a colon and use it as the argument of any slash
     command:
 <programlisting>
-testdb=> <userinput>\echo :foo</userinput>
+testdb=&gt; <userinput>\echo :foo</userinput>
 bar
 </programlisting>
     </para>
@@ -2154,8 +2161,8 @@ bar
     this is again to prepend the variable name with a colon
     (<literal>:</literal>).
 <programlisting>
-testdb=> <userinput>\set foo 'my_table'</userinput>
-testdb=> <userinput>SELECT * FROM :foo;</userinput>
+testdb=&gt; <userinput>\set foo 'my_table'</userinput>
+testdb=&gt; <userinput>SELECT * FROM :foo;</userinput>
 </programlisting>
     would then query the table <literal>my_table</literal>. The value of
     the variable is copied literally, so it can even contain unbalanced
@@ -2171,19 +2178,19 @@ testdb=> <userinput>SELECT * FROM :foo;</userinput>
     copy the contents of a file into a table column. First load the file into a
     variable and then proceed as above.
 <programlisting>
-testdb=> <userinput>\set content '\'' `cat my_file.txt` '\''</userinput>
-testdb=> <userinput>INSERT INTO my_table VALUES (:content);</userinput>
+testdb=&gt; <userinput>\set content '\'' `cat my_file.txt` '\''</userinput>
+testdb=&gt; <userinput>INSERT INTO my_table VALUES (:content);</userinput>
 </programlisting>
     One possible problem with this approach is that <filename>my_file.txt</filename>
     might contain single quotes. These need to be escaped so that
     they don't cause a syntax error when the second line is processed. This
     could be done with the program <command>sed</command>:
 <programlisting>
-testdb=> <userinput>\set content '\'' `sed -e "s/'/\\\\\\'/g" < my_file.txt` '\''</userinput>
+testdb=&gt; <userinput>\set content '\'' `sed -e "s/'/\\\\\\'/g" &lt; my_file.txt` '\''</userinput>
 </programlisting>
     Observe the correct number of backslashes (6)! It works
     this way: After <application>psql</application> has parsed this
-    line, it passes <literal>sed -e "s/'/\\\'/g" < my_file.txt</literal>
+    line, it passes <literal>sed -e "s/'/\\\'/g" &lt; my_file.txt</literal>
     to the shell. The shell will do its own thing inside the double
     quotes and execute <command>sed</command> with the arguments
     <literal>-e</literal> and <literal>s/'/\\'/g</literal>. When
@@ -2243,8 +2250,8 @@ testdb=> <userinput>\set content '\'' `sed -e "s/'/\\\\\\'/g" < my_file.txt` '\'
           The full host name (with domain name) of the database server,
           or <literal>[local]</literal> if the connection is over a Unix
           domain socket, or
-          <literal>[local:<replaceable>/dir/name</replaceable>]</literal
-          >, if the Unix domain socket is not at the compiled in default
+          <literal>[local:<replaceable>/dir/name</replaceable>]</literal>, 
+          if the Unix domain socket is not at the compiled in default
           location.
         </para>
        </listitem>
@@ -2384,7 +2391,7 @@ testdb=> <userinput>\set content '\'' `sed -e "s/'/\\\\\\'/g" < my_file.txt` '\'
          <literal>%]</literal>. Multiple pairs of these may occur within
          the prompt.  For example,
 <programlisting>
-testdb=> \set PROMPT1 '%[%033[1;33;40m%]%n@%/%R%[%033[0m%#%] '
+testdb=&gt; \set PROMPT1 '%[%033[1;33;40m%]%n@%/%R%[%033[0m%#%] '
 </programlisting>
          results in a boldfaced (<literal>1;</literal>) yellow-on-black
          (<literal>33;40</literal>) prompt on VT100-compatible, color-capable
@@ -2460,7 +2467,7 @@ $endif
 
     <listitem>
      <para>
-      Default database to connect to
+      Default connection database
      </para>
     </listitem>
    </varlistentry>
@@ -2569,7 +2576,7 @@ $endif
       discouraged.  If you get strange messages, keep this in mind.
       For example
 <programlisting>
-testdb=> <userinput>\foo</userinput>
+testdb=&gt; <userinput>\foo</userinput>
 Field separator is "oo".
 </programlisting>
       which is perhaps not what one would expect.
@@ -2631,15 +2638,15 @@ Field separator is "oo".
   The first example shows how to spread a command over several lines of
   input. Notice the changing prompt:
 <programlisting>
-testdb=> <userinput>CREATE TABLE my_table (</userinput>
-testdb(> <userinput> first integer not null default 0,</userinput>
-testdb(> <userinput> second text)</userinput>
-testdb-> <userinput>;</userinput>
+testdb=&gt; <userinput>CREATE TABLE my_table (</userinput>
+testdb(&gt; <userinput> first integer not null default 0,</userinput>
+testdb(&gt; <userinput> second text)</userinput>
+testdb-&gt; <userinput>;</userinput>
 CREATE TABLE
 </programlisting>
   Now look at the table definition again:
 <programlisting>
-testdb=> <userinput>\d my_table</userinput>
+testdb=&gt; <userinput>\d my_table</userinput>
              Table "my_table"
  Attribute |  Type   |      Modifier
 -----------+---------+--------------------
@@ -2649,13 +2656,13 @@ testdb=> <userinput>\d my_table</userinput>
 </programlisting>
   Now we change the prompt to something more interesting:
 <programlisting>
-testdb=> <userinput>\set PROMPT1 '%n@%m %~%R%# '</userinput>
-peter@localhost testdb=>
+testdb=&gt; <userinput>\set PROMPT1 '%n@%m %~%R%# '</userinput>
+peter@localhost testdb=&gt;
 </programlisting>
   Let's assume you have filled the table with data and want to take a
   look at it:
 <programlisting>
-peter@localhost testdb=> SELECT * FROM my_table;
+peter@localhost testdb=&gt; SELECT * FROM my_table;
  first | second
 -------+--------
      1 | one
@@ -2668,9 +2675,9 @@ peter@localhost testdb=> SELECT * FROM my_table;
   You can display tables in different ways by using the
   <command>\pset</command> command:
 <programlisting>
-peter@localhost testdb=> <userinput>\pset border 2</userinput>
+peter@localhost testdb=&gt; <userinput>\pset border 2</userinput>
 Border style is 2.
-peter@localhost testdb=> <userinput>SELECT * FROM my_table;</userinput>
+peter@localhost testdb=&gt; <userinput>SELECT * FROM my_table;</userinput>
 +-------+--------+
 | first | second |
 +-------+--------+
@@ -2681,9 +2688,9 @@ peter@localhost testdb=> <userinput>SELECT * FROM my_table;</userinput>
 +-------+--------+
 (4 rows)
 
-peter@localhost testdb=> <userinput>\pset border 0</userinput>
+peter@localhost testdb=&gt; <userinput>\pset border 0</userinput>
 Border style is 0.
-peter@localhost testdb=> <userinput>SELECT * FROM my_table;</userinput>
+peter@localhost testdb=&gt; <userinput>SELECT * FROM my_table;</userinput>
 first second
 ----- ------
     1 one
@@ -2692,15 +2699,15 @@ first second
     4 four
 (4 rows)
 
-peter@localhost testdb=> <userinput>\pset border 1</userinput>
+peter@localhost testdb=&gt; <userinput>\pset border 1</userinput>
 Border style is 1.
-peter@localhost testdb=> <userinput>\pset format unaligned</userinput>
+peter@localhost testdb=&gt; <userinput>\pset format unaligned</userinput>
 Output format is unaligned.
-peter@localhost testdb=> <userinput>\pset fieldsep ","</userinput>
+peter@localhost testdb=&gt; <userinput>\pset fieldsep ","</userinput>
 Field separator is ",".
-peter@localhost testdb=> <userinput>\pset tuples_only</userinput>
+peter@localhost testdb=&gt; <userinput>\pset tuples_only</userinput>
 Showing only tuples.
-peter@localhost testdb=> <userinput>SELECT second, first FROM my_table;</userinput>
+peter@localhost testdb=&gt; <userinput>SELECT second, first FROM my_table;</userinput>
 one,1
 two,2
 three,3
@@ -2708,11 +2715,11 @@ four,4
 </programlisting>
   Alternatively, use the short commands:
 <programlisting>
-peter@localhost testdb=> <userinput>\a \t \x</userinput>
+peter@localhost testdb=&gt; <userinput>\a \t \x</userinput>
 Output format is aligned.
 Tuples only is off.
 Expanded display is on.
-peter@localhost testdb=> <userinput>SELECT * FROM my_table;</userinput>
+peter@localhost testdb=&gt; <userinput>SELECT * FROM my_table;</userinput>
 -[ RECORD 1 ]-
 first  | 1
 second | one
diff --git a/doc/src/sgml/ref/reindex.sgml b/doc/src/sgml/ref/reindex.sgml
index f976171..b48bbdd 100644
--- a/doc/src/sgml/ref/reindex.sgml
+++ b/doc/src/sgml/ref/reindex.sgml
@@ -234,8 +234,8 @@ REINDEX INDEX my_index;
 $ <userinput>export PGOPTIONS="-P"</userinput>
 $ <userinput>psql broken_db</userinput>
 ...
-broken_db=> REINDEX DATABASE broken_db;
-broken_db=> \q
+broken_db=&gt; REINDEX DATABASE broken_db;
+broken_db=&gt; \q
 </programlisting>
   </para>
  </refsect1>
diff --git a/doc/src/sgml/ref/rollback_to.sgml b/doc/src/sgml/ref/rollback_to.sgml
index c938c52..7c60da5 100644
--- a/doc/src/sgml/ref/rollback_to.sgml
+++ b/doc/src/sgml/ref/rollback_to.sgml
@@ -74,11 +74,13 @@ ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] <replaceable>savepoint_name</re
 
   <para>
    Cursors have somewhat non-transactional behavior with respect to
-   savepoints.  Any cursor that is opened inside the savepoint is not closed
-   when the savepoint is rolled back.  If a cursor is affected by a
+   savepoints.  Any cursor that is opened inside a savepoint will be closed
+   when the savepoint is rolled back.  If a previously opened cursor is
+   affected by a 
    <command>FETCH</> command inside a savepoint that is later rolled
    back, the cursor position remains at the position that <command>FETCH</>
    left it pointing to (that is, <command>FETCH</> is not rolled back).
+   Closing a cursor is not undone by rolling back, either.
    A cursor whose execution causes a transaction to abort is put in a
    can't-execute state, so while the transaction can be restored using
    <command>ROLLBACK TO SAVEPOINT</>, the cursor can no longer be used.
diff --git a/doc/src/sgml/ref/truncate.sgml b/doc/src/sgml/ref/truncate.sgml
index be42b8f..ca1b5a7 100644
--- a/doc/src/sgml/ref/truncate.sgml
+++ b/doc/src/sgml/ref/truncate.sgml
@@ -54,6 +54,10 @@ TRUNCATE [ TABLE ] <replaceable class="PARAMETER">name</replaceable>
   <title>Notes</title>
 
   <para>
+   Only the owner of a table may <command>TRUNCATE</> it.
+  </para>
+
+  <para>
    <command>TRUNCATE</> cannot be used if there are foreign-key references
    to the table from other tables.  Checking validity in such cases would
    require table scans, and the whole point is not to do one.
diff --git a/doc/src/sgml/rowtypes.sgml b/doc/src/sgml/rowtypes.sgml
index ff9af79..6104084 100644
--- a/doc/src/sgml/rowtypes.sgml
+++ b/doc/src/sgml/rowtypes.sgml
@@ -75,7 +75,7 @@ SELECT price_extension(item, 10) FROM on_hand;
 CREATE TABLE inventory_item (
     name            text,
     supplier_id     integer REFERENCES suppliers,
-    price           numeric CHECK (price > 0)
+    price           numeric CHECK (price &gt; 0)
 );
 </programlisting>
   then the same <literal>inventory_item</> composite type shown above would
@@ -165,21 +165,21 @@ ROW('', 42, NULL)
   like:
 
 <programlisting>
-SELECT item.name FROM on_hand WHERE item.price > 9.99;
+SELECT item.name FROM on_hand WHERE item.price &gt; 9.99;
 </programlisting>
 
   This will not work since the name <literal>item</> is taken to be a table
   name, not a field name, per SQL syntax rules.  You must write it like this:
 
 <programlisting>
-SELECT (item).name FROM on_hand WHERE (item).price > 9.99;
+SELECT (item).name FROM on_hand WHERE (item).price &gt; 9.99;
 </programlisting>
 
   or if you need to use the table name as well (for instance in a multi-table
   query), like this:
 
 <programlisting>
-SELECT (on_hand.item).name FROM on_hand WHERE (on_hand.item).price > 9.99;
+SELECT (on_hand.item).name FROM on_hand WHERE (on_hand.item).price &gt; 9.99;
 </programlisting>
 
   Now the parenthesized object is correctly interpreted as a reference to
diff --git a/doc/src/sgml/rules.sgml b/doc/src/sgml/rules.sgml
index ffe208c..de28949 100644
--- a/doc/src/sgml/rules.sgml
+++ b/doc/src/sgml/rules.sgml
@@ -1,27 +1,27 @@
 <!-- $PostgreSQL$ -->
 
-<Chapter Id="rules">
-<Title>The Rule System</Title>
+<chapter id="rules">
+<title>The Rule System</title>
 
  <indexterm zone="rules">
   <primary>rule</primary>
  </indexterm>
 
-<Para>
+<para>
      This chapter discusses the rule system in
      <productname>PostgreSQL</productname>.  Production rule systems
      are conceptually simple, but there are many subtle points
      involved in actually using them.
-</Para>
+</para>
 
-<Para>
+<para>
      Some other database systems define active database rules, which
      are usually stored procedures and triggers.  In
      <productname>PostgreSQL</productname>, these can be implemented
      using functions and triggers as well.
-</Para>
+</para>
 
-<Para>
+<para>
      The rule system (more precisely speaking, the query rewrite rule
      system) is totally different from stored procedures and triggers.
      It modifies queries to take rules into consideration, and then
@@ -33,31 +33,31 @@
      linkend="ONG90">.
 </para>
 
-<Sect1 id="querytree">
-<Title>The Query Tree</Title>
+<sect1 id="querytree">
+<title>The Query Tree</title>
 
 <indexterm zone="querytree">
  <primary>query tree</primary>
 </indexterm>
 
-<Para>
+<para>
     To understand how the rule system works it is necessary to know
     when it is invoked and what its input and results are.
-</Para>
+</para>
 
-<Para>
+<para>
     The rule system is located between the parser and the planner.
     It takes the output of the parser, one query tree, and the user-defined
     rewrite rules, which are also
     query trees with some extra information, and creates zero or more
     query trees as result. So its input and output are always things
     the parser itself could have produced and thus, anything it sees
-    is basically representable as an <Acronym>SQL</Acronym> statement.
-</Para>
+    is basically representable as an <acronym>SQL</acronym> statement.
+</para>
 
-<Para>
+<para>
     Now what is a query tree? It is an internal representation of an
-    <Acronym>SQL</Acronym> statement where the single parts that it is
+    <acronym>SQL</acronym> statement where the single parts that it is
     built from are stored separately. These query trees can be shown
     in the server log if you set the configuration parameters
     <varname>debug_print_parse</varname>,
@@ -66,94 +66,94 @@
     stored as query trees, in the system catalog
     <structname>pg_rewrite</structname>.  They are not formatted like
     the log output, but they contain exactly the same information.
-</Para>
+</para>
 
-<Para>
+<para>
     Reading a raw query tree requires some experience.  But since
-    <Acronym>SQL</Acronym> representations of query trees are
+    <acronym>SQL</acronym> representations of query trees are
     sufficient to understand the rule system, this chapter will not
     teach how to read them.
-</Para>
+</para>
 
-<Para>
-    When reading the <Acronym>SQL</Acronym> representations of the 
+<para>
+    When reading the <acronym>SQL</acronym> representations of the 
     query trees in this chapter it is necessary to be able to identify
     the parts the statement is broken into when it is in the query tree
     structure. The parts of a query tree are
 
-<VariableList>
-    <VarListEntry>
-    <Term>
+<variablelist>
+    <varlistentry>
+    <term>
         the command type
-    </Term>
-    <ListItem>
-    <Para>
+    </term>
+    <listitem>
+    <para>
         This is a simple value telling which command
         (<command>SELECT</command>, <command>INSERT</command>,
         <command>UPDATE</command>, <command>DELETE</command>) produced
         the query tree.
-    </Para>
-    </ListItem>
-    </VarListEntry>
+    </para>
+    </listitem>
+    </varlistentry>
 
-    <VarListEntry>
-    <Term>
+    <varlistentry>
+    <term>
         the range table
-    </Term>
+    </term>
       <indexterm><primary>range table</></>
-    <ListItem>
-    <Para>
+    <listitem>
+    <para>
         The range table is a list of relations that are used in the query.
         In a <command>SELECT</command> statement these are the relations given after
         the <literal>FROM</literal> key word.
-    </Para>
+    </para>
 
-    <Para>
+    <para>
         Every range table entry identifies a table or view and tells
         by which name it is called in the other parts of the query.
         In the query tree, the range table entries are referenced by
         number rather than by name, so here it doesn't matter if there
-        are duplicate names as it would in an <Acronym>SQL</Acronym>
+        are duplicate names as it would in an <acronym>SQL</acronym>
         statement. This can happen after the range tables of rules
         have been merged in. The examples in this chapter will not have
         this situation.
-    </Para>
-    </ListItem>
-    </VarListEntry>
+    </para>
+    </listitem>
+    </varlistentry>
 
-    <VarListEntry>
-    <Term>
+    <varlistentry>
+    <term>
         the result relation
-    </Term>
-    <ListItem>
-    <Para>
+    </term>
+    <listitem>
+    <para>
         This is an index into the range table that identifies the
         relation where the results of the query go.
-    </Para>
+    </para>
 
-    <Para>
+    <para>
         <command>SELECT</command> queries normally don't have a result
         relation. The special case of a <command>SELECT INTO</command> is
         mostly identical to a <command>CREATE TABLE</command> followed by a
         <literal>INSERT ... SELECT</literal> and is not discussed
         separately here.
-    </Para>
+    </para>
 
-    <Para>
+    <para>
         For <command>INSERT</command>, <command>UPDATE</command>, and
         <command>DELETE</command> commands, the result relation is the table
         (or view!) where the changes are to take effect.
-    </Para>
-    </ListItem>
-    </VarListEntry>
+    </para>
+    </listitem>
+    </varlistentry>
 
-    <VarListEntry>
-    <Term>
+    <varlistentry>
+    <term>
         the target list
-    </Term>
+    </term>
     <indexterm><primary>target list</></>
-    <ListItem>
-    <Para>
+    <listitem>
+    <para>
         The target list is a list of expressions that define the
         result of the query.  In the case of a
         <command>SELECT</command>, these expressions are the ones that
@@ -163,17 +163,17 @@
         abbreviation for all the column names of a relation.  It is
         expanded by the parser into the individual columns, so the
         rule system never sees it.)
-    </Para>
+    </para>
 
-    <Para>
+    <para>
         <command>DELETE</command> commands don't need a target list
         because they don't produce any result. In fact, the planner will
         add a special <acronym>CTID</> entry to the empty target list, but
         this is after the rule system and will be discussed later; for the
         rule system, the target list is empty.
-    </Para>
+    </para>
 
-    <Para>
+    <para>
         For <command>INSERT</command> commands, the target list describes
         the new rows that should go into the result relation. It consists of the
         expressions in the <literal>VALUES</> clause or the ones from the
@@ -183,9 +183,9 @@
         the original command but have defaults.  Any remaining columns (with
         neither a given value nor a default) will be filled in by the
         planner with a constant null expression.
-    </Para>
+    </para>
 
-    <Para>
+    <para>
         For <command>UPDATE</command> commands, the target list
         describes the new rows that should replace the old ones. In the
         rule system, it contains just the expressions from the <literal>SET
@@ -193,40 +193,40 @@
         missing columns by inserting expressions that copy the values from
         the old row into the new one. And it will add the special
         <acronym>CTID</> entry just as for <command>DELETE</command>, too.
-    </Para>
+    </para>
 
-    <Para>
+    <para>
         Every entry in the target list contains an expression that can
         be a constant value, a variable pointing to a column of one
         of the relations in the range table, a parameter, or an expression
         tree made of function calls, constants, variables, operators, etc.
-    </Para>
-    </ListItem>
-    </VarListEntry>
+    </para>
+    </listitem>
+    </varlistentry>
 
-    <VarListEntry>
-    <Term>
+    <varlistentry>
+    <term>
         the qualification
-    </Term>
-    <ListItem>
-    <Para>
+    </term>
+    <listitem>
+    <para>
         The query's qualification is an expression much like one of
         those contained in the target list entries. The result value of
         this expression is a Boolean that tells whether the operation
         (<command>INSERT</command>, <command>UPDATE</command>,
         <command>DELETE</command>, or <command>SELECT</command>) for the
         final result row should be executed or not. It corresponds to the <literal>WHERE</> clause
-        of an <Acronym>SQL</Acronym> statement.
-    </Para>
-    </ListItem>
-    </VarListEntry>
+        of an <acronym>SQL</acronym> statement.
+    </para>
+    </listitem>
+    </varlistentry>
 
-    <VarListEntry>
-    <Term>
+    <varlistentry>
+    <term>
         the join tree
-    </Term>
-    <ListItem>
-    <Para>
+    </term>
+    <listitem>
+    <para>
         The query's join tree shows the structure of the <literal>FROM</> clause.
         For a simple query like <literal>SELECT ... FROM a, b, c</literal>, the join tree is just
         a list of the <literal>FROM</> items, because we are allowed to join them in
@@ -239,31 +239,31 @@
         the top-level <literal>WHERE</> expression as a qualification attached to the
         top-level join-tree item, too.  So really the join tree represents
         both the <literal>FROM</> and <literal>WHERE</> clauses of a <command>SELECT</command>.
-    </Para>
-    </ListItem>
-    </VarListEntry>
+    </para>
+    </listitem>
+    </varlistentry>
 
-    <VarListEntry>
-    <Term>
+    <varlistentry>
+    <term>
         the others
-    </Term>
-    <ListItem>
-    <Para>
+    </term>
+    <listitem>
+    <para>
         The other parts of the query tree like the <literal>ORDER BY</>
         clause aren't of interest here. The rule system
         substitutes some entries there while applying rules, but that
         doesn't have much to do with the fundamentals of the rule
         system.
-    </Para>
-    </ListItem>
-    </VarListEntry>
+    </para>
+    </listitem>
+    </varlistentry>
 
-</VariableList>
+</variablelist>
 </para>
-</Sect1>
+</sect1>
 
-<Sect1 id="rules-views">
-<Title>Views and the Rule System</Title>
+<sect1 id="rules-views">
+<title>Views and the Rule System</title>
 
 <indexterm zone="rules-views">
  <primary>rule</primary>
@@ -275,57 +275,57 @@
  <secondary>implementation through rules</>
 </indexterm>
 
-<Para>
-    Views in <ProductName>PostgreSQL</ProductName> are implemented
+<para>
+    Views in <productname>PostgreSQL</productname> are implemented
     using the rule system. In fact, there is essentially no difference
     between
 
-<ProgramListing>
+<programlisting>
 CREATE VIEW myview AS SELECT * FROM mytab;
-</ProgramListing>
+</programlisting>
     
     compared against the two commands
 
-<ProgramListing>
-CREATE TABLE myview (<Replaceable>same column list as mytab</Replaceable>);
+<programlisting>
+CREATE TABLE myview (<replaceable>same column list as mytab</replaceable>);
 CREATE RULE "_RETURN" AS ON SELECT TO myview DO INSTEAD
     SELECT * FROM mytab;
-</ProgramListing>
+</programlisting>
     
     because this is exactly what the <command>CREATE VIEW</command>
     command does internally.  This has some side effects. One of them
     is that the information about a view in the
-    <ProductName>PostgreSQL</ProductName> system catalogs is exactly
+    <productname>PostgreSQL</productname> system catalogs is exactly
     the same as it is for a table. So for the parser, there is
     absolutely no difference between a table and a view. They are the
     same thing: relations.
-</Para>
+</para>
 
-<Sect2 id="rules-select">
-<Title>How <command>SELECT</command> Rules Work</Title>
+<sect2 id="rules-select">
+<title>How <command>SELECT</command> Rules Work</title>
 
 <indexterm zone="rules-select">
  <primary>rule</primary>
  <secondary sortas="SELECT">for SELECT</secondary>
 </indexterm>
 
-<Para>
+<para>
     Rules <literal>ON SELECT</> are applied to all queries as the last step, even
     if the command given is an <command>INSERT</command>,
     <command>UPDATE</command> or <command>DELETE</command>. And they
     have different semantics from rules on the other command types in that they modify the
     query tree in place instead of creating a new one.  So
     <command>SELECT</command> rules are described first.
-</Para>
+</para>
 
-<Para>
+<para>
     Currently, there can be only one action in an <literal>ON SELECT</> rule, and it must
     be an unconditional <command>SELECT</> action that is <literal>INSTEAD</>. This restriction was
     required to make rules safe enough to open them for ordinary users, and
     it restricts <literal>ON SELECT</> rules to act like views.
-</Para>
+</para>
 
-<Para>
+<para>
     The examples for this chapter are two join views that do some
     calculations and some more views using them in turn.  One of the
     two first views is customized later by adding rules for
@@ -336,24 +336,24 @@ CREATE RULE "_RETURN" AS ON SELECT TO myview DO INSTEAD
     this makes things harder to get into. But it's better to have one
     example that covers all the points discussed step by step rather
     than having many different ones that might mix up in mind.
-</Para>
+</para>
 
-<Para>
+<para>
 For the example, we need a little <literal>min</literal> function that
 returns the lower of 2 integer values. We create that as
 
-<ProgramListing>
+<programlisting>
 CREATE FUNCTION min(integer, integer) RETURNS integer AS $$
-    SELECT CASE WHEN $1 < $2 THEN $1 ELSE $2 END
+    SELECT CASE WHEN $1 &lt; $2 THEN $1 ELSE $2 END
 $$ LANGUAGE SQL STRICT;
-</ProgramListing>
-</Para>
+</programlisting>
+</para>
 
-<Para>
+<para>
     The real tables we need in the first two rule system descriptions
     are these:
 
-<ProgramListing>
+<programlisting>
 CREATE TABLE shoe_data (
     shoename   text,          -- primary key
     sh_avail   integer,       -- available number of pairs
@@ -375,15 +375,15 @@ CREATE TABLE unit (
     un_name    text,          -- primary key
     un_fact    real           -- factor to transform to cm
 );
-</ProgramListing>
+</programlisting>
 
     As you can see, they represent shoe-store data.
-</Para>
+</para>
 
-<Para>
+<para>
     The views are created as
 
-<ProgramListing>
+<programlisting>
 CREATE VIEW shoe AS
     SELECT sh.shoename,
            sh.sh_avail,
@@ -414,9 +414,9 @@ CREATE VIEW shoe_ready AS
            min(rsh.sh_avail, rsl.sl_avail) AS total_avail
       FROM shoe rsh, shoelace rsl
      WHERE rsl.sl_color = rsh.slcolor
-       AND rsl.sl_len_cm >= rsh.slminlen_cm
-       AND rsl.sl_len_cm <= rsh.slmaxlen_cm;
-</ProgramListing>
+       AND rsl.sl_len_cm &gt;= rsh.slminlen_cm
+       AND rsl.sl_len_cm &lt;= rsh.slmaxlen_cm;
+</programlisting>
 
     The <command>CREATE VIEW</command> command for the
     <literal>shoelace</literal> view (which is the simplest one we
@@ -430,23 +430,23 @@ CREATE VIEW shoe_ready AS
     The action of our rule has a query qualification.
     The action of the rule is one query tree that is a copy of the
     <command>SELECT</command> statement in the view creation command.
-</Para>
+</para>
     
-    <Note>
-    <Para>
+    <note>
+    <para>
     The two extra range
     table entries for <literal>NEW</> and <literal>OLD</> (named <literal>*NEW*</> and <literal>*OLD*</> for
     historical reasons in the printed query tree) you can see in
     the <structname>pg_rewrite</structname> entry aren't of interest
     for <command>SELECT</command> rules.
-    </Para>
-    </Note>
+    </para>
+    </note>
 
-<Para>
+<para>
     Now we populate <literal>unit</literal>, <literal>shoe_data</literal>
     and <literal>shoelace_data</literal> and run a simple query on a view:
 
-<ProgramListing>
+<programlisting>
 INSERT INTO unit VALUES ('cm', 1.0);
 INSERT INTO unit VALUES ('m', 100.0);
 INSERT INTO unit VALUES ('inch', 2.54);
@@ -478,7 +478,7 @@ SELECT * FROM shoelace;
  sl5       |        4 | brown    |      1 | m       |       100
  sl6       |        0 | brown    |    0.9 | m       |        90
 (8 rows)
-</ProgramListing>
+</programlisting>
    </para>
 
    <para>
@@ -487,12 +487,12 @@ SELECT * FROM shoelace;
     rules.  The <literal>SELECT * FROM shoelace</literal> was
     interpreted by the parser and produced the query tree
 
-<ProgramListing>
+<programlisting>
 SELECT shoelace.sl_name, shoelace.sl_avail,
        shoelace.sl_color, shoelace.sl_len,
        shoelace.sl_unit, shoelace.sl_len_cm
   FROM shoelace shoelace;
-</ProgramListing>
+</programlisting>
 
     and this is given to the rule system. The rule system walks through the
     range table and checks if there are rules
@@ -500,23 +500,23 @@ SELECT shoelace.sl_name, shoelace.sl_avail,
     <literal>shoelace</literal> (the only one up to now) it finds the
     <literal>_RETURN</literal> rule with the query tree
 
-<ProgramListing>
+<programlisting>
 SELECT s.sl_name, s.sl_avail,
        s.sl_color, s.sl_len, s.sl_unit,
        s.sl_len * u.un_fact AS sl_len_cm
   FROM shoelace *OLD*, shoelace *NEW*,
        shoelace_data s, unit u
  WHERE s.sl_unit = u.un_name;
-</ProgramListing>
-</Para>
+</programlisting>
+</para>
 
-<Para>
+<para>
     To expand the view, the rewriter simply creates a subquery range-table
     entry containing the rule's action query tree, and substitutes this
     range table entry for the original one that referenced the view.  The 
     resulting rewritten query tree is almost the same as if you had typed
 
-<ProgramListing>
+<programlisting>
 SELECT shoelace.sl_name, shoelace.sl_avail,
        shoelace.sl_color, shoelace.sl_len,
        shoelace.sl_unit, shoelace.sl_len_cm
@@ -528,7 +528,7 @@ SELECT shoelace.sl_name, shoelace.sl_avail,
                s.sl_len * u.un_fact AS sl_len_cm
           FROM shoelace_data s, unit u
          WHERE s.sl_unit = u.un_name) shoelace;
-</ProgramListing>
+</programlisting>
 
      There is one difference however: the subquery's range table has two
      extra entries <literal>shoelace *OLD*</> and <literal>shoelace *NEW*</>.  These entries don't
@@ -539,9 +539,9 @@ SELECT shoelace.sl_name, shoelace.sl_avail,
      executor will still check that the user has proper privileges to access
      the view, even though there's no direct use of the view in the rewritten
      query.
-</Para>
+</para>
 
-<Para>
+<para>
     That was the first rule applied.  The rule system will continue checking
     the remaining range-table entries in the top query (in this example there
     are no more), and it will recursively check the range-table entries in
@@ -550,40 +550,40 @@ SELECT shoelace.sl_name, shoelace.sl_avail,
     In this example, there are no rewrite rules for <literal>shoelace_data</> or <literal>unit</>,
     so rewriting is complete and the above is the final result given to
     the planner.
-</Para>
+</para>
 
-<Para>
+<para>
     No we want to write a query that finds out for which shoes currently in the store
     we have the matching shoelaces (color and length) and where the
     total number of exactly matching pairs is greater or equal to two.
 
-<ProgramListing>
-SELECT * FROM shoe_ready WHERE total_avail >= 2;
+<programlisting>
+SELECT * FROM shoe_ready WHERE total_avail &gt;= 2;
 
  shoename | sh_avail | sl_name | sl_avail | total_avail
 ----------+----------+---------+----------+-------------
  sh1      |        2 | sl1     |        5 |           2
  sh3      |        4 | sl7     |        7 |           4
 (2 rows)
-</ProgramListing>
-</Para>
+</programlisting>
+</para>
 
-<Para>
+<para>
     The output of the parser this time is the query tree
 
-<ProgramListing>
+<programlisting>
 SELECT shoe_ready.shoename, shoe_ready.sh_avail,
        shoe_ready.sl_name, shoe_ready.sl_avail,
        shoe_ready.total_avail
   FROM shoe_ready shoe_ready
- WHERE shoe_ready.total_avail >= 2;
-</ProgramListing>
+ WHERE shoe_ready.total_avail &gt;= 2;
+</programlisting>
 
     The first rule applied will be the one for the 
     <literal>shoe_ready</literal> view and it results in the
     query tree
 
-<ProgramListing>
+<programlisting>
 SELECT shoe_ready.shoename, shoe_ready.sh_avail,
        shoe_ready.sl_name, shoe_ready.sl_avail,
        shoe_ready.total_avail
@@ -594,16 +594,16 @@ SELECT shoe_ready.shoename, shoe_ready.sh_avail,
                min(rsh.sh_avail, rsl.sl_avail) AS total_avail
           FROM shoe rsh, shoelace rsl
          WHERE rsl.sl_color = rsh.slcolor
-           AND rsl.sl_len_cm >= rsh.slminlen_cm
-           AND rsl.sl_len_cm <= rsh.slmaxlen_cm) shoe_ready
- WHERE shoe_ready.total_avail >= 2;
-</ProgramListing>
+           AND rsl.sl_len_cm &gt;= rsh.slminlen_cm
+           AND rsl.sl_len_cm &lt;= rsh.slmaxlen_cm) shoe_ready
+ WHERE shoe_ready.total_avail &gt;= 2;
+</programlisting>
 
     Similarly, the rules for <literal>shoe</literal> and
     <literal>shoelace</literal> are substituted into the range table of
     the subquery, leading to a three-level final query tree:
 
-<ProgramListing>
+<programlisting>
 SELECT shoe_ready.shoename, shoe_ready.sh_avail,
        shoe_ready.sl_name, shoe_ready.sl_avail,
        shoe_ready.total_avail
@@ -631,10 +631,10 @@ SELECT shoe_ready.shoename, shoe_ready.sh_avail,
                   FROM shoelace_data s, unit u
                  WHERE s.sl_unit = u.un_name) rsl
          WHERE rsl.sl_color = rsh.slcolor
-           AND rsl.sl_len_cm >= rsh.slminlen_cm
-           AND rsl.sl_len_cm <= rsh.slmaxlen_cm) shoe_ready
- WHERE shoe_ready.total_avail > 2;
-</ProgramListing>
+           AND rsl.sl_len_cm &gt;= rsh.slminlen_cm
+           AND rsl.sl_len_cm &lt;= rsh.slmaxlen_cm) shoe_ready
+ WHERE shoe_ready.total_avail &gt; 2;
+</programlisting>
    </para>
 
    <para>
@@ -650,8 +650,8 @@ SELECT shoe_ready.shoename, shoe_ready.sh_avail,
     system doesn't have to concern itself with.
    </para>
 
-   <Note>
-    <Para>
+   <note>
+    <para>
     There is currently no recursion stopping mechanism for view rules
     in the rule system (only for the other kinds of rules).  This
     doesn't hurt much, because the only way to push this into an
@@ -662,20 +662,20 @@ SELECT shoe_ready.shoename, shoe_ready.sh_avail,
     never happen if <command>CREATE VIEW</command> is used because for
     the first <command>CREATE VIEW</command>, the second relation does
     not exist and thus the first view cannot select from the second.
-    </Para>
-   </Note>
-</Sect2>
+    </para>
+   </note>
+</sect2>
 
-<Sect2>
-<Title>View Rules in Non-<command>SELECT</command> Statements</Title>
+<sect2>
+<title>View Rules in Non-<command>SELECT</command> Statements</title>
 
-<Para>
+<para>
     Two details of the query tree aren't touched in the description of
     view rules above. These are the command type and the result relation.
     In fact, view rules don't need this information.
-</Para>
+</para>
 
-<Para>
+<para>
     There are only a few differences between a query tree for a
     <command>SELECT</command> and one for any other
     command. Obviously, they have a different command type and for a
@@ -685,41 +685,41 @@ SELECT shoe_ready.shoename, shoe_ready.sh_avail,
     <literal>t1</> and <literal>t2</> with columns <literal>a</> and
     <literal>b</>, the query trees for the two statements
 
-<ProgramListing>
+<programlisting>
 SELECT t2.b FROM t1, t2 WHERE t1.a = t2.a;
 
 UPDATE t1 SET b = t2.b WHERE t1.a = t2.a;
-</ProgramListing>
+</programlisting>
 
     are nearly identical.  In particular:
 
-    <ItemizedList>
-        <ListItem>
-        <Para>
+    <itemizedlist>
+        <listitem>
+        <para>
             The range tables contain entries for the tables <literal>t1</> and <literal>t2</>.
-        </Para>
-        </ListItem>
+        </para>
+        </listitem>
 
-        <ListItem>
-        <Para>
+        <listitem>
+        <para>
             The target lists contain one variable that points to column
             <literal>b</> of the range table entry for table <literal>t2</>.
-        </Para>
-        </ListItem>
+        </para>
+        </listitem>
 
-        <ListItem>
-        <Para>
+        <listitem>
+        <para>
             The qualification expressions compare the columns <literal>a</> of both
             range-table entries for equality.
-        </Para>
-        </ListItem>
+        </para>
+        </listitem>
 
-        <ListItem>
-        <Para>
+        <listitem>
+        <para>
             The join trees show a simple join between <literal>t1</> and <literal>t2</>.
-        </Para>
-        </ListItem>
-    </ItemizedList>
+        </para>
+        </listitem>
+    </itemizedlist>
    </para>
 
    <para>
@@ -729,16 +729,16 @@ UPDATE t1 SET b = t2.b WHERE t1.a = t2.a;
     the target list by the planner and the final query tree will read
     as
 
-<ProgramListing>
+<programlisting>
 UPDATE t1 SET a = t1.a, b = t2.b WHERE t1.a = t2.a;
-</ProgramListing>
+</programlisting>
 
     and thus the executor run over the join will produce exactly the
     same result set as a
 
-<ProgramListing>
+<programlisting>
 SELECT t1.a, t2.b FROM t1, t2 WHERE t1.a = t2.a;
-</ProgramListing>
+</programlisting>
     
     will do. But there is a little problem in
     <command>UPDATE</command>: The executor does not care what the
@@ -750,9 +750,9 @@ SELECT t1.a, t2.b FROM t1, t2 WHERE t1.a = t2.a;
     this is an <command>UPDATE</command>, and it knows that this
     result should go into table <literal>t1</>. But which of the rows that are
     there has to be replaced by the new row?
-</Para>
+</para>
 
-<Para>
+<para>
     To resolve this problem, another entry is added to the target list
     in <command>UPDATE</command> (and also in
     <command>DELETE</command>) statements: the current tuple ID
@@ -762,11 +762,11 @@ SELECT t1.a, t2.b FROM t1, t2 WHERE t1.a = t2.a;
     original row of <literal>t1</> to be updated.  After adding the <acronym>CTID</>
     to the target list, the query actually looks like
 
-<ProgramListing>
+<programlisting>
 SELECT t1.a, t2.b, t1.ctid FROM t1, t2 WHERE t1.a = t2.a;
-</ProgramListing>
+</programlisting>
     
-    Now another detail of <ProductName>PostgreSQL</ProductName> enters
+    Now another detail of <productname>PostgreSQL</productname> enters
     the stage. Old table rows aren't overwritten, and this
     is why <command>ROLLBACK</command> is fast. In an <command>UPDATE</command>,
     the new result row is inserted into the table (after stripping the
@@ -776,26 +776,26 @@ SELECT t1.a, t2.b, t1.ctid FROM t1, t2 WHERE t1.a = t2.a;
     and current transaction ID. Thus the old row is hidden, and after
     the transaction committed the vacuum cleaner can really move it
     out.
-</Para>
+</para>
 
-<Para>
+<para>
     Knowing all that, we can simply apply view rules in absolutely
     the same way to any command. There is no difference.
-</Para>
-</Sect2>
+</para>
+</sect2>
 
-<Sect2>
-<Title>The Power of Views in <ProductName>PostgreSQL</ProductName></Title>
+<sect2>
+<title>The Power of Views in <productname>PostgreSQL</productname></title>
 
-<Para>
+<para>
     The above demonstrates how the rule system incorporates view
     definitions into the original query tree. In the second example, a
     simple <command>SELECT</command> from one view created a final
     query tree that is a join of 4 tables (<literal>unit</> was used twice with
     different names).
-</Para>
+</para>
 
-<Para>
+<para>
     The benefit of implementing views with the rule system is,
     that the planner has all
     the information about which tables have to be scanned plus the
@@ -807,16 +807,16 @@ SELECT t1.a, t2.b, t1.ctid FROM t1, t2 WHERE t1.a = t2.a;
     The planner has to decide which is
     the best path to execute the query, and the more information
     the planner has, the better this decision can be. And
-    the rule system as implemented in <ProductName>PostgreSQL</ProductName>
+    the rule system as implemented in <productname>PostgreSQL</productname>
     ensures, that this is all information available about the query
     up to that point.
-</Para>
-</Sect2>
+</para>
+</sect2>
 
-<Sect2 id="rules-views-update">
-<Title>Updating a View</Title>
+<sect2 id="rules-views-update">
+<title>Updating a View</title>
 
-<Para>
+<para>
     What happens if a view is named as the target relation for an
     <command>INSERT</command>, <command>UPDATE</command>, or
     <command>DELETE</command>?  After doing the substitutions
@@ -824,18 +824,18 @@ SELECT t1.a, t2.b, t1.ctid FROM t1, t2 WHERE t1.a = t2.a;
     relation points at a subquery range-table entry.  This will not
     work, so the rewriter throws an error if it sees it has produced
     such a thing.
-</Para>
+</para>
 
-<Para>
+<para>
     To change this, we can define rules that modify the behavior of
     these kinds of commands. This is the topic of the next section.
-</Para>
-</Sect2>
+</para>
+</sect2>
 
-</Sect1>
+</sect1>
 
-<Sect1 id="rules-update">
-<Title>Rules on <command>INSERT</>, <command>UPDATE</>, and <command>DELETE</></Title>
+<sect1 id="rules-update">
+<title>Rules on <command>INSERT</>, <command>UPDATE</>, and <command>DELETE</></title>
 
 <indexterm zone="rules-update">
  <primary>rule</primary>
@@ -852,67 +852,67 @@ SELECT t1.a, t2.b, t1.ctid FROM t1, t2 WHERE t1.a = t2.a;
  <secondary sortas="DELETE">for DELETE</secondary>
 </indexterm>
 
-<Para>
+<para>
     Rules that are defined on <command>INSERT</>, <command>UPDATE</>,
     and <command>DELETE</> are significantly different from the view rules
     described in the previous section. First, their <command>CREATE
     RULE</command> command allows more:
 
-    <ItemizedList>
-        <ListItem>
-        <Para>
+    <itemizedlist>
+        <listitem>
+        <para>
             They are allowed to have no action.
-        </Para>
-        </ListItem>
+        </para>
+        </listitem>
 
-        <ListItem>
-        <Para>
+        <listitem>
+        <para>
             They can have multiple actions.
-        </Para>
-        </ListItem>
+        </para>
+        </listitem>
 
-        <ListItem>
-        <Para>
+        <listitem>
+        <para>
             They can be <literal>INSTEAD</> or <literal>ALSO</> (default).
-        </Para>
-        </ListItem>
+        </para>
+        </listitem>
 
-        <ListItem>
-        <Para>
+        <listitem>
+        <para>
             The pseudorelations <literal>NEW</> and <literal>OLD</> become useful.
-        </Para>
-        </ListItem>
+        </para>
+        </listitem>
 
-        <ListItem>
-        <Para>
+        <listitem>
+        <para>
             They can have rule qualifications.
-        </Para>
-        </ListItem>
-    </ItemizedList>
+        </para>
+        </listitem>
+    </itemizedlist>
 
     Second, they don't modify the query tree in place. Instead they
     create zero or more new query trees and can throw away the
     original one.
-</Para>
+</para>
 
-<Sect2>
-<Title>How Update Rules Work</Title>
+<sect2>
+<title>How Update Rules Work</title>
 
-<Para>
+<para>
     Keep the syntax
 
-<ProgramListing>
+<programlisting>
 CREATE RULE <replaceable>rule_name</> AS ON <replaceable>event</>
     TO <replaceable>object</> [WHERE <replaceable>rule_qualification</>]
     DO [ALSO|INSTEAD] [<replaceable>action</> | (<replaceable>actions</>) | NOTHING];
-</ProgramListing>
+</programlisting>
 
     in mind.
     In the following, <firstterm>update rules</> means rules that are defined
     on <command>INSERT</>, <command>UPDATE</>, or <command>DELETE</>.
-</Para>
+</para>
 
-<Para>
+<para>
     Update rules get applied by the rule system when the result
     relation and the command type of a query tree are equal to the
     object and event given in the <command>CREATE RULE</command> command.
@@ -921,15 +921,15 @@ CREATE RULE <replaceable>rule_name</> AS ON <replaceable>event</>
     There can be zero (<literal>NOTHING</> key word), one, or multiple actions.
     To simplify, we will look at a rule with one action. This rule
     can have a qualification or not and it can be <literal>INSTEAD</> or <literal>ALSO</> (default).
-</Para>
+</para>
 
-<Para>
+<para>
     What is a rule qualification? It is a restriction that tells
     when the actions of the rule should be done and when not. This
     qualification can only reference the pseudorelations <literal>NEW</> and/or <literal>OLD</>,
     which basically represent the relation that was given as object (but with a
     special meaning).
-</Para>
+</para>
 
    <para>
     So we have four cases that produce the following query trees for
@@ -984,9 +984,9 @@ CREATE RULE <replaceable>rule_name</> AS ON <replaceable>event</>
     added to the list. Since only qualified <literal>INSTEAD</> rules already add the
     original query tree, we end up with either one or two output query trees
     for a rule with one action.
-</Para>
+</para>
 
-<Para>
+<para>
     For <literal>ON INSERT</> rules, the original query (if not suppressed by <literal>INSTEAD</>)
     is done before any actions added by rules.  This allows the actions to
     see the inserted row(s).  But for <literal>ON UPDATE</> and <literal>ON
@@ -994,21 +994,20 @@ CREATE RULE <replaceable>rule_name</> AS ON <replaceable>event</>
     This ensures that the actions can see the to-be-updated or to-be-deleted
     rows; otherwise, the actions might do nothing because they find no rows
     matching their qualifications.
-</Para>
+</para>
 
-<Para>
+<para>
     The query trees generated from rule actions are thrown into the
     rewrite system again, and maybe more rules get applied resulting
     in more or less query trees.
-    So the query trees in the rule actions must have either a different command type
-    or a different result relation, otherwise, this recursive process will end up in a loop.
-    There is a fixed recursion limit of currently 100 iterations.
-    If after 100 iterations there are still update rules to apply, the
-    rule system assumes a loop over multiple rule definitions and reports
-    an error.
-</Para>
-
-<Para>
+    So a rule's actions must have either a different
+    command type or a different result relation than the rule itself is
+    on, otherwise this recursive process will end up in an infinite loop.
+    (Recursive expansion of a rule will be detected and reported as an
+    error.)
+</para>
+
+<para>
     The query trees found in the actions of the
     <structname>pg_rewrite</structname> system catalog are only
     templates. Since they can reference the range-table entries for
@@ -1020,25 +1019,25 @@ CREATE RULE <replaceable>rule_name</> AS ON <replaceable>event</>
     a null value (for an <command>INSERT</command>). Any reference to <literal>OLD</> is
     replaced by a reference to the range-table entry that is the
     result relation.
-</Para>
+</para>
 
-<Para>
+<para>
     After the system is done applying update rules, it applies view rules to the
     produced query tree(s).  Views cannot insert new update actions so
     there is no need to apply update rules to the output of view rewriting.
-</Para>
+</para>
 
-<Sect3>
-<Title>A First Rule Step by Step</Title>
+<sect3>
+<title>A First Rule Step by Step</title>
 
-<Para>
+<para>
     Say we want to trace changes to the <literal>sl_avail</> column in the
     <literal>shoelace_data</literal> relation. So we set up a log table
     and a rule that conditionally writes a log entry when an
     <command>UPDATE</command> is performed on
     <literal>shoelace_data</literal>.
 
-<ProgramListing>
+<programlisting>
 CREATE TABLE shoelace_log (
     sl_name    text,          -- shoelace changed
     sl_avail   integer,       -- new available value
@@ -1054,53 +1053,53 @@ CREATE RULE log_shoelace AS ON UPDATE TO shoelace_data
                                     current_user,
                                     current_timestamp
                                 );
-</ProgramListing>
-</Para>
+</programlisting>
+</para>
 
-<Para>
+<para>
     Now someone does:
 
-<ProgramListing>
+<programlisting>
 UPDATE shoelace_data SET sl_avail = 6 WHERE sl_name = 'sl7';
-</ProgramListing>
+</programlisting>
 
     and we look at the log table:
 
-<ProgramListing>
+<programlisting>
 SELECT * FROM shoelace_log;
 
  sl_name | sl_avail | log_who | log_when                        
 ---------+----------+---------+----------------------------------
  sl7     |        6 | Al      | Tue Oct 20 16:14:45 1998 MET DST
 (1 row)
-</ProgramListing>
+</programlisting>
    </para>
 
    <para>
     That's what we expected. What happened in the background is the following.
     The parser created the query tree
 
-<ProgramListing>
+<programlisting>
 UPDATE shoelace_data SET sl_avail = 6
   FROM shoelace_data shoelace_data
  WHERE shoelace_data.sl_name = 'sl7';
-</ProgramListing>
+</programlisting>
 
     There is a rule <literal>log_shoelace</literal> that is <literal>ON UPDATE</> with the rule
     qualification expression
 
-<ProgramListing>
+<programlisting>
 NEW.sl_avail &lt;&gt; OLD.sl_avail
-</ProgramListing>
+</programlisting>
 
     and the action
 
-<ProgramListing>
+<programlisting>
 INSERT INTO shoelace_log VALUES (
        *NEW*.sl_name, *NEW*.sl_avail,
        current_user, current_timestamp )
   FROM shoelace_data *NEW*, shoelace_data *OLD*;
-</ProgramListing>
+</programlisting>
 
     (This looks a little strange since you can't normally write
     <literal>INSERT ... VALUES ... FROM</>.  The <literal>FROM</>
@@ -1108,33 +1107,33 @@ INSERT INTO shoelace_log VALUES (
     in the query tree for <literal>*NEW*</> and <literal>*OLD*</>.
     These are needed so that they can be referenced by variables in
     the <command>INSERT</command> command's query tree.)
-</Para>
+</para>
 
-<Para>
+<para>
     The rule is a qualified <literal>ALSO</> rule, so the rule system
     has to return two query trees: the modified rule action and the original
     query tree. In step 1, the range table of the original query is
     incorporated into the rule's action query tree. This results in:
 
-<ProgramListing>
+<programlisting>
 INSERT INTO shoelace_log VALUES (
        *NEW*.sl_name, *NEW*.sl_avail,
        current_user, current_timestamp )
   FROM shoelace_data *NEW*, shoelace_data *OLD*,
        <emphasis>shoelace_data shoelace_data</emphasis>;
-</ProgramListing>
+</programlisting>
 
     In step 2, the rule qualification is added to it, so the result set
     is restricted to rows where <literal>sl_avail</> changes:
 
-<ProgramListing>
+<programlisting>
 INSERT INTO shoelace_log VALUES (
        *NEW*.sl_name, *NEW*.sl_avail,
        current_user, current_timestamp )
   FROM shoelace_data *NEW*, shoelace_data *OLD*,
        shoelace_data shoelace_data
  <emphasis>WHERE *NEW*.sl_avail &lt;&gt; *OLD*.sl_avail</emphasis>;
-</ProgramListing>
+</programlisting>
 
     (This looks even stranger, since <literal>INSERT ... VALUES</> doesn't have
     a <literal>WHERE</> clause either, but the planner and executor will have no
@@ -1147,7 +1146,7 @@ INSERT INTO shoelace_log VALUES (
     restricting the result set further to only the rows that would have been touched
     by the original query:
 
-<ProgramListing>
+<programlisting>
 INSERT INTO shoelace_log VALUES (
        *NEW*.sl_name, *NEW*.sl_avail,
        current_user, current_timestamp )
@@ -1155,7 +1154,7 @@ INSERT INTO shoelace_log VALUES (
        shoelace_data shoelace_data
  WHERE *NEW*.sl_avail &lt;&gt; *OLD*.sl_avail
    <emphasis>AND shoelace_data.sl_name = 'sl7'</emphasis>;
-</ProgramListing>
+</programlisting>
    </para>
 
    <para>
@@ -1163,7 +1162,7 @@ INSERT INTO shoelace_log VALUES (
     original query tree or by the matching variable references
     from the result relation:
 
-<ProgramListing>
+<programlisting>
 INSERT INTO shoelace_log VALUES (
        <emphasis>shoelace_data.sl_name</emphasis>, <emphasis>6</emphasis>,
        current_user, current_timestamp )
@@ -1171,14 +1170,14 @@ INSERT INTO shoelace_log VALUES (
        shoelace_data shoelace_data
  WHERE <emphasis>6</emphasis> &lt;&gt; *OLD*.sl_avail
    AND shoelace_data.sl_name = 'sl7';
-</ProgramListing>
+</programlisting>
 
    </para>
 
    <para>
     Step 5 changes <literal>OLD</> references into result relation references:
 
-<ProgramListing>
+<programlisting>
 INSERT INTO shoelace_log VALUES (
        shoelace_data.sl_name, 6,
        current_user, current_timestamp )
@@ -1186,7 +1185,7 @@ INSERT INTO shoelace_log VALUES (
        shoelace_data shoelace_data
  WHERE 6 &lt;&gt; <emphasis>shoelace_data.sl_avail</emphasis>
    AND shoelace_data.sl_name = 'sl7';
-</ProgramListing>
+</programlisting>
    </para>
 
    <para>
@@ -1194,7 +1193,7 @@ INSERT INTO shoelace_log VALUES (
     original query tree.  In short, the output from the rule system
     is a list of two query trees that correspond to these statements:
 
-<ProgramListing>
+<programlisting>
 INSERT INTO shoelace_log VALUES (
        shoelace_data.sl_name, 6,
        current_user, current_timestamp )
@@ -1204,7 +1203,7 @@ INSERT INTO shoelace_log VALUES (
 
 UPDATE shoelace_data SET sl_avail = 6
  WHERE sl_name = 'sl7';
-</ProgramListing>
+</programlisting>
 
     These are executed in this order, and that is exactly what
     the rule was meant to do.
@@ -1214,10 +1213,10 @@ UPDATE shoelace_data SET sl_avail = 6
     The substitutions and the added qualifications
     ensure that, if the original query would be, say,
 
-<ProgramListing>
+<programlisting>
 UPDATE shoelace_data SET sl_color = 'green'
  WHERE sl_name = 'sl7';
-</ProgramListing>
+</programlisting>
 
     no log entry would get written.  In that case, the original query
     tree does not contain a target list entry for
@@ -1225,14 +1224,14 @@ UPDATE shoelace_data SET sl_color = 'green'
     replaced by <literal>shoelace_data.sl_avail</>.  Thus, the extra
     command generated by the rule is
 
-<ProgramListing>
+<programlisting>
 INSERT INTO shoelace_log VALUES (
        shoelace_data.sl_name, <emphasis>shoelace_data.sl_avail</emphasis>,
        current_user, current_timestamp )
   FROM shoelace_data
  WHERE <emphasis>shoelace_data.sl_avail</emphasis> &lt;&gt; shoelace_data.sl_avail
    AND shoelace_data.sl_name = 'sl7';
-</ProgramListing>
+</programlisting>
 
     and that qualification will never be true.
    </para>
@@ -1241,59 +1240,59 @@ INSERT INTO shoelace_log VALUES (
     It will also work if the original query modifies multiple rows. So
     if someone issued the command
 
-<ProgramListing>
+<programlisting>
 UPDATE shoelace_data SET sl_avail = 0
  WHERE sl_color = 'black';
-</ProgramListing>
+</programlisting>
 
     four rows in fact get updated (<literal>sl1</>, <literal>sl2</>, <literal>sl3</>, and <literal>sl4</>).
     But <literal>sl3</> already has <literal>sl_avail = 0</>.   In this case, the original
     query trees qualification is different and that results
     in the extra query tree
 
-<ProgramListing>
+<programlisting>
 INSERT INTO shoelace_log
 SELECT shoelace_data.sl_name, 0,
        current_user, current_timestamp
   FROM shoelace_data
  WHERE 0 &lt;&gt; shoelace_data.sl_avail
    AND <emphasis>shoelace_data.sl_color = 'black'</emphasis>;
-</ProgramListing>
+</programlisting>
 
     being generated by the rule.  This query tree will surely insert
     three new log entries. And that's absolutely correct.
-</Para>
+</para>
 
-<Para>
+<para>
     Here we can see why it is important that the original query tree
     is executed last.  If the <command>UPDATE</command> had been
     executed first, all the rows would have already been set to zero, so the
     logging <command>INSERT</command> would not find any row where
     <literal>0 &lt;&gt; shoelace_data.sl_avail</literal>.
-</Para>
-</Sect3>
+</para>
+</sect3>
 
-</Sect2>
+</sect2>
 
-<Sect2 id="rules-update-views">
-<Title>Cooperation with Views</Title>
+<sect2 id="rules-update-views">
+<title>Cooperation with Views</title>
 
 <indexterm zone="rules-update-views"><primary>view</><secondary>updating</></>
 
-<Para>
+<para>
     A simple way to protect view relations from the mentioned
     possibility that someone can try to run <command>INSERT</command>,
     <command>UPDATE</command>, or <command>DELETE</command> on them is
     to let those query trees get thrown away.  So we create the rules
 
-<ProgramListing>
+<programlisting>
 CREATE RULE shoe_ins_protect AS ON INSERT TO shoe
     DO INSTEAD NOTHING;
 CREATE RULE shoe_upd_protect AS ON UPDATE TO shoe
     DO INSTEAD NOTHING;
 CREATE RULE shoe_del_protect AS ON DELETE TO shoe
     DO INSTEAD NOTHING;
-</ProgramListing>
+</programlisting>
 
     If someone now tries to do any of these operations on the view
     relation <literal>shoe</literal>, the rule system will
@@ -1302,16 +1301,16 @@ CREATE RULE shoe_del_protect AS ON DELETE TO shoe
     query trees will be empty and the whole query will become
     nothing because there is nothing left to be optimized or
     executed after the rule system is done with it.
-</Para>
+</para>
 
-<Para>
+<para>
     A more sophisticated way to use the rule system is to
     create rules that rewrite the query tree into one that
     does the right operation on the real tables. To do that
     on the <literal>shoelace</literal> view, we create
     the following rules:
 
-<ProgramListing>
+<programlisting>
 CREATE RULE shoelace_ins AS ON INSERT TO shoelace
     DO INSTEAD
     INSERT INTO shoelace_data VALUES (
@@ -1336,7 +1335,7 @@ CREATE RULE shoelace_del AS ON DELETE TO shoelace
     DO INSTEAD
     DELETE FROM shoelace_data
      WHERE sl_name = OLD.sl_name;
-</ProgramListing>
+</programlisting>
    </para>
 
    <para>
@@ -1347,7 +1346,7 @@ CREATE RULE shoelace_del AS ON DELETE TO shoelace
     insert the items from the part list, and one with a special
     trick. The creation commands for these are:
 
-<ProgramListing>
+<programlisting>
 CREATE TABLE shoelace_arrive (
     arr_name    text,
     arr_quant   integer
@@ -1363,12 +1362,12 @@ CREATE RULE shoelace_ok_ins AS ON INSERT TO shoelace_ok
     UPDATE shoelace
        SET sl_avail = sl_avail + NEW.ok_quant
      WHERE sl_name = NEW.ok_name;
-</ProgramListing>
+</programlisting>
 
     Now you can fill the table <literal>shoelace_arrive</literal> with
     the data from the parts list:
 
-<ProgramListing>
+<programlisting>
 SELECT * FROM shoelace_arrive;
 
  arr_name | arr_quant
@@ -1377,11 +1376,11 @@ SELECT * FROM shoelace_arrive;
  sl6      |        20
  sl8      |        20
 (3 rows)
-</ProgramListing>
+</programlisting>
 
     Take a quick look at the current data:
     
-<ProgramListing>
+<programlisting>
 SELECT * FROM shoelace;
 
  sl_name  | sl_avail | sl_color | sl_len | sl_unit | sl_len_cm
@@ -1395,17 +1394,17 @@ SELECT * FROM shoelace;
  sl5      |        4 | brown    |      1 | m       |       100
  sl6      |        0 | brown    |    0.9 | m       |        90
 (8 rows)
-</ProgramListing>
+</programlisting>
 
     Now move the arrived shoelaces in:
 
-<ProgramListing>
+<programlisting>
 INSERT INTO shoelace_ok SELECT * FROM shoelace_arrive;
-</ProgramListing>
+</programlisting>
 
     and check the results:
 
-<ProgramListing>
+<programlisting>
 SELECT * FROM shoelace ORDER BY sl_name;
 
  sl_name  | sl_avail | sl_color | sl_len | sl_unit | sl_len_cm
@@ -1429,7 +1428,7 @@ SELECT * FROM shoelace_log;
  sl6     |       20 | Al     | Tue Oct 20 19:25:16 1998 MET DST
  sl8     |       21 | Al     | Tue Oct 20 19:25:16 1998 MET DST
 (4 rows)
-</ProgramListing>
+</programlisting>
    </para>
 
    <para>
@@ -1438,30 +1437,30 @@ SELECT * FROM shoelace_log;
     transformation will be the last in this chapter.  First, there is
     the parser's output
 
-<ProgramListing>
+<programlisting>
 INSERT INTO shoelace_ok
 SELECT shoelace_arrive.arr_name, shoelace_arrive.arr_quant
   FROM shoelace_arrive shoelace_arrive, shoelace_ok shoelace_ok;
-</ProgramListing>
+</programlisting>
 
     Now the first rule <literal>shoelace_ok_ins</literal> is applied and turns this
     into
 
-<ProgramListing>
+<programlisting>
 UPDATE shoelace
    SET sl_avail = shoelace.sl_avail + shoelace_arrive.arr_quant
   FROM shoelace_arrive shoelace_arrive, shoelace_ok shoelace_ok,
        shoelace_ok *OLD*, shoelace_ok *NEW*,
        shoelace shoelace
  WHERE shoelace.sl_name = shoelace_arrive.arr_name;
-</ProgramListing>
+</programlisting>
 
     and throws away the original <command>INSERT</command> on
     <literal>shoelace_ok</literal>.  This rewritten query is passed to
     the rule system again, and the second applied rule
     <literal>shoelace_upd</literal> produces
 
-<ProgramListing>
+<programlisting>
 UPDATE shoelace_data
    SET sl_name = shoelace.sl_name,
        sl_avail = shoelace.sl_avail + shoelace_arrive.arr_quant,
@@ -1474,14 +1473,14 @@ UPDATE shoelace_data
        shoelace *NEW*, shoelace_data shoelace_data
  WHERE shoelace.sl_name = shoelace_arrive.arr_name
    AND shoelace_data.sl_name = shoelace.sl_name;
-</ProgramListing>
+</programlisting>
 
     Again it's an <literal>INSTEAD</> rule and the previous query tree is trashed.
     Note that this query still uses the view <literal>shoelace</literal>.
     But the rule system isn't finished with this step, so it continues
     and applies the <literal>_RETURN</literal> rule on it, and we get
 
-<ProgramListing>
+<programlisting>
 UPDATE shoelace_data
    SET sl_name = s.sl_name,
        sl_avail = s.sl_avail + shoelace_arrive.arr_quant,
@@ -1496,12 +1495,12 @@ UPDATE shoelace_data
        shoelace_data s, unit u
  WHERE s.sl_name = shoelace_arrive.arr_name
    AND shoelace_data.sl_name = s.sl_name;
-</ProgramListing>
+</programlisting>
 
     Finally, the rule <literal>log_shoelace</literal> gets applied,
     producing the extra query tree
 
-<ProgramListing>
+<programlisting>
 INSERT INTO shoelace_log
 SELECT s.sl_name,
        s.sl_avail + shoelace_arrive.arr_quant,
@@ -1518,7 +1517,7 @@ SELECT s.sl_name,
  WHERE s.sl_name = shoelace_arrive.arr_name
    AND shoelace_data.sl_name = s.sl_name
    AND (s.sl_avail + shoelace_arrive.arr_quant) &lt;&gt; s.sl_avail;
-</ProgramListing>
+</programlisting>
     
     After that the rule system runs out of rules and returns the 
     generated query trees.
@@ -1526,9 +1525,9 @@ SELECT s.sl_name,
 
    <para>
     So we end up with two final query trees that are equivalent to the
-    <Acronym>SQL</Acronym> statements
+    <acronym>SQL</acronym> statements
 
-<ProgramListing>
+<programlisting>
 INSERT INTO shoelace_log
 SELECT s.sl_name,
        s.sl_avail + shoelace_arrive.arr_quant,
@@ -1547,15 +1546,15 @@ UPDATE shoelace_data
        shoelace_data s
  WHERE s.sl_name = shoelace_arrive.sl_name
    AND shoelace_data.sl_name = s.sl_name;
-</ProgramListing>
+</programlisting>
 
     The result is that data coming from one relation inserted into another,
     changed into updates on a third, changed into updating
     a fourth plus logging that final update in a fifth
     gets reduced into two queries.
-</Para>
+</para>
 
-<Para>
+<para>
     There is a little detail that's a bit ugly. Looking at the two
     queries, it turns out that the <literal>shoelace_data</literal>
     relation appears twice in the range table where it could
@@ -1565,26 +1564,26 @@ UPDATE shoelace_data
 
 <literallayout class="monospaced">
 Nested Loop
-  ->  Merge Join
-        ->  Seq Scan
-              ->  Sort
-                    ->  Seq Scan on s
-        ->  Seq Scan
-              ->  Sort
-                    ->  Seq Scan on shoelace_arrive
-  ->  Seq Scan on shoelace_data
+  -&gt;  Merge Join
+        -&gt;  Seq Scan
+              -&gt;  Sort
+                    -&gt;  Seq Scan on s
+        -&gt;  Seq Scan
+              -&gt;  Sort
+                    -&gt;  Seq Scan on shoelace_arrive
+  -&gt;  Seq Scan on shoelace_data
 </literallayout>
 
     while omitting the extra range table entry would result in a
 
 <literallayout class="monospaced">
 Merge Join
-  ->  Seq Scan
-        ->  Sort
-              ->  Seq Scan on s
-  ->  Seq Scan
-        ->  Sort
-              ->  Seq Scan on shoelace_arrive
+  -&gt;  Seq Scan
+        -&gt;  Sort
+              -&gt;  Seq Scan on s
+  -&gt;  Seq Scan
+        -&gt;  Sort
+              -&gt;  Seq Scan on shoelace_arrive
 </literallayout>
 
     which produces exactly the same entries in the log table.  Thus,
@@ -1593,63 +1592,63 @@ Merge Join
     necessary. And the same redundant scan is done once more in the
     <command>UPDATE</command>. But it was a really hard job to make
     that all possible at all.
-</Para>
+</para>
 
-<Para>
+<para>
     Now we make a final demonstration of the
-    <ProductName>PostgreSQL</ProductName> rule system and its power.
+    <productname>PostgreSQL</productname> rule system and its power.
     Say you add some shoelaces with extraordinary colors to your
     database:
 
-<ProgramListing>
+<programlisting>
 INSERT INTO shoelace VALUES ('sl9', 0, 'pink', 35.0, 'inch', 0.0);
 INSERT INTO shoelace VALUES ('sl10', 1000, 'magenta', 40.0, 'inch', 0.0);
-</ProgramListing>
+</programlisting>
 
     We would like to make a view to check which
     <literal>shoelace</literal> entries do not fit any shoe in color.
     The view for this is
 
-<ProgramListing>
+<programlisting>
 CREATE VIEW shoelace_mismatch AS
     SELECT * FROM shoelace WHERE NOT EXISTS
         (SELECT shoename FROM shoe WHERE slcolor = sl_color);
-</ProgramListing>
+</programlisting>
 
     Its output is
 
-<ProgramListing>
+<programlisting>
 SELECT * FROM shoelace_mismatch;
 
  sl_name | sl_avail | sl_color | sl_len | sl_unit | sl_len_cm
 ---------+----------+----------+--------+---------+-----------
  sl9     |        0 | pink     |     35 | inch    |      88.9
  sl10    |     1000 | magenta  |     40 | inch    |     101.6
-</ProgramListing>
+</programlisting>
    </para>
 
    <para>
     Now we want to set it up so that mismatching shoelaces that are
     not in stock are deleted from the database.
-    To make it a little harder for <ProductName>PostgreSQL</ProductName>,
+    To make it a little harder for <productname>PostgreSQL</productname>,
     we don't delete it directly. Instead we create one more view
 
-<ProgramListing>
+<programlisting>
 CREATE VIEW shoelace_can_delete AS
     SELECT * FROM shoelace_mismatch WHERE sl_avail = 0;
-</ProgramListing>
+</programlisting>
 
     and do it this way:
 
-<ProgramListing>
+<programlisting>
 DELETE FROM shoelace WHERE EXISTS
     (SELECT * FROM shoelace_can_delete
              WHERE sl_name = shoelace.sl_name);
-</ProgramListing>
+</programlisting>
 
     <foreignphrase>Voil�</foreignphrase>:
 
-<ProgramListing>
+<programlisting>
 SELECT * FROM shoelace;
 
  sl_name | sl_avail | sl_color | sl_len | sl_unit | sl_len_cm
@@ -1664,7 +1663,7 @@ SELECT * FROM shoelace;
  sl5     |        4 | brown    |      1 | m       |       100
  sl6     |       20 | brown    |    0.9 | m       |        90
 (9 rows)
-</ProgramListing>
+</programlisting>
    </para>
 
    <para>
@@ -1675,19 +1674,19 @@ SELECT * FROM shoelace;
     gets rewritten into 
     one single query tree that deletes the requested data
     from a real table.
-</Para>
+</para>
 
-<Para>
+<para>
     There are probably only a few situations out in the real world
     where such a construct is necessary. But it makes you feel
     comfortable that it works.
-</Para>
-</Sect2>
+</para>
+</sect2>
 
-</Sect1>
+</sect1>
 
-<Sect1 id="rules-privileges">
-<Title>Rules and Privileges</Title>
+<sect1 id="rules-privileges">
+<title>Rules and Privileges</title>
 
 <indexterm zone="rules-privileges">
  <primary>privilege</primary>
@@ -1699,36 +1698,36 @@ SELECT * FROM shoelace;
  <secondary sortas="Sichten">with views</secondary>
 </indexterm>
 
-<Para>
-    Due to rewriting of queries by the <ProductName>PostgreSQL</ProductName>
+<para>
+    Due to rewriting of queries by the <productname>PostgreSQL</productname>
     rule system, other tables/views than those used in the original
     query get accessed. When update rules are used, this can include write access
     to tables.
-</Para>
+</para>
 
-<Para>
+<para>
     Rewrite rules don't have a separate owner. The owner of
     a relation (table or view) is automatically the owner of the
     rewrite rules that are defined for it.
-    The <ProductName>PostgreSQL</ProductName> rule system changes the
+    The <productname>PostgreSQL</productname> rule system changes the
     behavior of the default access control system. Relations that
     are used due to rules get checked against the
     privileges of the rule owner, not the user invoking the rule.
     This means that a user only needs the required privileges
     for the tables/views that he names explicitly in his queries.
-</Para>
+</para>
 
-<Para>
+<para>
     For example: A user has a list of phone numbers where some of
     them are private, the others are of interest for the secretary of the office.
     He can construct the following:
 
-<ProgramListing>
+<programlisting>
 CREATE TABLE phone_data (person text, phone text, private boolean);
 CREATE VIEW phone_number AS
     SELECT person, phone FROM phone_data WHERE NOT private;
 GRANT SELECT ON phone_number TO secretary;
-</ProgramListing>
+</programlisting>
     
     Nobody except him (and the database superusers) can access the
     <literal>phone_data</> table. But because of the <command>GRANT</>,
@@ -1744,9 +1743,9 @@ GRANT SELECT ON phone_number TO secretary;
     <literal>phone_number</> is also performed, but this is done
     against the invoking user, so nobody but the user and the
     secretary can use it.
-</Para>
+</para>
 
-<Para>
+<para>
     The privileges are checked rule by rule. So the secretary is for now the
     only one who can see the public phone numbers. But the secretary can setup
     another view and grant access to that to the public. Then, anyone
@@ -1757,9 +1756,9 @@ GRANT SELECT ON phone_number TO secretary;
     And as soon as the user will notice, that the secretary opened
     his <literal>phone_number</> view, he can revoke his access. Immediately, any
     access to the secretary's view would fail.
-</Para>
+</para>
 
-<Para>
+<para>
     One might think that this rule-by-rule checking is a security
     hole, but in fact it isn't.   But if it did not work this way, the secretary
     could set up a table with the same columns as <literal>phone_number</> and
@@ -1768,9 +1767,9 @@ GRANT SELECT ON phone_number TO secretary;
     <command>GRANT</command> command means, <quote>I trust you</quote>.
     If someone you trust does the thing above, it's time to
     think it over and then use <command>REVOKE</command>.
-</Para>
+</para>
 
-<Para>
+<para>
     This mechanism also works for update rules. In the examples of
     the previous section, the owner of the tables in the example
     database could grant the privileges <literal>SELECT</>,
@@ -1780,20 +1779,20 @@ GRANT SELECT ON phone_number TO secretary;
     write log entries will still be executed successfully, and that
     other user could see the log entries.  But he cannot create fake
     entries, nor could he manipulate or remove existing ones.
-</Para>
-</Sect1>
+</para>
+</sect1>
 
-<Sect1 id="rules-status">
-<Title>Rules and Command Status</Title>
+<sect1 id="rules-status">
+<title>Rules and Command Status</title>
 
-<Para>
-    The <ProductName>PostgreSQL</ProductName> server returns a command
+<para>
+    The <productname>PostgreSQL</productname> server returns a command
     status string, such as <literal>INSERT 149592 1</>, for each
     command it receives.  This is simple enough when there are no rules
     involved, but what happens when the query is rewritten by rules?
-</Para>
+</para>
 
-<Para>
+<para>
     Rules affect the command status as follows:
 
     <itemizedlist>
@@ -1828,18 +1827,18 @@ GRANT SELECT ON phone_number TO secretary;
     (This system was established in <productname>PostgreSQL</> 7.3.
     In versions before that, the command status might show different
     results when rules exist.)
-</Para>
+</para>
 
-<Para>
+<para>
     The programmer can ensure that any desired <literal>INSTEAD</> rule is the one
     that sets the command status in the second case, by giving it the
     alphabetically last rule name among the active rules, so that it
     gets applied last.
-</Para>
-</Sect1>
+</para>
+</sect1>
 
-<Sect1 id="rules-triggers">
-<Title>Rules versus Triggers</Title>
+<sect1 id="rules-triggers">
+<title>Rules versus Triggers</title>
 
 <indexterm zone="rules-triggers">
  <primary>rule</primary>
@@ -1851,9 +1850,9 @@ GRANT SELECT ON phone_number TO secretary;
  <secondary sortas="Regeln">compared with rules</secondary>
 </indexterm>
 
-<Para>
+<para>
     Many things that can be done using triggers can also be
-    implemented using the <ProductName>PostgreSQL</ProductName>
+    implemented using the <productname>PostgreSQL</productname>
     rule system.  One of the things that cannot be implemented by
     rules are some kinds of constraints, especially foreign keys. It is possible
     to place a qualified rule that rewrites a command to <literal>NOTHING</>
@@ -1862,9 +1861,9 @@ GRANT SELECT ON phone_number TO secretary;
     not a good idea. If checks for valid values are required,
     and in the case of an invalid value an error message should
     be generated, it must be done by a trigger.
-</Para>
+</para>
 
-<Para>
+<para>
     On the other hand, a trigger that is fired on
     <command>INSERT</command> on a view can do the same as a rule: put
     the data somewhere else and suppress the insert in the view. But
@@ -1872,9 +1871,9 @@ GRANT SELECT ON phone_number TO secretary;
     <command>DELETE</command>, because there is no real data in the
     view relation that could be scanned, and thus the trigger would
     never get called. Only a rule will help.
-</Para>
+</para>
 
-<Para>
+<para>
     For the things that can be implemented by both, which is best
     depends on the usage of the database.
     A trigger is fired for any affected row once. A rule manipulates
@@ -1884,13 +1883,13 @@ GRANT SELECT ON phone_number TO secretary;
     called for every single row and must execute its operations
     many times.  However, the trigger approach is conceptually far
     simpler than the rule approach, and is easier for novices to get right.
-</Para>
+</para>
 
-<Para>
+<para>
     Here we show an example of how the choice of rules versus triggers
     plays out in one situation.  There are two tables:
 
-<ProgramListing>
+<programlisting>
 CREATE TABLE computer (
     hostname        text,    -- indexed
     manufacturer    text     -- indexed
@@ -1900,51 +1899,51 @@ CREATE TABLE software (
     software        text,    -- indexed
     hostname        text     -- indexed
 );
-</ProgramListing>
+</programlisting>
 
     Both tables have many thousands of rows and the indexes on
     <structfield>hostname</> are unique.  The rule or trigger should
     implement a constraint that deletes rows from <literal>software</>
     that reference a deleted computer.  The trigger would use this command:
 
-<ProgramListing>
+<programlisting>
 DELETE FROM software WHERE hostname = $1;
-</ProgramListing>
+</programlisting>
 
     Since the trigger is called for each individual row deleted from
     <literal>computer</>, it can prepare and save the plan for this
     command and pass the <structfield>hostname</> value in the
     parameter.  The rule would be written as
 
-<ProgramListing>
+<programlisting>
 CREATE RULE computer_del AS ON DELETE TO computer
     DO DELETE FROM software WHERE hostname = OLD.hostname;
-</ProgramListing>
+</programlisting>
    </para>
 
    <para>
     Now we look at different types of deletes. In the case of a 
     
-<ProgramListing>
+<programlisting>
 DELETE FROM computer WHERE hostname = 'mypc.local.net';
-</ProgramListing>
+</programlisting>
 
     the table <literal>computer</> is scanned by index (fast), and the
     command issued by the trigger would also use an index scan (also fast).
     The extra command from the rule would be
 
-<ProgramListing>
+<programlisting>
 DELETE FROM software WHERE computer.hostname = 'mypc.local.net'
                        AND software.hostname = computer.hostname;
-</ProgramListing>
+</programlisting>
 
     Since there are appropriate indexes setup, the planner
     will create a plan of
 
 <literallayout class="monospaced">
 Nestloop
-  ->  Index Scan using comp_hostidx on computer
-  ->  Index Scan using soft_hostidx on software
+  -&gt;  Index Scan using comp_hostidx on computer
+  -&gt;  Index Scan using soft_hostidx on software
 </literallayout>
 
     So there would be not that much difference in speed between
@@ -1957,40 +1956,40 @@ Nestloop
     <literal>old</>. There are two possible commands to do that. One
     is
 
-<ProgramListing>
-DELETE FROM computer WHERE hostname >= 'old'
-                       AND hostname <  'ole'
-</ProgramListing>
+<programlisting>
+DELETE FROM computer WHERE hostname &gt;= 'old'
+                       AND hostname &lt;  'ole'
+</programlisting>
 
     The command added by the rule will be
 
-<ProgramListing>
-DELETE FROM software WHERE computer.hostname >= 'old' AND computer.hostname < 'ole'
+<programlisting>
+DELETE FROM software WHERE computer.hostname &gt;= 'old' AND computer.hostname &lt; 'ole'
                        AND software.hostname = computer.hostname;
-</ProgramListing>
+</programlisting>
 
     with the plan
 
 <literallayout class="monospaced">
 Hash Join
-  ->  Seq Scan on software
-  ->  Hash
-    ->  Index Scan using comp_hostidx on computer
+  -&gt;  Seq Scan on software
+  -&gt;  Hash
+    -&gt;  Index Scan using comp_hostidx on computer
 </literallayout>
 
     The other possible command is
 
-<ProgramListing>
+<programlisting>
 DELETE FROM computer WHERE hostname ~ '^old';
-</ProgramListing>
+</programlisting>
 
     which results in the following executing plan for the command
     added by the rule:
 
 <literallayout class="monospaced">
 Nestloop
-  ->  Index Scan using comp_hostidx on computer
-  ->  Index Scan using soft_hostidx on software
+  -&gt;  Index Scan using comp_hostidx on computer
+  -&gt;  Index Scan using soft_hostidx on software
 </literallayout>
 
     This shows, that the planner does not realize that the
@@ -2007,44 +2006,44 @@ Nestloop
     the table <literal>software</> whether the rule will still be faster in the
     sequential scan situation. 2000 command executions from the trigger over the SPI
     manager take some time, even if all the index blocks will soon be in the cache.
-</Para>
+</para>
 
-<Para>
+<para>
     The last command we look at is
 
-<ProgramListing>
+<programlisting>
 DELETE FROM computer WHERE manufacurer = 'bim';
-</ProgramListing>
+</programlisting>
 
     Again this could result in many rows to be deleted from
     <literal>computer</>. So the trigger will again run many commands
     through the executor.  The command generated by the rule will be
 
-<ProgramListing>
+<programlisting>
 DELETE FROM software WHERE computer.manufacurer = 'bim'
                        AND software.hostname = computer.hostname;
-</ProgramListing>
+</programlisting>
 
     The plan for that command will again be the nested loop over two
     index scans, only using a different index on <literal>computer</>:
 
-<ProgramListing>
+<programlisting>
 Nestloop
-  ->  Index Scan using comp_manufidx on computer
-  ->  Index Scan using soft_hostidx on software
-</ProgramListing>
+  -&gt;  Index Scan using comp_manufidx on computer
+  -&gt;  Index Scan using soft_hostidx on software
+</programlisting>
 
     In any of these cases, the extra commands from the rule system
     will be more or less independent from the number of affected rows
     in a command.
-</Para>
+</para>
 
 <![IGNORE[
 <!-- What's happening with this?  If it doesn't come back, remove this section. -->
-<Para>
+<para>
     Another situation is cases on <command>UPDATE</command> where it depends on the
     change of an attribute if an action should be performed or
-    not. In <ProductName>PostgreSQL</ProductName> version 6.4, the
+    not. In <productname>PostgreSQL</productname> version 6.4, the
     attribute specification for rule events is disabled (it will have
     its comeback latest in 6.5, maybe earlier 
     - stay tuned). So for now the only way to
@@ -2063,17 +2062,17 @@ Nestloop
     target list and will suppress the additional query completely
     if the attribute isn't touched. So the rule, qualified or not,
     will only do its scans if there ever could be something to do.
-</Para>
+</para>
 ]]>
 
-<Para>
+<para>
     The summary is, rules will only be significantly slower than
     triggers if their actions result in large and badly qualified
     joins, a situation where the planner fails.
-</Para>
-</Sect1>
+</para>
+</sect1>
 
-</Chapter>
+</chapter>
 
 <!-- Keep this comment at the end of the file
 Local variables:
diff --git a/doc/src/sgml/sql.sgml b/doc/src/sgml/sql.sgml
index d8dea57..6994053 100644
--- a/doc/src/sgml/sql.sgml
+++ b/doc/src/sgml/sql.sgml
@@ -891,7 +891,7 @@ SELECT [ ALL | DISTINCT [ ON ( <replaceable class="PARAMETER">expression</replac
 
 	<programlisting>
 SELECT * FROM PART
-    WHERE PRICE > 10;
+    WHERE PRICE &gt; 10;
 	</programlisting>
 
 	and get the table:
@@ -913,7 +913,7 @@ SELECT * FROM PART
 	<programlisting>
 SELECT PNAME, PRICE 
     FROM PART
-    WHERE PRICE > 10;
+    WHERE PRICE &gt; 10;
 	</programlisting>
 
 	In this case the result is:
@@ -939,7 +939,7 @@ SELECT PNAME, PRICE
 SELECT PNAME, PRICE 
     FROM PART
     WHERE PNAME = 'Bolt' AND
-         (PRICE = 0 OR PRICE <= 15);
+         (PRICE = 0 OR PRICE &lt;= 15);
 	</programlisting>
 
 	will lead to the result:
@@ -959,7 +959,7 @@ SELECT PNAME, PRICE
 	<programlisting>
 SELECT PNAME, PRICE * 2 AS DOUBLE
     FROM PART
-    WHERE PRICE * 2 < 50;
+    WHERE PRICE * 2 &lt; 50;
 	</programlisting>
 
 	and we get:
@@ -1450,7 +1450,7 @@ SELECT S.SNO, S.SNAME, COUNT(SE.PNO)
     FROM SUPPLIER S, SELLS SE
     WHERE S.SNO = SE.SNO
     GROUP BY S.SNO, S.SNAME
-    HAVING COUNT(SE.PNO) > 1;
+    HAVING COUNT(SE.PNO) &gt; 1;
 	</programlisting>
 
 	and get:
@@ -1487,7 +1487,7 @@ SELECT S.SNO, S.SNAME, COUNT(SE.PNO)
 	<programlisting>
 SELECT * 
     FROM PART 
-    WHERE PRICE > (SELECT PRICE FROM PART
+    WHERE PRICE &gt; (SELECT PRICE FROM PART
                    WHERE PNAME='Screw');
 	</programlisting>
        </para>
@@ -1617,11 +1617,11 @@ gives the result:
 	<programlisting>
 SELECT S.SNO, S.SNAME, S.CITY
     FROM SUPPLIER S
-    WHERE S.SNO > 1
+    WHERE S.SNO &gt; 1
 INTERSECT
     SELECT S.SNO, S.SNAME, S.CITY
     FROM SUPPLIER S
-    WHERE S.SNO < 3;
+    WHERE S.SNO &lt; 3;
 	</programlisting>
 
 	gives the result:
@@ -1641,11 +1641,11 @@ INTERSECT
 	<programlisting>
 SELECT S.SNO, S.SNAME, S.CITY
     FROM SUPPLIER S
-    WHERE S.SNO > 1
+    WHERE S.SNO &gt; 1
 EXCEPT
     SELECT S.SNO, S.SNAME, S.CITY
     FROM SUPPLIER S
-    WHERE S.SNO > 3;
+    WHERE S.SNO &gt; 3;
 	</programlisting>
 
 	gives the result:
diff --git a/doc/src/sgml/trigger.sgml b/doc/src/sgml/trigger.sgml
index 133092b..d6d406d 100644
--- a/doc/src/sgml/trigger.sgml
+++ b/doc/src/sgml/trigger.sgml
@@ -271,10 +271,10 @@ CALLED_AS_TRIGGER(fcinfo)
 </programlisting>
     which expands to
 <programlisting>
-((fcinfo)->context != NULL && IsA((fcinfo)->context, TriggerData))
+((fcinfo)-&gt;context != NULL && IsA((fcinfo)-&gt;context, TriggerData))
 </programlisting>
     If this returns true, then it is safe to cast
-    <literal>fcinfo->context</> to type <literal>TriggerData
+    <literal>fcinfo-&gt;context</> to type <literal>TriggerData
     *</literal> and make use of the pointed-to
     <structname>TriggerData</> structure.  The function must
     <emphasis>not</emphasis> alter the <structname>TriggerData</>
@@ -393,8 +393,8 @@ typedef struct TriggerData
         A pointer to a structure describing the relation that the trigger fired for.
         Look at <filename>utils/rel.h</> for details about
         this structure.  The most interesting things are
-        <literal>tg_relation->rd_att</> (descriptor of the relation
-        tuples) and <literal>tg_relation->rd_rel->relname</>
+        <literal>tg_relation-&gt;rd_att</> (descriptor of the relation
+        tuples) and <literal>tg_relation-&gt;rd_rel-&gt;relname</>
         (relation name; the type is not <type>char*</> but
         <type>NameData</>; use
         <literal>SPI_getrelname(tg_relation)</> to get a <type>char*</> if you
@@ -541,7 +541,7 @@ PG_FUNCTION_INFO_V1(trigf);
 Datum
 trigf(PG_FUNCTION_ARGS)
 {
-    TriggerData *trigdata = (TriggerData *) fcinfo->context;
+    TriggerData *trigdata = (TriggerData *) fcinfo-&gt;context;
     TupleDesc   tupdesc;
     HeapTuple   rettuple;
     char       *when;
@@ -554,36 +554,36 @@ trigf(PG_FUNCTION_ARGS)
         elog(ERROR, "trigf: not called by trigger manager");
 
     /* tuple to return to executor */
-    if (TRIGGER_FIRED_BY_UPDATE(trigdata->tg_event))
-        rettuple = trigdata->tg_newtuple;
+    if (TRIGGER_FIRED_BY_UPDATE(trigdata-&gt;tg_event))
+        rettuple = trigdata-&gt;tg_newtuple;
     else
-        rettuple = trigdata->tg_trigtuple;
+        rettuple = trigdata-&gt;tg_trigtuple;
 
     /* check for null values */
-    if (!TRIGGER_FIRED_BY_DELETE(trigdata->tg_event)
-        && TRIGGER_FIRED_BEFORE(trigdata->tg_event))
+    if (!TRIGGER_FIRED_BY_DELETE(trigdata-&gt;tg_event)
+        && TRIGGER_FIRED_BEFORE(trigdata-&gt;tg_event))
         checknull = true;
 
-    if (TRIGGER_FIRED_BEFORE(trigdata->tg_event))
+    if (TRIGGER_FIRED_BEFORE(trigdata-&gt;tg_event))
         when = "before";
     else
         when = "after ";
 
-    tupdesc = trigdata->tg_relation->rd_att;
+    tupdesc = trigdata-&gt;tg_relation-&gt;rd_att;
 
     /* connect to SPI manager */
-    if ((ret = SPI_connect()) < 0)
+    if ((ret = SPI_connect()) &lt; 0)
         elog(INFO, "trigf (fired %s): SPI_connect returned %d", when, ret);
 
     /* get number of rows in table */
     ret = SPI_exec("SELECT count(*) FROM ttest", 0);
 
-    if (ret < 0)
+    if (ret &lt; 0)
         elog(NOTICE, "trigf (fired %s): SPI_exec returned %d", when, ret);
 
     /* count(*) returns int8, so be careful to convert */
-    i = DatumGetInt64(SPI_getbinval(SPI_tuptable->vals[0],
-                                    SPI_tuptable->tupdesc,
+    i = DatumGetInt64(SPI_getbinval(SPI_tuptable-&gt;vals[0],
+                                    SPI_tuptable-&gt;tupdesc,
                                     1,
                                     &amp;isnull));
 
@@ -622,57 +622,57 @@ CREATE TRIGGER tafter AFTER INSERT OR UPDATE OR DELETE ON ttest
    <para>
     Now you can test the operation of the trigger:
 <screen>
-=> INSERT INTO ttest VALUES (NULL);
+=&gt; INSERT INTO ttest VALUES (NULL);
 INFO:  trigf (fired before): there are 0 rows in ttest
 INSERT 0 0
 
 -- Insertion skipped and AFTER trigger is not fired
 
-=> SELECT * FROM ttest;
+=&gt; SELECT * FROM ttest;
  x
 ---
 (0 rows)
 
-=> INSERT INTO ttest VALUES (1);
+=&gt; INSERT INTO ttest VALUES (1);
 INFO:  trigf (fired before): there are 0 rows in ttest
 INFO:  trigf (fired after ): there are 1 rows in ttest
                                        ^^^^^^^^
                              remember what we said about visibility.
 INSERT 167793 1
-vac=> SELECT * FROM ttest;
+vac=&gt; SELECT * FROM ttest;
  x
 ---
  1
 (1 row)
 
-=> INSERT INTO ttest SELECT x * 2 FROM ttest;
+=&gt; INSERT INTO ttest SELECT x * 2 FROM ttest;
 INFO:  trigf (fired before): there are 1 rows in ttest
 INFO:  trigf (fired after ): there are 2 rows in ttest
                                        ^^^^^^
                              remember what we said about visibility.
 INSERT 167794 1
-=> SELECT * FROM ttest;
+=&gt; SELECT * FROM ttest;
  x
 ---
  1
  2
 (2 rows)
 
-=> UPDATE ttest SET x = NULL WHERE x = 2;
+=&gt; UPDATE ttest SET x = NULL WHERE x = 2;
 INFO:  trigf (fired before): there are 2 rows in ttest
 UPDATE 0
-=> UPDATE ttest SET x = 4 WHERE x = 2;
+=&gt; UPDATE ttest SET x = 4 WHERE x = 2;
 INFO:  trigf (fired before): there are 2 rows in ttest
 INFO:  trigf (fired after ): there are 2 rows in ttest
 UPDATE 1
-vac=> SELECT * FROM ttest;
+vac=&gt; SELECT * FROM ttest;
  x
 ---
  1
  4
 (2 rows)
 
-=> DELETE FROM ttest;
+=&gt; DELETE FROM ttest;
 INFO:  trigf (fired before): there are 2 rows in ttest
 INFO:  trigf (fired after ): there are 1 rows in ttest
 INFO:  trigf (fired before): there are 1 rows in ttest
@@ -680,7 +680,7 @@ INFO:  trigf (fired after ): there are 0 rows in ttest
                                        ^^^^^^
                              remember what we said about visibility.
 DELETE 2
-=> SELECT * FROM ttest;
+=&gt; SELECT * FROM ttest;
  x
 ---
 (0 rows)
diff --git a/doc/src/sgml/user-manag.sgml b/doc/src/sgml/user-manag.sgml
index 8b4b3c9..fcac047 100644
--- a/doc/src/sgml/user-manag.sgml
+++ b/doc/src/sgml/user-manag.sgml
@@ -259,43 +259,38 @@ SELECT groname FROM pg_group;
   <remark>Being moved to the DDL chapter.  Will eventually disappear here.</remark>
 
   <para>
-   When a database object is created, it is assigned an owner. The
-   owner is the user that executed the creation statement. To change
-   the owner of a table, index, sequence, or view, use the
-   <command>ALTER TABLE</command> command. By default, only an owner
-   (or a superuser) can do anything with the object. In order to allow
+   When an object is created, it is assigned an owner. The
+   owner is normally the user that executed the creation statement.
+   For most kinds of objects, the initial state is that only the owner
+   (or a superuser) can do anything with the object. To allow
    other users to use it, <firstterm>privileges</firstterm> must be
    granted.
-  </para>
-
-  <para>
-   There are several different privileges: <literal>SELECT</>,
+   There are several different kinds of privilege: <literal>SELECT</>,
    <literal>INSERT</>, <literal>UPDATE</>, <literal>DELETE</>,
    <literal>RULE</>, <literal>REFERENCES</>, <literal>TRIGGER</>,
    <literal>CREATE</>, <literal>TEMPORARY</>, <literal>EXECUTE</>,
-   <literal>USAGE</>, and <literal>ALL PRIVILEGES</>. For more
+   and <literal>USAGE</>. For more
    information on the different types of privileges supported by
    <productname>PostgreSQL</productname>, see the
    <xref linkend="sql-grant" endterm="sql-grant-title"> reference page.
-   The right to modify or
-   destroy an object is always the privilege of the owner only. To
-   assign privileges, the <command>GRANT</command> command is
+  </para>
+
+  <para>
+   To assign privileges, the <command>GRANT</command> command is
    used. So, if <literal>joe</literal> is an existing user, and
    <literal>accounts</literal> is an existing table, the privilege to
    update the table can be granted with
-
 <programlisting>
 GRANT UPDATE ON accounts TO joe;
 </programlisting>
-   The user executing this command must be the owner of the table. To
-   grant a privilege to a group, use
+   To grant a privilege to a group, use
 <programlisting>
 GRANT SELECT ON accounts TO GROUP staff;
 </programlisting>
-   The special <quote>user</quote> name <literal>PUBLIC</literal> can
+   The special name <literal>PUBLIC</literal> can
    be used to grant a privilege to every user on the system. Writing
    <literal>ALL</literal> in place of a specific privilege specifies that all
-   privileges will be granted.
+   privileges that apply to the object will be granted.
   </para>
 
   <para>
@@ -304,13 +299,21 @@ GRANT SELECT ON accounts TO GROUP staff;
 <programlisting>
 REVOKE ALL ON accounts FROM PUBLIC;
 </programlisting>
-   The special privileges of the table owner (i.e., the right to do
-   <command>DROP</>, <command>GRANT</>, <command>REVOKE</>, etc)
-   are always implicit in being the owner,
-   and cannot be granted or revoked.  But the table owner can choose
+  </para>
+
+  <para>
+   The special privileges of an object's owner (i.e., the right to modify
+   or destroy the object) are always implicit in being the owner,
+   and cannot be granted or revoked.  But the owner can choose
    to revoke his own ordinary privileges, for example to make a
    table read-only for himself as well as others.
   </para>
+
+  <para>
+   An object can be assigned to a new owner with an <command>ALTER</command>
+   command of the appropriate kind for the object.  Only superusers can do
+   this.
+  </para>
  </sect1>
 
  <sect1 id="perm-functions">
diff --git a/doc/src/sgml/xaggr.sgml b/doc/src/sgml/xaggr.sgml
index f9e0da6..30fce8c 100644
--- a/doc/src/sgml/xaggr.sgml
+++ b/doc/src/sgml/xaggr.sgml
@@ -141,7 +141,7 @@ CREATE AGGREGATE array_accum (
 <programlisting>
 SELECT attrelid::regclass, array_accum(attname)
     FROM pg_attribute
-    WHERE attnum > 0 AND attrelid = 'pg_user'::regclass
+    WHERE attnum &gt; 0 AND attrelid = 'pg_user'::regclass
     GROUP BY attrelid;
 
  attrelid |                                 array_accum
@@ -151,7 +151,7 @@ SELECT attrelid::regclass, array_accum(attname)
 
 SELECT attrelid::regclass, array_accum(atttypid)
     FROM pg_attribute
-    WHERE attnum > 0 AND attrelid = 'pg_user'::regclass
+    WHERE attnum &gt; 0 AND attrelid = 'pg_user'::regclass
     GROUP BY attrelid;
 
  attrelid |         array_accum
diff --git a/doc/src/sgml/xfunc.sgml b/doc/src/sgml/xfunc.sgml
index f0e30ba..d187378 100644
--- a/doc/src/sgml/xfunc.sgml
+++ b/doc/src/sgml/xfunc.sgml
@@ -678,7 +678,7 @@ ERROR:  could not determine "anyarray"/"anyelement" type because input has type
      return type, but the converse is not. For example:
 <screen>
 CREATE FUNCTION is_greater(anyelement, anyelement) RETURNS boolean AS $$
-    SELECT $1 > $2;
+    SELECT $1 &gt; $2;
 $$ LANGUAGE SQL;
 
 SELECT is_greater(1, 2);
@@ -1482,8 +1482,8 @@ makepoint(Point *pointx, Point *pointy)
 {
     Point     *new_point = (Point *) palloc(sizeof(Point));
 
-    new_point->x = pointx->x;
-    new_point->y = pointy->y;
+    new_point-&gt;x = pointx-&gt;x;
+    new_point-&gt;y = pointy-&gt;y;
        
     return new_point;
 }
@@ -1642,7 +1642,7 @@ add_one(PG_FUNCTION_ARGS)
     PG_RETURN_INT32(arg + 1);
 }
 
-/* b reference, fixed length */
+/* by reference, fixed length */
 
 PG_FUNCTION_INFO_V1(add_one_float8);
 
@@ -1665,8 +1665,8 @@ makepoint(PG_FUNCTION_ARGS)
     Point     *pointy = PG_GETARG_POINT_P(1);
     Point     *new_point = (Point *) palloc(sizeof(Point));
 
-    new_point->x = pointx->x;
-    new_point->y = pointy->y;
+    new_point-&gt;x = pointx-&gt;x;
+    new_point-&gt;y = pointy-&gt;y;
        
     PG_RETURN_POINT_P(new_point);
 }
@@ -1939,7 +1939,7 @@ include $(PGXS)
       <term><varname>MODULES</varname></term>
       <listitem>
        <para>
-        list of shared objects to be build from source file with same
+        list of shared objects to be built from source file with same
         stem (do not include suffix in this list)
        </para>
       </listitem>
@@ -2447,7 +2447,7 @@ my_set_returning_function(PG_FUNCTION_ARGS)
     if (SRF_IS_FIRSTCALL())
     {
         funcctx = SRF_FIRSTCALL_INIT();
-        oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
+        oldcontext = MemoryContextSwitchTo(funcctx-&gt;multi_call_memory_ctx);
         /* One-time setup code appears here: */
         <replaceable>user code</replaceable>
         <replaceable>if returning composite</replaceable>
@@ -2503,7 +2503,7 @@ testpassbyval(PG_FUNCTION_ARGS)
         funcctx = SRF_FIRSTCALL_INIT();
 
         /* switch to memory context appropriate for multiple function calls */
-        oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
+        oldcontext = MemoryContextSwitchTo(funcctx-&gt;multi_call_memory_ctx);
 
         /* total number of tuples to be returned */
         funcctx-&gt;max_calls = PG_GETARG_UINT32(0);
diff --git a/doc/src/sgml/xindex.sgml b/doc/src/sgml/xindex.sgml
index 66d39e6..a99a3e1 100644
--- a/doc/src/sgml/xindex.sgml
+++ b/doc/src/sgml/xindex.sgml
@@ -700,7 +700,7 @@ DEFAULT FOR TYPE int8 USING btree AS
 
    <note>
     <para>
-     In <ProductName>PostgreSQL</ProductName> versions before 7.4,
+     In <productname>PostgreSQL</productname> versions before 7.4,
      sorting and grouping operations would implicitly use operators named
      <literal>=</>, <literal>&lt;</>, and <literal>&gt;</>.  The new
      behavior of relying on default operator classes avoids having to make
diff --git a/doc/src/sgml/xoper.sgml b/doc/src/sgml/xoper.sgml
index 5834c28..76757bb 100644
--- a/doc/src/sgml/xoper.sgml
+++ b/doc/src/sgml/xoper.sgml
@@ -10,7 +10,7 @@ $PostgreSQL$
    <secondary>user-defined</secondary>
   </indexterm>
 
-  <Para>
+  <para>
    Every operator is <quote>syntactic sugar</quote> for a call to an
    underlying function that does the real work; so you must
    first create the underlying function before you can create
@@ -19,9 +19,9 @@ $PostgreSQL$
    that helps the query planner optimize queries that use the
    operator.  The next section will be devoted to explaining
    that additional information.
-  </Para>
+  </para>
 
-  <Para>
+  <para>
    <productname>PostgreSQL</productname> supports left unary, right
    unary, and binary operators.  Operators can be
    overloaded;<indexterm><primary>overloading</primary><secondary>operators</secondary></indexterm>
@@ -29,15 +29,15 @@ $PostgreSQL$
    that have different numbers and types of operands.  When a query is
    executed, the system determines the operator to call from the
    number and types of the provided operands.
-  </Para>
+  </para>
 
-  <Para>
+  <para>
    Here is an example of creating an operator for adding two complex
    numbers.  We assume we've already created the definition of type
    <type>complex</type> (see <xref linkend="xtypes">).  First we need a
    function that does the work, then we can define the operator:
 
-<ProgramListing>
+<programlisting>
 CREATE FUNCTION complex_add(complex, complex)
     RETURNS complex
     AS '<replaceable>filename</replaceable>', 'complex_add'
@@ -49,10 +49,10 @@ CREATE OPERATOR + (
     procedure = complex_add,
     commutator = +
 );
-</ProgramListing>
-  </Para>
+</programlisting>
+  </para>
 
-  <Para>
+  <para>
    Now we could execute a query like this:
      
 <screen>
@@ -63,9 +63,9 @@ SELECT (a + b) AS c FROM test_complex;
  (5.2,6.05)
  (133.42,144.95)
 </screen>
-  </Para>
+  </para>
 
-  <Para>
+  <para>
    We've shown how to create a binary operator here.  To create unary
    operators, just omit one of <literal>leftarg</> (for left unary) or
    <literal>rightarg</> (for right unary).  The <literal>procedure</>
@@ -74,14 +74,14 @@ SELECT (a + b) AS c FROM test_complex;
    clause shown in the example is an optional hint to the query
    optimizer.  Further details about <literal>commutator</> and other
    optimizer hints appear in the next section.
-  </Para>
+  </para>
  </sect1>
 
   <sect1 id="xoper-optimization">
    <title>Operator Optimization Information</title>
 
    <para>
-    A <ProductName>PostgreSQL</ProductName> operator definition can include
+    A <productname>PostgreSQL</productname> operator definition can include
     several optional clauses that tell the system useful things about how
     the operator behaves.  These clauses should be provided whenever
     appropriate, because they can make for considerable speedups in execution
@@ -95,7 +95,7 @@ SELECT (a + b) AS c FROM test_complex;
 
    <para>
     Additional optimization clauses might be added in future versions of
-    <ProductName>PostgreSQL</ProductName>.  The ones described here are all
+    <productname>PostgreSQL</productname>.  The ones described here are all
     the ones that release &version; understands.
    </para>
 
@@ -115,7 +115,7 @@ SELECT (a + b) AS c FROM test_complex;
     <para>
      The left operand type of a commutable operator is the same as the
      right operand type of its commutator, and vice versa.  So the name of
-     the commutator operator is all that <ProductName>PostgreSQL</ProductName>
+     the commutator operator is all that <productname>PostgreSQL</productname>
      needs to be given to look up the commutator, and that's all that needs to
      be provided in the <literal>COMMUTATOR</> clause.
     </para>
@@ -131,7 +131,7 @@ SELECT (a + b) AS c FROM test_complex;
      index scan unless it can determine how to flip the clause around to
      <literal>tab2.y = tab1.x</>, because the index-scan machinery expects
      to see the indexed column on the left of the operator it is given.
-     <ProductName>PostgreSQL</ProductName> will <emphasis>not</> simply
+     <productname>PostgreSQL</productname> will <emphasis>not</> simply
      assume that this is a valid transformation &mdash; the creator of the
      <literal>=</> operator must specify that it is valid, by marking the
      operator with commutator information.
@@ -149,7 +149,7 @@ SELECT (a + b) AS c FROM test_complex;
        <para>
 	One way is to omit the <literal>COMMUTATOR</> clause in the first operator that
 	you define, and then provide one in the second operator's definition.
-	Since <ProductName>PostgreSQL</ProductName> knows that commutative
+	Since <productname>PostgreSQL</productname> knows that commutative
 	operators come in pairs, when it sees the second definition it will
 	automatically go back and fill in the missing <literal>COMMUTATOR</> clause in
 	the first definition.
@@ -159,12 +159,12 @@ SELECT (a + b) AS c FROM test_complex;
       <listitem>
        <para>
 	The other, more straightforward way is just to include <literal>COMMUTATOR</> clauses
-	in both definitions.  When <ProductName>PostgreSQL</ProductName> processes
+	in both definitions.  When <productname>PostgreSQL</productname> processes
 	the first definition and realizes that <literal>COMMUTATOR</> refers to a nonexistent
 	operator, the system will make a dummy entry for that operator in the
 	system catalog.  This dummy entry will have valid data only
 	for the operator name, left and right operand types, and result type,
-	since that's all that <ProductName>PostgreSQL</ProductName> can deduce
+	since that's all that <productname>PostgreSQL</productname> can deduce
 	at this point.  The first operator's catalog entry will link to this
 	dummy entry.  Later, when you define the second operator, the system
 	updates the dummy entry with the additional information from the second
@@ -225,9 +225,9 @@ SELECT (a + b) AS c FROM test_complex;
     binary operators that return <type>boolean</>.  The idea behind a restriction
     selectivity estimator is to guess what fraction of the rows in a
     table will satisfy a <literal>WHERE</literal>-clause condition of the form
-<ProgramListing>
+<programlisting>
 column OP constant
-</ProgramListing>
+</programlisting>
     for the current operator and a particular constant value.
     This assists the optimizer by
     giving it some idea of how many rows will be eliminated by <literal>WHERE</>
@@ -297,9 +297,9 @@ column OP constant
      binary operators that return <type>boolean</type>.  The idea behind a join
      selectivity estimator is to guess what fraction of the rows in a
      pair of tables will satisfy a <literal>WHERE</>-clause condition of the form
-<ProgramListing>
+<programlisting>
 table1.column1 OP table2.column2
-</ProgramListing>
+</programlisting>
      for the current operator.  As with the <literal>RESTRICT</literal> clause, this helps
      the optimizer very substantially by letting it figure out which
      of several possible join sequences is likely to take the least work.
@@ -496,7 +496,7 @@ table1.column1 OP table2.column2
 
     <note>
     <para>
-     In <ProductName>PostgreSQL</ProductName> versions before 7.3,
+     In <productname>PostgreSQL</productname> versions before 7.3,
      the <literal>MERGES</> shorthand was not available: to make a
      merge-joinable operator one had to write both <literal>SORT1</> and
      <literal>SORT2</> explicitly.  Also, the <literal>LTCMP</> and
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index 3c473c6..02d75f8 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -306,8 +306,10 @@ libpq_srcdir = $(top_srcdir)/src/interfaces/libpq
 libpq_builddir = $(top_builddir)/src/interfaces/libpq
 endif
 
+# This is for use for libraries linking to libpq.  Because libpqport
+# isn't created with the same link flags as libpq, it can't be used.
 libpq = -L$(libpq_builddir) -lpq
-
+  
 # If doing static linking, shared library dependency can't be
 # used so we specify pthread libs for every usage of libpq
 ifeq ($(enable_shared), no)
@@ -320,6 +322,19 @@ libpq += $(PTHREAD_LIBS)
 endif
 endif
 
+# Force clients to pull symbols from the non-shared library libpgport 
+# rather than pulling some libpgport symbols from libpq just because 
+# libpq uses those functions too.  This makes applications less 
+# dependent on changes in libpq's usage of pgport.  To do this we link to
+# pgport before libpq.  This does cause duplicate -lpgport's to appear
+# on client link lines.
+ifdef PGXS
+libpq_pgport = -L$(libdir) -lpgport $(libpq)
+else
+libpq_pgport = -L$(top_builddir)/src/port -lpgport $(libpq)
+endif
+
+
 submake-libpq:
 	$(MAKE) -C $(libpq_builddir) all
 
@@ -384,9 +399,10 @@ override LDFLAGS := -L$(top_builddir)/src/port $(LDFLAGS)
 endif
 endif
 
-# to make ws2_32.lib the last library
+# to make ws2_32.lib the last library, and always link with shfolder,
+# so SHGetFolderName isn't picked up from shell32.dll
 ifeq ($(PORTNAME),win32)
-LIBS += -lws2_32
+LIBS += -lws2_32 -lshfolder
 endif
 
 # Not really standard libc functions, used by the backend.
diff --git a/src/backend/access/common/tupdesc.c b/src/backend/access/common/tupdesc.c
index 1fbedde..082a126 100644
--- a/src/backend/access/common/tupdesc.c
+++ b/src/backend/access/common/tupdesc.c
@@ -290,10 +290,15 @@ equalTupleDescs(TupleDesc tupdesc1, TupleDesc tupdesc2)
 
 		/*
 		 * We do not need to check every single field here: we can
-		 * disregard attrelid, attnum (it was used to place the row in the
-		 * attrs array) and everything derived from the column datatype.
-		 * Also, attcacheoff must NOT be checked since it's possibly not
-		 * set in both copies.
+		 * disregard attrelid and attnum (which were used to place the row
+		 * in the attrs array in the first place).  It might look like we
+		 * could dispense with checking attlen/attbyval/attalign, since these
+		 * are derived from atttypid; but in the case of dropped columns
+		 * we must check them (since atttypid will be zero for all dropped
+		 * columns) and in general it seems safer to check them always.
+		 *
+		 * attcacheoff must NOT be checked since it's possibly not set
+		 * in both copies.
 		 */
 		if (strcmp(NameStr(attr1->attname), NameStr(attr2->attname)) != 0)
 			return false;
@@ -301,12 +306,18 @@ equalTupleDescs(TupleDesc tupdesc1, TupleDesc tupdesc2)
 			return false;
 		if (attr1->attstattarget != attr2->attstattarget)
 			return false;
+		if (attr1->attlen != attr2->attlen)
+			return false;
 		if (attr1->attndims != attr2->attndims)
 			return false;
 		if (attr1->atttypmod != attr2->atttypmod)
 			return false;
+		if (attr1->attbyval != attr2->attbyval)
+			return false;
 		if (attr1->attstorage != attr2->attstorage)
 			return false;
+		if (attr1->attalign != attr2->attalign)
+			return false;
 		if (attr1->attnotnull != attr2->attnotnull)
 			return false;
 		if (attr1->atthasdef != attr2->atthasdef)
diff --git a/src/backend/access/rtree/rtree.c b/src/backend/access/rtree/rtree.c
index 5ae35be..c93acab 100644
--- a/src/backend/access/rtree/rtree.c
+++ b/src/backend/access/rtree/rtree.c
@@ -595,6 +595,8 @@ rtdosplit(Relation r,
 	rtup = (IndexTuple) index_formtuple(tupDesc,
 										&(v.spl_rdatum), isnull);
 	pfree(isnull);
+	pfree(DatumGetPointer(v.spl_ldatum));
+	pfree(DatumGetPointer(v.spl_rdatum));
 
 	/* set pointers to new child pages in the internal index tuples */
 	ItemPointerSet(&(ltup->t_tid), lbknum, 1);
diff --git a/src/backend/catalog/pg_aggregate.c b/src/backend/catalog/pg_aggregate.c
index 79cb8dc..40b59c4 100644
--- a/src/backend/catalog/pg_aggregate.c
+++ b/src/backend/catalog/pg_aggregate.c
@@ -22,10 +22,13 @@
 #include "catalog/pg_aggregate.h"
 #include "catalog/pg_language.h"
 #include "catalog/pg_proc.h"
+#include "miscadmin.h"
 #include "optimizer/cost.h"
 #include "parser/parse_coerce.h"
 #include "parser/parse_func.h"
+#include "utils/acl.h"
 #include "utils/builtins.h"
+#include "utils/lsyscache.h"
 #include "utils/syscache.h"
 
 
@@ -262,6 +265,7 @@ lookup_agg_function(List *fnName,
 	bool		retset;
 	Oid		   *true_oid_array;
 	FuncDetailCode fdresult;
+	AclResult	aclresult;
 
 	/*
 	 * func_get_detail looks up the function in the catalogs, does
@@ -326,5 +330,10 @@ lookup_agg_function(List *fnName,
 				 errmsg("function %s requires run-time type coercion",
 				 func_signature_string(fnName, nargs, true_oid_array))));
 
+	/* Check aggregate creator has permission to call the function */
+	aclresult = pg_proc_aclcheck(fnOid, GetUserId(), ACL_EXECUTE);
+	if (aclresult != ACLCHECK_OK)
+		aclcheck_error(aclresult, ACL_KIND_PROC, get_func_name(fnOid));
+
 	return fnOid;
 }
diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c
index 4adb4b6..44c0338 100644
--- a/src/backend/catalog/pg_proc.c
+++ b/src/backend/catalog/pg_proc.c
@@ -72,6 +72,8 @@ ProcedureCreate(const char *procedureName,
 				const char *parameterNames[])
 {
 	int			i;
+	bool		genericParam = false;
+	bool		internalParam = false;
 	Relation	rel;
 	HeapTuple	tup;
 	HeapTuple	oldtup;
@@ -102,29 +104,36 @@ ProcedureCreate(const char *procedureName,
 
 	/*
 	 * Do not allow return type ANYARRAY or ANYELEMENT unless at least one
-	 * argument is also ANYARRAY or ANYELEMENT
+	 * input argument is ANYARRAY or ANYELEMENT.  Also, do not allow
+	 * return type INTERNAL unless at least one input argument is INTERNAL.
 	 */
-	if (returnType == ANYARRAYOID || returnType == ANYELEMENTOID)
+	for (i = 0; i < parameterCount; i++)
 	{
-		bool		genericParam = false;
-
-		for (i = 0; i < parameterCount; i++)
+		switch (parameterTypes[i])
 		{
-			if (parameterTypes[i] == ANYARRAYOID ||
-				parameterTypes[i] == ANYELEMENTOID)
-			{
+			case ANYARRAYOID:
+			case ANYELEMENTOID:
 				genericParam = true;
 				break;
-			}
+			case INTERNALOID:
+				internalParam = true;
+				break;
 		}
-
-		if (!genericParam)
-			ereport(ERROR,
-					(errcode(ERRCODE_INVALID_FUNCTION_DEFINITION),
-					 errmsg("cannot determine result data type"),
-					 errdetail("A function returning \"anyarray\" or \"anyelement\" must have at least one argument of either type.")));
 	}
 
+	if ((returnType == ANYARRAYOID || returnType == ANYELEMENTOID)
+		&& !genericParam)
+		ereport(ERROR,
+				(errcode(ERRCODE_INVALID_FUNCTION_DEFINITION),
+				 errmsg("cannot determine result data type"),
+				 errdetail("A function returning \"anyarray\" or \"anyelement\" must have at least one argument of either type.")));
+
+	if (returnType == INTERNALOID && !internalParam)
+		ereport(ERROR,
+				(errcode(ERRCODE_INVALID_FUNCTION_DEFINITION),
+				 errmsg("unsafe use of INTERNAL pseudo-type"),
+				 errdetail("A function returning \"internal\" must have at least one \"internal\" argument.")));
+
 	/* Make sure we have a zero-padded param type array */
 	MemSet(typev, 0, FUNC_MAX_ARGS * sizeof(Oid));
 	if (parameterCount > 0)
diff --git a/src/backend/commands/proclang.c b/src/backend/commands/proclang.c
index 1269fb3..d672df5 100644
--- a/src/backend/commands/proclang.c
+++ b/src/backend/commands/proclang.c
@@ -246,7 +246,7 @@ RenameLanguage(const char *oldname, const char *newname)
 	HeapTuple	tup;
 	Relation	rel;
 
-	rel = heap_openr(ShadowRelationName, RowExclusiveLock);
+	rel = heap_openr(LanguageRelationName, RowExclusiveLock);
 
 	tup = SearchSysCacheCopy(LANGNAME,
 							 CStringGetDatum(oldname),
diff --git a/src/backend/optimizer/path/costsize.c b/src/backend/optimizer/path/costsize.c
index c6051c0..61b22ed 100644
--- a/src/backend/optimizer/path/costsize.c
+++ b/src/backend/optimizer/path/costsize.c
@@ -919,16 +919,17 @@ cost_mergejoin(MergePath *path, Query *root)
 	rescanratio = 1.0 + (rescannedtuples / inner_path_rows);
 
 	/*
-	 * A merge join will stop as soon as it exhausts either input stream.
-	 * Estimate fraction of the left and right inputs that will actually
-	 * need to be scanned.	We use only the first (most significant) merge
-	 * clause for this purpose.
+	 * A merge join will stop as soon as it exhausts either input stream
+	 * (unless it's an outer join, in which case the outer side has to be
+	 * scanned all the way anyway).  Estimate fraction of the left and right
+	 * inputs that will actually need to be scanned. We use only the first
+	 * (most significant) merge clause for this purpose.
 	 *
 	 * Since this calculation is somewhat expensive, and will be the same for
 	 * all mergejoin paths associated with the merge clause, we cache the
 	 * results in the RestrictInfo node.
 	 */
-	if (mergeclauses)
+	if (mergeclauses && path->jpath.jointype != JOIN_FULL)
 	{
 		firstclause = (RestrictInfo *) linitial(mergeclauses);
 		if (firstclause->left_mergescansel < 0) /* not computed yet? */
@@ -948,10 +949,14 @@ cost_mergejoin(MergePath *path, Query *root)
 			outerscansel = firstclause->right_mergescansel;
 			innerscansel = firstclause->left_mergescansel;
 		}
+		if (path->jpath.jointype == JOIN_LEFT)
+			outerscansel = 1.0;
+		else if (path->jpath.jointype == JOIN_RIGHT)
+			innerscansel = 1.0;
 	}
 	else
 	{
-		/* cope with clauseless mergejoin */
+		/* cope with clauseless or full mergejoin */
 		outerscansel = innerscansel = 1.0;
 	}
 
diff --git a/src/backend/optimizer/path/orindxpath.c b/src/backend/optimizer/path/orindxpath.c
index 6eb769d..6cc77ef 100644
--- a/src/backend/optimizer/path/orindxpath.c
+++ b/src/backend/optimizer/path/orindxpath.c
@@ -387,10 +387,14 @@ best_or_subclause_index(Query *root,
 
 		/*
 		 * Ignore index if it doesn't match the subclause at all; except
-		 * that if it's a partial index, consider it anyway, since the
-		 * selectivity of the predicate alone might make the index useful.
+		 * that if it's a partial index matching the current OR subclause,
+		 * consider it anyway, since effectively we are using the index
+		 * predicate to match the subclause.  (Note: we exclude partial
+		 * indexes that are predOK; else such a partial index would be
+		 * considered to match *every* OR subclause, generating bogus OR
+		 * plans that are redundant with the basic scan on that index.)
 		 */
-		if (indexclauses == NIL && index->indpred == NIL)
+		if (indexclauses == NIL && (index->indpred == NIL || index->predOK))
 			continue;
 
 		/* Convert clauses to indexquals the executor can handle */
diff --git a/src/backend/optimizer/path/pathkeys.c b/src/backend/optimizer/path/pathkeys.c
index b5598be..f13d3f4 100644
--- a/src/backend/optimizer/path/pathkeys.c
+++ b/src/backend/optimizer/path/pathkeys.c
@@ -858,7 +858,12 @@ build_subquery_pathkeys(Query *root, RelOptInfo *rel, Query *subquery)
  *	  vars they were joined with; furthermore, it doesn't matter what kind
  *	  of join algorithm is actually used.
  *
+ *	  EXCEPTION: in a FULL or RIGHT join, we cannot treat the result as
+ *	  having the outer path's path keys, because null lefthand rows may be
+ *	  inserted at random points.  It must be treated as unsorted.
+ *
  * 'joinrel' is the join relation that paths are being formed for
+ * 'jointype' is the join type (inner, left, full, etc)
  * 'outer_pathkeys' is the list of the current outer path's path keys
  *
  * Returns the list of new path keys.
@@ -866,8 +871,12 @@ build_subquery_pathkeys(Query *root, RelOptInfo *rel, Query *subquery)
 List *
 build_join_pathkeys(Query *root,
 					RelOptInfo *joinrel,
+					JoinType jointype,
 					List *outer_pathkeys)
 {
+	if (jointype == JOIN_FULL || jointype == JOIN_RIGHT)
+		return NIL;
+
 	/*
 	 * This used to be quite a complex bit of code, but now that all
 	 * pathkey sublists start out life canonicalized, we don't have to do
diff --git a/src/backend/optimizer/plan/README b/src/backend/optimizer/plan/README
index d3a5168..a63596f 100644
--- a/src/backend/optimizer/plan/README
+++ b/src/backend/optimizer/plan/README
@@ -6,7 +6,7 @@ From owner-pgsql-hackers@hub.org Fri Feb 13 09:01:19 1998
 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4])
 	by candle.pha.pa.us (8.8.5/8.8.5) with ESMTP id JAA11576
 	for <maillist@candle.pha.pa.us>; Fri, 13 Feb 1998 09:01:17 -0500 (EST)
-Received: from hub.org (hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.1 $) with ESMTP id IAA09761 for <maillist@candle.pha.pa.us>; Fri, 13 Feb 1998 08:41:22 -0500 (EST)
+Received: from hub.org (hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision$) with ESMTP id IAA09761 for <maillist@candle.pha.pa.us>; Fri, 13 Feb 1998 08:41:22 -0500 (EST)
 Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.7.5) with SMTP id IAA08135; Fri, 13 Feb 1998 08:40:17 -0500 (EST)
 Received: by hub.org (TLB v0.10a (1.23 tibbs 1997/01/09 00:29:32)); Fri, 13 Feb 1998 08:38:42 -0500 (EST)
 Received: (from majordom@localhost) by hub.org (8.8.8/8.7.5) id IAA06646 for pgsql-hackers-outgoing; Fri, 13 Feb 1998 08:38:35 -0500 (EST)
diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c
index 3216223..82d3318 100644
--- a/src/backend/optimizer/plan/planner.c
+++ b/src/backend/optimizer/plan/planner.c
@@ -20,6 +20,7 @@
 #include "catalog/pg_operator.h"
 #include "catalog/pg_type.h"
 #include "executor/executor.h"
+#include "executor/nodeAgg.h"
 #include "miscadmin.h"
 #include "nodes/makefuncs.h"
 #ifdef OPTIMIZER_DEBUG
@@ -660,10 +661,12 @@ grouping_planner(Query *parse, double tuple_fraction)
 		Path	   *sorted_path;
 		double		dNumGroups = 0;
 		long		numGroups = 0;
-		int			numAggs = 0;
+		AggClauseCounts agg_counts;
 		int			numGroupCols = list_length(parse->groupClause);
 		bool		use_hashed_grouping = false;
 
+		MemSet(&agg_counts, 0, sizeof(AggClauseCounts));
+
 		/* Preprocess targetlist in case we are inside an INSERT/UPDATE. */
 		tlist = preprocess_targetlist(tlist,
 									  parse->commandType,
@@ -752,8 +755,10 @@ grouping_planner(Query *parse, double tuple_fraction)
 		 * the aggregate semantics (eg, producing only one output row).
 		 */
 		if (parse->hasAggs)
-			numAggs = count_agg_clause((Node *) tlist) +
-				count_agg_clause(parse->havingQual);
+		{
+			count_agg_clauses((Node *) tlist, &agg_counts);
+			count_agg_clauses(parse->havingQual, &agg_counts);
+		}
 
 		/*
 		 * Figure out whether we need a sorted result from query_planner.
@@ -990,9 +995,7 @@ grouping_planner(Query *parse, double tuple_fraction)
 			 */
 			if (!enable_hashagg || !hash_safe_grouping(parse))
 				use_hashed_grouping = false;
-			else if (parse->hasAggs &&
-					 (contain_distinct_agg_clause((Node *) tlist) ||
-					  contain_distinct_agg_clause(parse->havingQual)))
+			else if (agg_counts.numDistinctAggs != 0)
 				use_hashed_grouping = false;
 			else
 			{
@@ -1003,13 +1006,15 @@ grouping_planner(Query *parse, double tuple_fraction)
 				 * the need for sorted input is usually a win, the fact
 				 * that the output won't be sorted may be a loss; so we
 				 * need to do an actual cost comparison.
-				 *
-				 * In most cases we have no good way to estimate the size of
-				 * the transition value needed by an aggregate;
-				 * arbitrarily assume it is 100 bytes.	Also set the
-				 * overhead per hashtable entry at 64 bytes.
 				 */
-				int			hashentrysize = cheapest_path_width + 64 + numAggs * 100;
+				Size		hashentrysize;
+
+				/* Estimate per-hash-entry space at tuple width... */
+				hashentrysize = cheapest_path_width;
+				/* plus space for pass-by-ref transition values... */
+				hashentrysize += agg_counts.transitionSpace;
+				/* plus the per-hash-entry overhead */
+				hashentrysize += hash_agg_entry_size(agg_counts.numAggs);
 
 				if (hashentrysize * dNumGroups <= work_mem * 1024L)
 				{
@@ -1030,7 +1035,7 @@ grouping_planner(Query *parse, double tuple_fraction)
 					Path		sorted_p;
 
 					cost_agg(&hashed_p, parse,
-							 AGG_HASHED, numAggs,
+							 AGG_HASHED, agg_counts.numAggs,
 							 numGroupCols, dNumGroups,
 							 cheapest_path->startup_cost,
 							 cheapest_path->total_cost,
@@ -1065,7 +1070,7 @@ grouping_planner(Query *parse, double tuple_fraction)
 					}
 					if (parse->hasAggs)
 						cost_agg(&sorted_p, parse,
-								 AGG_SORTED, numAggs,
+								 AGG_SORTED, agg_counts.numAggs,
 								 numGroupCols, dNumGroups,
 								 sorted_p.startup_cost,
 								 sorted_p.total_cost,
@@ -1202,7 +1207,7 @@ grouping_planner(Query *parse, double tuple_fraction)
 											numGroupCols,
 											groupColIdx,
 											numGroups,
-											numAggs,
+											agg_counts.numAggs,
 											result_plan);
 			/* Hashed aggregation produces randomly-ordered results */
 			current_pathkeys = NIL;
@@ -1244,7 +1249,7 @@ grouping_planner(Query *parse, double tuple_fraction)
 											numGroupCols,
 											groupColIdx,
 											numGroups,
-											numAggs,
+											agg_counts.numAggs,
 											result_plan);
 		}
 		else
diff --git a/src/backend/optimizer/util/plancat.c b/src/backend/optimizer/util/plancat.c
index a655e7b..f2c59f8 100644
--- a/src/backend/optimizer/util/plancat.c
+++ b/src/backend/optimizer/util/plancat.c
@@ -234,7 +234,32 @@ estimate_rel_size(Relation rel, int32 *attr_widths,
 		case RELKIND_INDEX:
 		case RELKIND_TOASTVALUE:
 			/* it has storage, ok to call the smgr */
-			*pages = curpages = RelationGetNumberOfBlocks(rel);
+			curpages = RelationGetNumberOfBlocks(rel);
+
+			/*
+			 * HACK: if the relation has never yet been vacuumed, use a
+			 * minimum estimate of 10 pages.  This emulates a desirable
+			 * aspect of pre-8.0 behavior, which is that we wouldn't assume
+			 * a newly created relation is really small, which saves us from
+			 * making really bad plans during initial data loading.  (The
+			 * plans are not wrong when they are made, but if they are cached
+			 * and used again after the table has grown a lot, they are bad.)
+			 * It would be better to force replanning if the table size has
+			 * changed a lot since the plan was made ... but we don't
+			 * currently have any infrastructure for redoing cached plans at
+			 * all, so we have to kluge things here instead.
+			 *
+			 * We approximate "never vacuumed" by "has relpages = 0", which
+			 * means this will also fire on genuinely empty relations.  Not
+			 * great, but fortunately that's a seldom-seen case in the real
+			 * world, and it shouldn't degrade the quality of the plan too
+			 * much anyway to err in this direction.
+			 */
+			if (curpages < 10 && rel->rd_rel->relpages == 0)
+				curpages = 10;
+
+			/* report estimated # pages */
+			*pages = curpages;
 			/* quick exit if rel is clearly empty */
 			if (curpages == 0)
 			{
diff --git a/src/backend/po/pt_BR.po b/src/backend/po/pt_BR.po
index 281ad39..d22fac7 100644
--- a/src/backend/po/pt_BR.po
+++ b/src/backend/po/pt_BR.po
@@ -5,7 +5,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PostgreSQL 8.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-01-15 12:24-0200\n"
+"POT-Creation-Date: 2005-05-09 22:35-0300\n"
 "PO-Revision-Date: 2004-11-13 20:01-0300\n"
 "Last-Translator: Euler Taveira de Oliveira <eulerto@yahoo.com.br>\n"
 "Language-Team: Brazilian Portuguese <desenvolvimento-postgresql@listas."
@@ -14,24 +14,25 @@ msgstr ""
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: lib/dllist.c:43 lib/dllist.c:88 libpq/auth.c:640
-#: utils/adt/oracle_compat.c:73 utils/adt/oracle_compat.c:125
-#: utils/adt/ri_triggers.c:3472 utils/adt/cash.c:297 utils/adt/cash.c:312
+#: lib/dllist.c:43 lib/dllist.c:88 libpq/auth.c:640 nodes/tidbitmap.c:598
+#: nodes/tidbitmap.c:686 utils/adt/oracle_compat.c:74
+#: utils/adt/oracle_compat.c:126 utils/adt/ri_triggers.c:3472
+#: utils/adt/varlena.c:2324 utils/adt/cash.c:297 utils/adt/cash.c:312
 #: utils/adt/regexp.c:200 utils/fmgr/dfmgr.c:127 utils/fmgr/fmgr.c:527
-#: utils/hash/dynahash.c:178 utils/hash/dynahash.c:248
-#: utils/init/miscinit.c:213 utils/init/miscinit.c:234
-#: utils/init/miscinit.c:244 utils/misc/guc.c:1910 utils/misc/guc.c:1923
-#: utils/misc/guc.c:1936 utils/mmgr/aset.c:337 utils/mmgr/aset.c:503
+#: utils/hash/dynahash.c:205 utils/hash/dynahash.c:263
+#: utils/init/miscinit.c:212 utils/init/miscinit.c:233
+#: utils/init/miscinit.c:243 utils/misc/guc.c:1937 utils/misc/guc.c:1950
+#: utils/misc/guc.c:1963 utils/mmgr/aset.c:337 utils/mmgr/aset.c:503
 #: utils/mmgr/aset.c:700 utils/mmgr/aset.c:893 utils/mmgr/portalmem.c:78
-#: utils/cache/typcache.c:165 utils/cache/typcache.c:487
-#: utils/cache/relcache.c:169 utils/cache/relcache.c:183
-#: utils/cache/relcache.c:1135 storage/ipc/sinval.c:789 storage/file/fd.c:588
-#: storage/file/fd.c:621 storage/file/fd.c:767 storage/lmgr/lock.c:494
-#: storage/smgr/md.c:844 storage/smgr/smgr.c:213 storage/buffer/localbuf.c:139
-#: commands/sequence.c:794 executor/execGrouping.c:384
-#: postmaster/postmaster.c:810 postmaster/postmaster.c:1678
-#: postmaster/postmaster.c:2397 postmaster/pgstat.c:2430
-#: postmaster/pgstat.c:2497
+#: utils/cache/typcache.c:164 utils/cache/typcache.c:486
+#: utils/cache/relcache.c:143 utils/cache/relcache.c:1047
+#: storage/ipc/sinval.c:789 storage/file/fd.c:588 storage/file/fd.c:621
+#: storage/file/fd.c:767 storage/lmgr/lock.c:474 storage/smgr/md.c:844
+#: storage/smgr/smgr.c:213 storage/buffer/localbuf.c:198
+#: commands/sequence.c:794 executor/execGrouping.c:386
+#: postmaster/postmaster.c:811 postmaster/postmaster.c:1688
+#: postmaster/postmaster.c:2413 postmaster/pgstat.c:2433
+#: postmaster/pgstat.c:2500
 msgid "out of memory"
 msgstr "sem mem�ria"
 
@@ -158,7 +159,7 @@ msgid ""
 "configuration."
 msgstr ""
 "Esse erro *n�o* significa que voc� est� sem espa�o em disco. Isso ocorre se "
-"todos os IDs de mem�ria compartilhadas est�o sendo usados, neste caso voc� "
+"todos os IDs de mem�ria compartilhada est�o sendo usados, neste caso voc� "
 "precisa aumentar o par�metro SHMMNI do seu kernel, ou porque o limite do "
 "sistema para mem�ria compartilhada foi alcan�ado. Se voc� n�o pode aumentar "
 "o limite de mem�ria compartilhada, reduza o tamanho de mem�ria compartilhada "
@@ -246,30 +247,30 @@ msgstr ""
 "Voc� possivelmente precisa aumentar o valor SEMVMX do kernel para pelo menos "
 "%d.  Veja na documenta��o do PostgreSQL para obter detalhes."
 
-#: tcop/fastpath.c:106 tcop/fastpath.c:444 tcop/fastpath.c:567
+#: tcop/fastpath.c:106 tcop/fastpath.c:443 tcop/fastpath.c:567
 #, c-format
 msgid "invalid argument size %d in function call message"
 msgstr "tamanho de argumento %d inv�lido na mensagem de chamada da fun��o"
 
-#: tcop/fastpath.c:186 tcop/fastpath.c:511 tcop/postgres.c:1490
-#: access/common/printtup.c:296
+#: tcop/fastpath.c:180 tcop/fastpath.c:510 tcop/postgres.c:1491
+#: access/common/printtup.c:278
 #, c-format
 msgid "unsupported format code: %d"
 msgstr "c�digo do formato n�o � suportado: %d"
 
-#: tcop/fastpath.c:230 catalog/aclchk.c:1548 catalog/aclchk.c:1973
+#: tcop/fastpath.c:224 catalog/aclchk.c:1525 catalog/aclchk.c:1950
 #, c-format
 msgid "function with OID %u does not exist"
 msgstr "fun��o com OID %u n�o existe"
 
-#: tcop/fastpath.c:291 tcop/postgres.c:287 tcop/postgres.c:310
-#: commands/copy.c:404 commands/copy.c:422 commands/copy.c:426
-#: commands/copy.c:487 commands/copy.c:536
+#: tcop/fastpath.c:290 tcop/postgres.c:288 tcop/postgres.c:311
+#: commands/copy.c:403 commands/copy.c:421 commands/copy.c:425
+#: commands/copy.c:486 commands/copy.c:535
 msgid "unexpected EOF on client connection"
 msgstr "EOF inesperado durante conex�o do cliente"
 
-#: tcop/fastpath.c:304 tcop/postgres.c:854 tcop/postgres.c:1176
-#: tcop/postgres.c:1660
+#: tcop/fastpath.c:303 tcop/postgres.c:855 tcop/postgres.c:1177
+#: tcop/postgres.c:1661
 msgid ""
 "current transaction is aborted, commands ignored until end of transaction "
 "block"
@@ -277,20 +278,20 @@ msgstr ""
 "transa��o atual foi interrompida, comandos ignorados at� o fim do bloco de "
 "transa��o"
 
-#: tcop/fastpath.c:414 tcop/fastpath.c:537
+#: tcop/fastpath.c:412 tcop/fastpath.c:536
 #, c-format
 msgid "function call message contains %d arguments but function requires %d"
 msgstr ""
 "mensagem de chamada da fun��o cont�m %d argumentos mas fun��o requer %d"
 
-#: tcop/fastpath.c:422
+#: tcop/fastpath.c:420
 #, c-format
 msgid "function call message contains %d argument formats but %d arguments"
 msgstr ""
 "mensagem de chamada da fun��o cont�m %d formatos de argumento mas s� tem %d "
 "argumentos"
 
-#: tcop/fastpath.c:505 tcop/fastpath.c:590
+#: tcop/fastpath.c:504 tcop/fastpath.c:590
 #, c-format
 msgid "incorrect binary data format in function argument %d"
 msgstr "formato de dado bin�rio incorreto no argumento %d da fun��o"
@@ -301,7 +302,7 @@ msgid "bind message has %d result formats but query has %d columns"
 msgstr ""
 "mensagem de liga��o tem %d formatos de resultados mas consulta tem %d colunas"
 
-#: tcop/pquery.c:523 tcop/pquery.c:1096 commands/portalcmds.c:346
+#: tcop/pquery.c:523 tcop/pquery.c:1102 commands/portalcmds.c:347
 #, c-format
 msgid "portal \"%s\" cannot be run"
 msgstr "portal \"%s\" n�o pode ser executado"
@@ -314,46 +315,46 @@ msgstr "cursor s
 msgid "Declare it with SCROLL option to enable backward scan."
 msgstr "Declare-o com a op��o SCROLL para habilitar a busca para tr�s."
 
-#: tcop/postgres.c:337 tcop/postgres.c:349 tcop/postgres.c:360
-#: tcop/postgres.c:372 tcop/postgres.c:3218
+#: tcop/postgres.c:338 tcop/postgres.c:350 tcop/postgres.c:361
+#: tcop/postgres.c:373 tcop/postgres.c:3228
 #, c-format
 msgid "invalid frontend message type %d"
 msgstr "tipo de mensagem do cliente inv�lida %d"
 
-#: tcop/postgres.c:473 tcop/postgres.c:510 tcop/postgres.c:522
+#: tcop/postgres.c:474 tcop/postgres.c:511 tcop/postgres.c:523
 #, c-format
 msgid "statement: %s"
 msgstr "comando: %s"
 
-#: tcop/postgres.c:1018
+#: tcop/postgres.c:1019
 #, c-format
 msgid "duration: %ld.%03ld ms"
 msgstr "dura��o: %ld.%03ld ms"
 
-#: tcop/postgres.c:1031
+#: tcop/postgres.c:1032
 #, c-format
 msgid "duration: %ld.%03ld ms  statement: %s"
 msgstr "dura��o: %ld.%03ld ms  comando: %s"
 
-#: tcop/postgres.c:1139
+#: tcop/postgres.c:1140
 msgid "cannot insert multiple commands into a prepared statement"
 msgstr "n�o pode inserir m�ltiplos comandos no comando preparado"
 
-#: tcop/postgres.c:1204 parser/analyze.c:3149
+#: tcop/postgres.c:1205 parser/analyze.c:3178
 #, c-format
 msgid "could not determine data type of parameter $%d"
 msgstr "n�o p�de determinar o tipo de dado do par�metro $%d"
 
-#: tcop/postgres.c:1342
+#: tcop/postgres.c:1343
 #, c-format
 msgid "bind message has %d parameter formats but %d parameters"
 msgstr "mensagem de liga��o tem %d formatos de par�metro mas %d par�metros"
 
-#: tcop/postgres.c:1355 tcop/postgres.c:1737
+#: tcop/postgres.c:1356 tcop/postgres.c:1738
 msgid "unnamed prepared statement does not exist"
 msgstr "comando preparado sem nome n�o existe"
 
-#: tcop/postgres.c:1361
+#: tcop/postgres.c:1362
 #, c-format
 msgid ""
 "bind message supplies %d parameters, but prepared statement \"%s\" requires %"
@@ -362,32 +363,32 @@ msgstr ""
 "mensagem de liga��o forneceu %d par�metros, mas comando preparado \"%s\" "
 "requer %d"
 
-#: tcop/postgres.c:1483
+#: tcop/postgres.c:1484
 #, c-format
 msgid "incorrect binary data format in bind parameter %d"
 msgstr "formato de dado bin�rio incorreto no par�metro de liga��o %d"
 
-#: tcop/postgres.c:1591 tcop/postgres.c:1790
+#: tcop/postgres.c:1592 tcop/postgres.c:1791
 #, c-format
 msgid "portal \"%s\" does not exist"
 msgstr "portal \"%s\" n�o existe"
 
-#: tcop/postgres.c:1884
+#: tcop/postgres.c:1885
 msgid "terminating connection because of crash of another server process"
 msgstr ""
-"finalizando conex�o por causa de uma falha de um outro processo servidor"
+"finalizando conex�o por causa de uma falha de um outro processo do servidor"
 
-#: tcop/postgres.c:1885
+#: tcop/postgres.c:1886
 msgid ""
 "The postmaster has commanded this server process to roll back the current "
 "transaction and exit, because another server process exited abnormally and "
 "possibly corrupted shared memory."
 msgstr ""
-"O postmaster ordenou a esse processo para cancelar a transa��o atual e sair, "
-"porque outro processo saiu anormalmente e possivelmente corrompeu mem�ria "
-"compartilhada."
+"O postmaster ordenou a esse processo que desfizesse a transa��o atual e "
+"saisse, porque outro processo saiu anormalmente e possivelmente corrompeu "
+"mem�ria compartilhada."
 
-#: tcop/postgres.c:1889
+#: tcop/postgres.c:1890
 msgid ""
 "In a moment you should be able to reconnect to the database and repeat your "
 "command."
@@ -395,11 +396,11 @@ msgstr ""
 "Dentro de instantes voc� poder� conectar novamente ao banco de dados e "
 "repetir seu commando."
 
-#: tcop/postgres.c:2005
+#: tcop/postgres.c:2006
 msgid "floating-point exception"
 msgstr "exce��o de ponto flutuante"
 
-#: tcop/postgres.c:2006
+#: tcop/postgres.c:2007
 msgid ""
 "An invalid floating-point operation was signaled. This probably means an out-"
 "of-range result or an invalid operation, such as division by zero."
@@ -408,242 +409,84 @@ msgstr ""
 "indica um resultado fora do intervalo ou uma opera��o inv�lida, tal como "
 "divis�o por zero."
 
-#: tcop/postgres.c:2042
+#: tcop/postgres.c:2043
 msgid "terminating connection due to administrator command"
 msgstr "terminando conex�o por causa de um comando do administrador"
 
-#: tcop/postgres.c:2052
+#: tcop/postgres.c:2053
 msgid "canceling query due to user request"
 msgstr "cancelando consulta por causa de um pedido do usu�rio"
 
-#: tcop/postgres.c:2103
+#: tcop/postgres.c:2104
 msgid "stack depth limit exceeded"
 msgstr "limite do tamanho da pilha foi excedido"
 
-#: tcop/postgres.c:2104
+#: tcop/postgres.c:2105
 msgid "Increase the configuration parameter \"max_stack_depth\"."
 msgstr "Aumente o par�metro de configura��o \"max_stack_depth\"."
 
-#: tcop/postgres.c:2122
-#, c-format
-msgid ""
-"%s is the PostgreSQL stand-alone backend.  It is not\n"
-"intended to be used by normal users.\n"
-"\n"
-msgstr ""
-"%s � o n�cleo aut�nomo do PostgreSQL. Ele n�o foi\n"
-"projetado para ser utilizado por usu�rios normais.\n"
-"\n"
-
-#: tcop/postgres.c:2124
-#, c-format
-msgid ""
-"Usage:\n"
-"  %s [OPTION]... [DBNAME]\n"
-"\n"
-msgstr ""
-"Uso:\n"
-" %s [OP��O]... [NOMEBD]\n"
-"\n"
-
-#: tcop/postgres.c:2125 postmaster/postmaster.c:1072
-#, c-format
-msgid "Options:\n"
-msgstr "Op��es:\n"
-
-#: tcop/postgres.c:2127 postmaster/postmaster.c:1074
-#, c-format
-msgid "  -A 1|0          enable/disable run-time assert checking\n"
-msgstr ""
-"  -A 1|0          habilita/desabilita verifica��o de asserto em tempo de "
-"execu��o\n"
-
-#: tcop/postgres.c:2129 postmaster/postmaster.c:1076
-#, c-format
-msgid "  -B NBUFFERS     number of shared buffers\n"
-msgstr "  -B NBUFFERS     n�mero de buffers compartilhados\n"
-
-#: tcop/postgres.c:2130 postmaster/postmaster.c:1077
-#, c-format
-msgid "  -c NAME=VALUE   set run-time parameter\n"
-msgstr "  -c NOME=VALOR   define o par�metro em tempo de execu��o\n"
-
-#: tcop/postgres.c:2131
-#, c-format
-msgid "  -d 0-5          debugging level (0 is off)\n"
-msgstr "  -d 0-5          n�vel de depura��o (0 � desabilitado)\n"
-
-#: tcop/postgres.c:2132 postmaster/postmaster.c:1079
-#, c-format
-msgid "  -D DATADIR      database directory\n"
-msgstr "  -D DIRDADOS     diret�rio do banco de dados\n"
-
-#: tcop/postgres.c:2133
-#, c-format
-msgid "  -e              use European date input format (DMY)\n"
-msgstr "  -e              usa formato de entrada de data europeu (DMY)\n"
-
-#: tcop/postgres.c:2134
-#, c-format
-msgid "  -E              echo query before execution\n"
-msgstr "  -e              mostra consulta antes da execu��o\n"
-
-#: tcop/postgres.c:2135 postmaster/postmaster.c:1080
-#, c-format
-msgid "  -F              turn fsync off\n"
-msgstr "  -F              desabilita o fsync\n"
-
-#: tcop/postgres.c:2136
-#, c-format
-msgid "  -N              do not use newline as interactive query delimiter\n"
-msgstr ""
-"  -N              n�o usa nova linha como delimitador de consulta iterativa\n"
-
-#: tcop/postgres.c:2137
-#, c-format
-msgid "  -o FILENAME     send stdout and stderr to given file\n"
-msgstr ""
-"  -o ARQUIVO      envia sa�da padr�o e de erro para o arquivo designado\n"
-
-#: tcop/postgres.c:2138
-#, c-format
-msgid "  -P              disable system indexes\n"
-msgstr "  -P              desabilita �ndices do sistema\n"
-
-#: tcop/postgres.c:2139
-#, c-format
-msgid "  -s              show statistics after each query\n"
-msgstr "  -s              mostra estat�sticas ap�s cada consulta\n"
-
-#: tcop/postgres.c:2140
-#, c-format
-msgid "  -S WORK-MEM     set amount of memory for sorts (in kB)\n"
-msgstr ""
-"  -S MEM-ORD      define a quantidade de mem�ria para ordena��es (em kB)\n"
-
-#: tcop/postgres.c:2141
-#, c-format
-msgid "  --describe-config  describe configuration parameters, then exit\n"
-msgstr "  --describe-config  descreve par�metros de configura��o e sai\n"
-
-#: tcop/postgres.c:2142 postmaster/postmaster.c:1091
-#, c-format
-msgid "  --help          show this help, then exit\n"
-msgstr "  --help          mostra esta ajuda e sai\n"
-
-#: tcop/postgres.c:2143 postmaster/postmaster.c:1092
-#, c-format
-msgid "  --version       output version information, then exit\n"
-msgstr "  --version       mostra informa��o sobre a vers�o e sai\n"
-
-#: tcop/postgres.c:2144 postmaster/postmaster.c:1094
-#, c-format
-msgid ""
-"\n"
-"Developer options:\n"
-msgstr ""
-"\n"
-"Op��es para desenvolvedor:\n"
-
-#: tcop/postgres.c:2145
-#, c-format
-msgid "  -f s|i|n|m|h    forbid use of some plan types\n"
-msgstr "  -f s|i|n|m|h    impede uso de alguns tipos de planos\n"
-
-#: tcop/postgres.c:2146
-#, c-format
-msgid "  -i              do not execute queries\n"
-msgstr "  -i              n�o executa consultas\n"
-
-#: tcop/postgres.c:2147
-#, c-format
-msgid "  -O              allow system table structure changes\n"
-msgstr ""
-"  -O              permite mudan�as na estrutura de tabelas do sistema\n"
-
-#: tcop/postgres.c:2148
-#, c-format
-msgid "  -t pa|pl|ex     show timings after each query\n"
-msgstr "  -t pa|pl|ex     mostra dura��o depois de cada consulta\n"
-
-#: tcop/postgres.c:2149
-#, c-format
-msgid "  -W NUM          wait NUM seconds to allow attach from a debugger\n"
-msgstr ""
-"  -W NUM          espera NUM segundos para permitir que o depurador seja "
-"anexado\n"
-
-#: tcop/postgres.c:2150
-#, c-format
-msgid ""
-"\n"
-"Report bugs to <pgsql-bugs@postgresql.org>.\n"
-msgstr ""
-"\n"
-"Reporte erros a <psql-bugs@postgresql.org>.\n"
-
-#: tcop/postgres.c:2314
+#: tcop/postgres.c:2315
 msgid "assert checking is not compiled in"
 msgstr "verifica��o de asserto n�o foi compilada"
 
-#: tcop/postgres.c:2533 postmaster/postmaster.c:550 bootstrap/bootstrap.c:300
+#: tcop/postgres.c:2537 postmaster/postmaster.c:551 bootstrap/bootstrap.c:305
 #, c-format
 msgid "--%s requires a value"
 msgstr "--%s requer um valor"
 
-#: tcop/postgres.c:2538 postmaster/postmaster.c:555 bootstrap/bootstrap.c:305
+#: tcop/postgres.c:2542 postmaster/postmaster.c:556 bootstrap/bootstrap.c:310
 #, c-format
 msgid "-c %s requires a value"
 msgstr "-c %s requer um valor"
 
-#: tcop/postgres.c:2652
+#: tcop/postgres.c:2656
 msgid "invalid command-line arguments for server process"
-msgstr "argumentos de linha de comando inv�lidos para processo servidor"
+msgstr "argumentos de linha de comando inv�lidos para processo do servidor"
 
-#: tcop/postgres.c:2653 tcop/postgres.c:2669
+#: tcop/postgres.c:2657 tcop/postgres.c:2673
 #, c-format
 msgid "Try \"%s --help\" for more information."
 msgstr "Tente \"%s --help\" para obter mais informa��o."
 
-#: tcop/postgres.c:2667
+#: tcop/postgres.c:2671
 #, c-format
 msgid "%s: invalid command-line arguments"
 msgstr "%s: argumentos de linha de comando inv�lidos"
 
-#: tcop/postgres.c:2677
+#: tcop/postgres.c:2681
 #, c-format
 msgid "%s: no database nor user name specified"
 msgstr "%s: banco de dados ou nome de usu�rio n�o foi especificado"
 
-#: tcop/postgres.c:3131
+#: tcop/postgres.c:3141
 #, c-format
 msgid "invalid CLOSE message subtype %d"
 msgstr "subtipo %d de mensagem CLOSE inv�lido"
 
-#: tcop/postgres.c:3161
+#: tcop/postgres.c:3171
 #, c-format
 msgid "invalid DESCRIBE message subtype %d"
 msgstr "subtipo %d de mensagem DESCRIBE inv�lido"
 
-#: tcop/postgres.c:3341 nodes/print.c:86 storage/lmgr/deadlock.c:888
-#: commands/vacuumlazy.c:517 commands/vacuumlazy.c:820 commands/vacuum.c:2273
+#: tcop/postgres.c:3351 nodes/print.c:86 storage/lmgr/deadlock.c:945
+#: commands/vacuumlazy.c:535 commands/vacuumlazy.c:830 commands/vacuum.c:2288
 #, c-format
 msgid "%s"
 msgstr "%s"
 
-#: tcop/postgres.c:3402
+#: tcop/postgres.c:3412
 #, c-format
 msgid "disconnection: session time: %s%s%s%s%s"
-msgstr "desconex�o: tempo de sess�o: %s%s%s%s%s"
+msgstr "desconex�o: dura��o da sess�o: %s%s%s%s%s"
 
 #: tcop/utility.c:77
 #, c-format
 msgid "table \"%s\" does not exist"
 msgstr "tabela \"%s\" n�o existe"
 
-#: tcop/utility.c:78 commands/trigger.c:141 commands/trigger.c:546
-#: commands/comment.c:341 commands/indexcmds.c:137 commands/indexcmds.c:951
-#: commands/tablecmds.c:544 commands/tablecmds.c:2624 commands/lockcmds.c:68
+#: tcop/utility.c:78 commands/trigger.c:144 commands/trigger.c:549
+#: commands/comment.c:347 commands/indexcmds.c:140 commands/indexcmds.c:954
+#: commands/tablecmds.c:557 commands/tablecmds.c:2661 commands/lockcmds.c:68
 #, c-format
 msgid "\"%s\" is not a table"
 msgstr "\"%s\" n�o � uma tabela"
@@ -657,7 +500,7 @@ msgstr "Use DROP TABLE para remover uma tabela."
 msgid "sequence \"%s\" does not exist"
 msgstr "sequ�ncia \"%s\" n�o existe"
 
-#: tcop/utility.c:83 commands/comment.c:334 commands/sequence.c:767
+#: tcop/utility.c:83 commands/comment.c:340 commands/sequence.c:767
 #, c-format
 msgid "\"%s\" is not a sequence"
 msgstr "\"%s\" n�o � uma sequ�ncia"
@@ -671,7 +514,7 @@ msgstr "Use DROP SEQUENCE para remover uma sequ
 msgid "view \"%s\" does not exist"
 msgstr "vis�o \"%s\" n�o existe"
 
-#: tcop/utility.c:88 commands/comment.c:348 commands/view.c:113
+#: tcop/utility.c:88 commands/comment.c:354 commands/view.c:162
 #, c-format
 msgid "\"%s\" is not a view"
 msgstr "\"%s\" n�o � uma vis�o"
@@ -685,9 +528,8 @@ msgstr "Use DROP VIEW para remover uma vis
 msgid "index \"%s\" does not exist"
 msgstr "�ndice \"%s\" n�o existe"
 
-#: tcop/utility.c:93 access/index/indexam.c:139 access/index/indexam.c:164
-#: access/index/indexam.c:189 commands/comment.c:327 commands/indexcmds.c:887
-#: commands/indexcmds.c:917
+#: tcop/utility.c:93 access/index/indexam.c:141 access/index/indexam.c:166
+#: commands/comment.c:333 commands/indexcmds.c:890 commands/indexcmds.c:920
 #, c-format
 msgid "\"%s\" is not an index"
 msgstr "\"%s\" n�o � um �ndice"
@@ -696,11 +538,11 @@ msgstr "\"%s\" n
 msgid "Use DROP INDEX to remove an index."
 msgstr "Use DROP INDEX para remover um �ndice."
 
-#: tcop/utility.c:97 utils/adt/regproc.c:1003 commands/functioncmds.c:110
-#: commands/typecmds.c:423 commands/typecmds.c:809 commands/typecmds.c:1167
-#: commands/typecmds.c:1288 commands/typecmds.c:1400 commands/typecmds.c:1487
-#: commands/typecmds.c:2072 commands/tablecmds.c:4632 parser/parse_func.c:1401
-#: parser/parse_type.c:201 parser/parse_type.c:227 catalog/pg_type.c:517
+#: tcop/utility.c:97 utils/adt/regproc.c:1002 commands/functioncmds.c:110
+#: commands/typecmds.c:423 commands/typecmds.c:809 commands/typecmds.c:1132
+#: commands/typecmds.c:1254 commands/typecmds.c:1366 commands/typecmds.c:1453
+#: commands/typecmds.c:2041 commands/tablecmds.c:4717 parser/parse_func.c:1211
+#: parser/parse_type.c:201 parser/parse_type.c:227 catalog/pg_type.c:514
 #, c-format
 msgid "type \"%s\" does not exist"
 msgstr "tipo \"%s\" n�o existe"
@@ -714,28 +556,32 @@ msgstr "\"%s\" n
 msgid "Use DROP TYPE to remove a type."
 msgstr "use DROP TYPE para remover um tipo."
 
-#: tcop/utility.c:182 tcop/utility.c:217 commands/trigger.c:147
-#: commands/trigger.c:552 commands/tablecmds.c:555 commands/tablecmds.c:1274
-#: commands/tablecmds.c:1480 commands/tablecmds.c:2636
-#: commands/tablecmds.c:3798 commands/tablecmds.c:5427
+#: tcop/utility.c:182 tcop/utility.c:217 commands/trigger.c:150
+#: commands/trigger.c:555 commands/tablecmds.c:568 commands/tablecmds.c:1301
+#: commands/tablecmds.c:1507 commands/tablecmds.c:2673
+#: commands/tablecmds.c:3864 commands/tablecmds.c:5513
 #, c-format
 msgid "permission denied: \"%s\" is a system catalog"
 msgstr "permiss�o negada: \"%s\" � um cat�logo do sistema"
 
-#: tcop/utility.c:323 commands/copy.c:906 executor/execMain.c:443
+#: tcop/utility.c:324 commands/copy.c:904 executor/execMain.c:446
 msgid "transaction is read-only"
 msgstr "transa��o � somente leitura"
 
-#: tcop/utility.c:973
+#: tcop/utility.c:815
+msgid "must be superuser to do LOAD"
+msgstr "deve ser super-usu�rio para fazer LOAD"
+
+#: tcop/utility.c:983
 msgid "must be superuser to do CHECKPOINT"
 msgstr "deve ser super-usu�rio para fazer CHECKPOINT"
 
-#: rewrite/rewriteManip.c:737 rewrite/rewriteManip.c:793
+#: rewrite/rewriteManip.c:735
 msgid "conditional utility statements are not implemented"
 msgstr "comandos utilit�rios condicionais n�o est�o implementados"
 
-#: rewrite/rewriteManip.c:749 rewrite/rewriteManip.c:805
-#: rewrite/rewriteHandler.c:177 parser/analyze.c:1699 parser/analyze.c:1771
+#: rewrite/rewriteManip.c:747 rewrite/rewriteHandler.c:177
+#: parser/analyze.c:1703 parser/analyze.c:1775
 msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented"
 msgstr "comandos condicionais UNION/INTERSECT/EXCEPT n�o est�o implementados"
 
@@ -744,57 +590,57 @@ msgstr "comandos condicionais UNION/INTERSECT/EXCEPT n
 msgid "rule \"%s\" for relation \"%s\" already exists"
 msgstr "regra \"%s\" para rela��o \"%s\" j� existe"
 
-#: rewrite/rewriteDefine.c:234
+#: rewrite/rewriteDefine.c:233
 msgid "rule actions on OLD are not implemented"
 msgstr "a��es da regra em OLD n�o est�o implementadas"
 
-#: rewrite/rewriteDefine.c:235
+#: rewrite/rewriteDefine.c:234
 msgid "Use views or triggers instead."
 msgstr "Ao inv�s disso utilize vis�es ou gatilhos."
 
-#: rewrite/rewriteDefine.c:239
+#: rewrite/rewriteDefine.c:238
 msgid "rule actions on NEW are not implemented"
 msgstr "a��es da regra em NEW n�o est�o implementadas"
 
-#: rewrite/rewriteDefine.c:240
+#: rewrite/rewriteDefine.c:239
 msgid "Use triggers instead."
 msgstr "Ao inv�s disso utilize gatilhos."
 
-#: rewrite/rewriteDefine.c:257
+#: rewrite/rewriteDefine.c:256
 msgid "INSTEAD NOTHING rules on SELECT are not implemented"
 msgstr "regras INSTEAD NOTHING no SELECT n�o est�o implementadas"
 
-#: rewrite/rewriteDefine.c:258
+#: rewrite/rewriteDefine.c:257
 msgid "Use views instead."
 msgstr "Ao inv�s disso utilize vis�es."
 
-#: rewrite/rewriteDefine.c:266
+#: rewrite/rewriteDefine.c:265
 msgid "multiple actions for rules on SELECT are not implemented"
 msgstr "a��es m�ltiplas para regras no SELECT n�o est�o implementadas"
 
-#: rewrite/rewriteDefine.c:275
+#: rewrite/rewriteDefine.c:274
 msgid "rules on SELECT must have action INSTEAD SELECT"
 msgstr "regras no SELECT devem ter a��o INSTEAD SELECT"
 
-#: rewrite/rewriteDefine.c:283
+#: rewrite/rewriteDefine.c:282
 msgid "event qualifications are not implemented for rules on SELECT"
 msgstr "qualifica��es de eventos n�o est�o implementadas para regras no SELECT"
 
-#: rewrite/rewriteDefine.c:303
+#: rewrite/rewriteDefine.c:302
 msgid "SELECT rule's target list has too many entries"
 msgstr "lista de alvos de uma regra SELECT tem muitas entradas"
 
-#: rewrite/rewriteDefine.c:319
+#: rewrite/rewriteDefine.c:318
 msgid "cannot convert relation containing dropped columns to view"
 msgstr "n�o pode converter rela��o contendo colunas removidas em vis�o"
 
-#: rewrite/rewriteDefine.c:324
+#: rewrite/rewriteDefine.c:323
 #, c-format
 msgid "SELECT rule's target entry %d has different column name from \"%s\""
 msgstr ""
 "entrada alvo %d de uma regra SELECT tem nome de coluna diferente de \"%s\""
 
-#: rewrite/rewriteDefine.c:329
+#: rewrite/rewriteDefine.c:328
 #, c-format
 msgid "SELECT rule's target entry %d has different type from column \"%s\""
 msgstr ""
@@ -849,182 +695,187 @@ msgid "could not convert table \"%s\" to a view because it has child tables"
 msgstr ""
 "n�o p�de converter tabela \"%s\" em vis�o porque ela tem tabelas descendentes"
 
-#: rewrite/rewriteDefine.c:580 rewrite/rewriteRemove.c:59
+#: rewrite/rewriteDefine.c:580 rewrite/rewriteRemove.c:58
 #: commands/comment.c:619
 #, c-format
 msgid "rule \"%s\" for relation \"%s\" does not exist"
 msgstr "regra \"%s\" para rela��o \"%s\" n�o existe"
 
-#: rewrite/rewriteHandler.c:492 rewrite/rewriteHandler.c:511
+#: rewrite/rewriteHandler.c:484 rewrite/rewriteHandler.c:503
 #, c-format
 msgid "multiple assignments to same column \"%s\""
 msgstr "atribui��es m�ltiplas para mesma coluna \"%s\""
 
-#: rewrite/rewriteHandler.c:647 catalog/heap.c:1810
+#: rewrite/rewriteHandler.c:641 catalog/heap.c:1769
 #, c-format
 msgid "column \"%s\" is of type %s but default expression is of type %s"
 msgstr "coluna \"%s\" � do tipo %s mas express�o padr�o � do tipo %s"
 
-#: rewrite/rewriteHandler.c:652 parser/analyze.c:2701 parser/parse_node.c:247
-#: parser/parse_target.c:367 parser/parse_target.c:577
-#: parser/parse_target.c:586 catalog/heap.c:1815
+#: rewrite/rewriteHandler.c:646 parser/analyze.c:2704 parser/parse_node.c:247
+#: parser/parse_target.c:363 parser/parse_target.c:566
+#: parser/parse_target.c:575 catalog/heap.c:1774
 msgid "You will need to rewrite or cast the expression."
 msgstr "Voc� precisar� reescrever ou converter a express�o."
 
-#: rewrite/rewriteHandler.c:968 rewrite/rewriteHandler.c:1253
+#: rewrite/rewriteHandler.c:785 parser/analyze.c:2769
+#: optimizer/prep/prepjointree.c:290
+msgid "cannot use both FOR UPDATE and FOR SHARE in one query"
+msgstr "n�o pode utilizar FOR UPDATE e FOR SHARE na mesma consulta"
+
+#: rewrite/rewriteHandler.c:968 rewrite/rewriteHandler.c:1236
 #, c-format
 msgid "infinite recursion detected in rules for relation \"%s\""
 msgstr "recurs�o infinita detectada em regras para rela��o \"%s\""
 
-#: rewrite/rewriteHandler.c:1365
+#: rewrite/rewriteHandler.c:1348
 msgid "cannot insert into a view"
 msgstr "n�o pode inserir em uma vis�o"
 
-#: rewrite/rewriteHandler.c:1366
+#: rewrite/rewriteHandler.c:1349
 msgid "You need an unconditional ON INSERT DO INSTEAD rule."
 msgstr "Voc� precisa de uma regra incondicional ON INSERT DO INSTEAD."
 
-#: rewrite/rewriteHandler.c:1371
+#: rewrite/rewriteHandler.c:1354
 msgid "cannot update a view"
 msgstr "n�o pode atualizar uma vis�o"
 
-#: rewrite/rewriteHandler.c:1372
+#: rewrite/rewriteHandler.c:1355
 msgid "You need an unconditional ON UPDATE DO INSTEAD rule."
 msgstr "Voc� precisa de uma regra incondicional ON UPDATE DO INSTEAD."
 
-#: rewrite/rewriteHandler.c:1377
+#: rewrite/rewriteHandler.c:1360
 msgid "cannot delete from a view"
 msgstr "n�o pode apagar de uma vis�o"
 
-#: rewrite/rewriteHandler.c:1378
+#: rewrite/rewriteHandler.c:1361
 msgid "You need an unconditional ON DELETE DO INSTEAD rule."
 msgstr "Voc� precisa de uma regra incondicional ON DELETE DO INSTEAD."
 
-#: libpq/crypt.c:62
+#: libpq/crypt.c:66
 msgid ""
 "cannot use authentication method \"crypt\" because password is MD5-encrypted"
 msgstr ""
 "n�o pode usar m�todo de autentica��o \"crypt\" porque a senha est� "
 "criptografada em MD5"
 
-#: libpq/hba.c:158
+#: libpq/hba.c:160
 #, c-format
 msgid "authentication file token too long, skipping: \"%s\""
 msgstr "express�o do arquivo de autentica��o � muito longa, ignorando: \"%s\""
 
-#: libpq/hba.c:337
+#: libpq/hba.c:339
 #, c-format
 msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m"
 msgstr ""
 "n�o p�de abrir arquivo de autentica��o secund�rio \"@%s\" como \"%s\": %m"
 
-#: libpq/hba.c:766
+#: libpq/hba.c:773
 #, c-format
 msgid "invalid IP address \"%s\" in file \"%s\" line %d: %s"
 msgstr "endere�o IP \"%s\" � inv�lido no arquivo \"%s\" linha %d: %s"
 
-#: libpq/hba.c:801
+#: libpq/hba.c:808
 #, c-format
 msgid "invalid IP mask \"%s\" in file \"%s\" line %d: %s"
 msgstr ""
 "m�scara de endere�o IP \"%s\" � inv�lida no arquivo \"%s\" linha %d: %s"
 
-#: libpq/hba.c:816
+#: libpq/hba.c:823
 #, c-format
 msgid "IP address and mask do not match in file \"%s\" line %d"
 msgstr ""
 "endere�o IP e m�scara de endere�o IP n�o correspodem no arquivo \"%s\" linha "
 "%d"
 
-#: libpq/hba.c:874 libpq/hba.c:1111
+#: libpq/hba.c:881 libpq/hba.c:1163
 #, c-format
 msgid "invalid entry in file \"%s\" at line %d, token \"%s\""
 msgstr "entrada inv�lida no arquivo \"%s\" na linha %d, express�o \"%s\""
 
-#: libpq/hba.c:880
+#: libpq/hba.c:887
 #, c-format
 msgid "missing field in file \"%s\" at end of line %d"
 msgstr "faltando campo no arquivo \"%s\" no fim da linha %d"
 
-#: libpq/hba.c:948 libpq/hba.c:1005 utils/init/miscinit.c:783
-#: utils/init/miscinit.c:889 utils/misc/database.c:68 utils/error/elog.c:1118
-#: access/transam/slru.c:638 access/transam/xlog.c:1649
-#: access/transam/xlog.c:2770 access/transam/xlog.c:2860
-#: access/transam/xlog.c:2958
+#: libpq/hba.c:955 libpq/hba.c:1012 utils/init/miscinit.c:800
+#: utils/init/miscinit.c:906 utils/init/postinit.c:83 utils/error/elog.c:1118
+#: access/transam/slru.c:638 access/transam/xlog.c:1674
+#: access/transam/xlog.c:2809 access/transam/xlog.c:2899
+#: access/transam/xlog.c:2997
 #, c-format
 msgid "could not open file \"%s\": %m"
 msgstr "n�o p�de abrir arquivo \"%s\": %m"
 
-#: libpq/hba.c:1051 guc-file.l:151
+#: libpq/hba.c:1058 guc-file.l:152
 #, c-format
 msgid "could not open configuration file \"%s\": %m"
 msgstr "n�o p�de abrir arquivo de configura��o \"%s\": %m"
 
-#: libpq/hba.c:1117
+#: libpq/hba.c:1169
 #, c-format
 msgid "missing entry in file \"%s\" at end of line %d"
 msgstr "faltando entrada no arquivo \"%s\" no fim da linha %d"
 
-#: libpq/hba.c:1148
+#: libpq/hba.c:1200
 msgid "cannot use Ident authentication without usermap field"
 msgstr "n�o pode utilizar autentica��o do tipo Ident sem campo usermap"
 
-#: libpq/hba.c:1193
+#: libpq/hba.c:1245
 #, c-format
 msgid "could not open Ident usermap file \"%s\": %m"
 msgstr "n�o p�de abrir arquivo com mapa de usu�rios Ident \"%s\": %m"
 
-#: libpq/hba.c:1371
+#: libpq/hba.c:1423
 #, c-format
 msgid "could not create socket for Ident connection: %m"
 msgstr "n�o p�de criar soquete para conex�o com Ident: %m"
 
-#: libpq/hba.c:1387
+#: libpq/hba.c:1439
 #, c-format
 msgid "could not bind to local address \"%s\": %m"
 msgstr "n�o p�de se ligar ao endere�o local \"%s\": %m"
 
-#: libpq/hba.c:1399
+#: libpq/hba.c:1451
 #, c-format
 msgid "could not connect to Ident server at address \"%s\", port %s: %m"
 msgstr "n�o p�de conectar ao servidor Ident no endere�o \"%s\", porta %s: %m"
 
-#: libpq/hba.c:1419
+#: libpq/hba.c:1471
 #, c-format
 msgid "could not send query to Ident server at address \"%s\", port %s: %m"
 msgstr ""
 "n�o p�de enviar consulta ao servidor Ident no endere�o \"%s\", porta %s: %m"
 
-#: libpq/hba.c:1434
+#: libpq/hba.c:1486
 #, c-format
 msgid ""
 "could not receive response from Ident server at address \"%s\", port %s: %m"
 msgstr ""
 "n�o p�de receber resposta do servidor Ident no endere�o \"%s\", porta %s: %m"
 
-#: libpq/hba.c:1444
+#: libpq/hba.c:1496
 #, c-format
 msgid "invalidly formatted response from Ident server: \"%s\""
 msgstr "resposta formatada invalidamente pelo servidor Ident: \"%s\""
 
-#: libpq/hba.c:1479 libpq/hba.c:1510 libpq/hba.c:1578
+#: libpq/hba.c:1531 libpq/hba.c:1562 libpq/hba.c:1630
 #, c-format
 msgid "could not get peer credentials: %m"
-msgstr "n�o p�de receber credenciais: %m"
+msgstr "n�o p�de receber credenciais remotas: %m"
 
-#: libpq/hba.c:1488 libpq/hba.c:1519 libpq/hba.c:1589
+#: libpq/hba.c:1540 libpq/hba.c:1571 libpq/hba.c:1641
 #, c-format
 msgid "local user with ID %d does not exist"
 msgstr "usu�rio local com ID %d n�o existe"
 
-#: libpq/hba.c:1601
+#: libpq/hba.c:1653
 msgid ""
 "Ident authentication is not supported on local connections on this platform"
 msgstr ""
 "autentica��o do tipo Ident n�o � suportada em conex�es locais nessa "
 "plataforma"
 
-#: libpq/hba.c:1644
+#: libpq/hba.c:1696
 #, c-format
 msgid "Ident protocol identifies remote user as \"%s\""
 msgstr "Protocolo Ident identificou usu�rio remoto como \"%s\""
@@ -1111,12 +962,12 @@ msgstr "n
 #: libpq/be-secure.c:666
 #, c-format
 msgid "could not access private key file \"%s\": %m"
-msgstr "n�o p�de acessar arquivo contendo chave privada \"%s\": %m"
+msgstr "n�o p�de acessar arquivo da chave privada \"%s\": %m"
 
 #: libpq/be-secure.c:682
 #, c-format
 msgid "unsafe permissions on private key file \"%s\""
-msgstr "permiss�es inseguras no arquivo contendo chave privada \"%s\""
+msgstr "permiss�es inseguras no arquivo da chave privada \"%s\""
 
 #: libpq/be-secure.c:684
 msgid ""
@@ -1129,7 +980,7 @@ msgstr ""
 #: libpq/be-secure.c:689
 #, c-format
 msgid "could not load private key file \"%s\": %s"
-msgstr "n�o p�de carregar arquivo contendo chave privada \"%s\": %s"
+msgstr "n�o p�de carregar arquivo da chave privada \"%s\": %s"
 
 #: libpq/be-secure.c:694
 #, c-format
@@ -1139,7 +990,7 @@ msgstr "verifica
 #: libpq/be-secure.c:714
 #, c-format
 msgid "could not load root certificate file \"%s\": %s"
-msgstr "n�o p�de carregar arquivo cotendo certificado raiz \"%s\": %s"
+msgstr "n�o p�de carregar arquivo contendo certificado raiz \"%s\": %s"
 
 #: libpq/be-secure.c:716
 msgid "Will not verify client certificates."
@@ -1153,7 +1004,7 @@ msgstr "n
 #: libpq/be-secure.c:768
 #, c-format
 msgid "could not set SSL socket: %s"
-msgstr "n�o p�de criar soquete SSL: %s"
+msgstr "n�o p�de configurar soquete SSL: %s"
 
 #: libpq/be-secure.c:793
 #, c-format
@@ -1248,7 +1099,7 @@ msgstr "autentica
 #: libpq/auth.c:378
 #, c-format
 msgid "\"trust\" authentication failed for user \"%s\""
-msgstr "autentica��o do tipo \"trust\" falhou para usu�rio \"%s\""
+msgstr "m�todo de autentica��o \"trust\" falhou para usu�rio \"%s\""
 
 #: libpq/auth.c:381
 #, c-format
@@ -1285,14 +1136,6 @@ msgstr ""
 "nenhuma entrada no pg_hba.conf para m�quina \"%s\", usu�rio \"%s\", banco de "
 "dados \"%s\", %s"
 
-#: libpq/auth.c:452
-msgid "SSL on"
-msgstr "SSL habilitado"
-
-#: libpq/auth.c:452
-msgid "SSL off"
-msgstr "SSL desabilitado"
-
 #: libpq/auth.c:456
 #, c-format
 msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\""
@@ -1381,24 +1224,7 @@ msgstr "n
 #, c-format
 msgid "could not bind to all requested addresses: MAXLISTEN (%d) exceeded"
 msgstr ""
-"n�o p�de se ligar a todos os endere�os informados: MAXLISTEN (%d) excedeu"
-
-#: libpq/pqcomm.c:311
-msgid "IPv4"
-msgstr "IPv4"
-
-#: libpq/pqcomm.c:315
-msgid "IPv6"
-msgstr "IPv6"
-
-#: libpq/pqcomm.c:320
-msgid "Unix"
-msgstr "Unix"
-
-#: libpq/pqcomm.c:325
-#, c-format
-msgid "unrecognized address family %d"
-msgstr "fam�lia de endere�os desconhecida %d"
+"n�o p�de se ligar a todos os endere�os requisitados: MAXLISTEN (%d) excedeu"
 
 #. translator: %s is IPv4, IPv6, or Unix
 #: libpq/pqcomm.c:336
@@ -1446,8 +1272,8 @@ msgstr ""
 msgid "could not listen on %s socket: %m"
 msgstr "n�o p�de escutar no soquete %s: %m"
 
-#: libpq/pqcomm.c:501 commands/user.c:1535 commands/user.c:1772
-#: commands/user.c:1807 catalog/aclchk.c:1229
+#: libpq/pqcomm.c:501 utils/cache/lsyscache.c:2067 commands/user.c:1050
+#: commands/user.c:1287 commands/user.c:1322
 #, c-format
 msgid "group \"%s\" does not exist"
 msgstr "grupo \"%s\" n�o existe"
@@ -1494,7 +1320,7 @@ msgid "no data left in message"
 msgstr "nenhum dado na mensagem"
 
 #: libpq/pqformat.c:591 libpq/pqformat.c:609 libpq/pqformat.c:630
-#: utils/adt/arrayfuncs.c:1277 utils/adt/rowtypes.c:523
+#: utils/adt/arrayfuncs.c:1273 utils/adt/rowtypes.c:522
 msgid "insufficient data left in message"
 msgstr "dados insuficientes na mensagem"
 
@@ -1516,7 +1342,7 @@ msgstr "nenhum valor encontrado para par
 msgid "no value found for parameter %d"
 msgstr "nenhum valor encontrado para par�metro %d"
 
-#: utils/mb/mbutils.c:188 commands/variable.c:593
+#: utils/mb/mbutils.c:188 commands/variable.c:539
 #, c-format
 msgid "conversion between %s and %s is not supported"
 msgstr "convers�o entre %s e %s n�o � suportada"
@@ -1540,8 +1366,8 @@ msgstr "nome da codifica
 
 #: utils/mb/conv.c:376
 #, c-format
-msgid "ignoring unconvertible UTF-8 character 0x%04x"
-msgstr "ignorando caracter UTF-8 0x%04x que n�o p�de ser convertido"
+msgid "ignoring unconvertible UTF8 character 0x%04x"
+msgstr "ignorando caracter UTF8 0x%04x que n�o p�de ser convertido"
 
 #: utils/mb/conv.c:406
 #, c-format
@@ -1553,16 +1379,16 @@ msgstr "n
 msgid "ignoring unconvertible %s character 0x%04x"
 msgstr "ignorando %s caracter 0x%04x que n�o pode ser convertido"
 
-#: utils/mb/wchar.c:832
+#: utils/mb/wchar.c:833
 msgid "Unicode characters greater than or equal to 0x10000 are not supported"
 msgstr "Caracteres Unicode maiores ou iguais a 0x10000 n�o s�o suportados"
 
-#: utils/mb/wchar.c:861
+#: utils/mb/wchar.c:862
 #, c-format
 msgid "invalid byte sequence for encoding \"%s\": 0x%s"
 msgstr "sequ�ncia de bytes inv�lida para codifica��o \"%s\": 0x%s"
 
-#: utils/mb/encnames.c:445
+#: utils/mb/encnames.c:460
 msgid "encoding name too long"
 msgstr "nome da codifica��o muito longo"
 
@@ -1586,7 +1412,7 @@ msgstr "contador deve ser maior do que zero"
 msgid "lower bound cannot equal upper bound"
 msgstr "limite inferior n�o pode ser igual a limite superior"
 
-#: utils/adt/numeric.c:1704 utils/adt/float.c:1493
+#: utils/adt/numeric.c:1704 utils/adt/float.c:1475
 msgid "invalid argument for power function"
 msgstr "argumento inv�lido para fun��o potencia��o"
 
@@ -1594,13 +1420,13 @@ msgstr "argumento inv
 msgid "cannot convert NaN to integer"
 msgstr "n�o pode converter NaN para inteiro"
 
-#: utils/adt/numeric.c:1785 utils/adt/numeric.c:1794 utils/adt/int.c:614
-#: utils/adt/int.c:642 utils/adt/int.c:662 utils/adt/int.c:691
-#: utils/adt/int.c:716 utils/adt/int.c:731 utils/adt/int.c:861
-#: utils/adt/int.c:881 utils/adt/int.c:907 utils/adt/int.c:941
-#: utils/adt/int.c:961 utils/adt/int.c:987 utils/adt/int.c:1012
-#: utils/adt/int.c:1091 utils/adt/float.c:1131 utils/adt/float.c:1197
-#: utils/adt/int8.c:947 utils/adt/varbit.c:1234
+#: utils/adt/numeric.c:1785 utils/adt/numeric.c:1794 utils/adt/int.c:668
+#: utils/adt/int.c:696 utils/adt/int.c:716 utils/adt/int.c:745
+#: utils/adt/int.c:770 utils/adt/int.c:785 utils/adt/int.c:915
+#: utils/adt/int.c:935 utils/adt/int.c:961 utils/adt/int.c:995
+#: utils/adt/int.c:1015 utils/adt/int.c:1041 utils/adt/int.c:1066
+#: utils/adt/int.c:1145 utils/adt/float.c:1113 utils/adt/float.c:1179
+#: utils/adt/int8.c:976 utils/adt/varbit.c:1234
 msgid "integer out of range"
 msgstr "inteiro fora do intervalo"
 
@@ -1608,12 +1434,13 @@ msgstr "inteiro fora do intervalo"
 msgid "cannot convert NaN to bigint"
 msgstr "n�o pode converter NaN para bigint"
 
-#: utils/adt/numeric.c:1838 utils/adt/int8.c:506 utils/adt/int8.c:534
-#: utils/adt/int8.c:554 utils/adt/int8.c:583 utils/adt/int8.c:608
-#: utils/adt/int8.c:626 utils/adt/int8.c:660 utils/adt/int8.c:705
-#: utils/adt/int8.c:725 utils/adt/int8.c:751 utils/adt/int8.c:776
-#: utils/adt/int8.c:796 utils/adt/int8.c:816 utils/adt/int8.c:842
-#: utils/adt/int8.c:1010 utils/adt/int8.c:1049 utils/adt/varbit.c:1313
+#: utils/adt/numeric.c:1838 utils/adt/int8.c:507 utils/adt/int8.c:535
+#: utils/adt/int8.c:555 utils/adt/int8.c:584 utils/adt/int8.c:609
+#: utils/adt/int8.c:627 utils/adt/int8.c:672 utils/adt/int8.c:688
+#: utils/adt/int8.c:734 utils/adt/int8.c:754 utils/adt/int8.c:780
+#: utils/adt/int8.c:805 utils/adt/int8.c:825 utils/adt/int8.c:845
+#: utils/adt/int8.c:871 utils/adt/int8.c:1039 utils/adt/int8.c:1078
+#: utils/adt/varbit.c:1313
 msgid "bigint out of range"
 msgstr "bigint fora do intervalo"
 
@@ -1621,28 +1448,28 @@ msgstr "bigint fora do intervalo"
 msgid "cannot convert NaN to smallint"
 msgstr "n�o pode converter NaN para smallint"
 
-#: utils/adt/numeric.c:1886 utils/adt/numeric.c:1897 utils/adt/int.c:297
-#: utils/adt/int.c:747 utils/adt/int.c:775 utils/adt/int.c:795
-#: utils/adt/int.c:815 utils/adt/int.c:841 utils/adt/int.c:1106
-#: utils/adt/float.c:1150 utils/adt/float.c:1216 utils/adt/int8.c:972
+#: utils/adt/numeric.c:1886 utils/adt/numeric.c:1897 utils/adt/int.c:332
+#: utils/adt/int.c:801 utils/adt/int.c:829 utils/adt/int.c:849
+#: utils/adt/int.c:869 utils/adt/int.c:895 utils/adt/int.c:1160
+#: utils/adt/float.c:1132 utils/adt/float.c:1198 utils/adt/int8.c:1001
 msgid "smallint out of range"
 msgstr "smallint fora do intervalo"
 
-#: utils/adt/numeric.c:2720 utils/adt/numeric.c:2743 utils/adt/numeric.c:2767
-#: utils/adt/numeric.c:2774 utils/adt/numeric.c:2788
+#: utils/adt/numeric.c:2774 utils/adt/numeric.c:2797 utils/adt/numeric.c:2821
+#: utils/adt/numeric.c:2828 utils/adt/numeric.c:2842
 #, c-format
 msgid "invalid input syntax for type numeric: \"%s\""
 msgstr "sintaxe de entrada inv�lida para tipo numeric: \"%s\""
 
-#: utils/adt/numeric.c:3086
+#: utils/adt/numeric.c:3140
 msgid "value overflows numeric format"
 msgstr "valor excede formato numeric"
 
-#: utils/adt/numeric.c:3156
+#: utils/adt/numeric.c:3210
 msgid "numeric field overflow"
 msgstr "estouro de campo numeric"
 
-#: utils/adt/numeric.c:3157
+#: utils/adt/numeric.c:3211
 #, c-format
 msgid ""
 "The absolute value is greater than or equal to 10^%d for field with "
@@ -1651,40 +1478,40 @@ msgstr ""
 "O valor absoluto � maior ou igual a 10^%d para campo com precis�o %d, escala "
 "%d."
 
-#: utils/adt/numeric.c:3298 utils/adt/numeric.c:3324 utils/adt/float.c:502
-#: utils/adt/float.c:526
+#: utils/adt/numeric.c:3352 utils/adt/numeric.c:3378 utils/adt/float.c:442
+#: utils/adt/float.c:484 utils/adt/float.c:508
 #, c-format
 msgid "invalid input syntax for type double precision: \"%s\""
 msgstr "sintaxe de entrada inv�lida para tipo double precision: \"%s\""
 
-#: utils/adt/numeric.c:3820 utils/adt/timestamp.c:2196 utils/adt/int.c:705
-#: utils/adt/int.c:830 utils/adt/int.c:920 utils/adt/int.c:1001
-#: utils/adt/int.c:1025 utils/adt/int.c:1040 utils/adt/int.c:1055
-#: utils/adt/int.c:1070 utils/adt/float.c:795 utils/adt/float.c:859
-#: utils/adt/float.c:2117 utils/adt/float.c:2179 utils/adt/cash.c:496
+#: utils/adt/numeric.c:3874 utils/adt/timestamp.c:2196 utils/adt/int.c:759
+#: utils/adt/int.c:884 utils/adt/int.c:974 utils/adt/int.c:1055
+#: utils/adt/int.c:1079 utils/adt/int.c:1094 utils/adt/int.c:1109
+#: utils/adt/int.c:1124 utils/adt/float.c:777 utils/adt/float.c:841
+#: utils/adt/float.c:2135 utils/adt/float.c:2197 utils/adt/cash.c:496
 #: utils/adt/cash.c:548 utils/adt/cash.c:601 utils/adt/cash.c:653
-#: utils/adt/int8.c:597 utils/adt/int8.c:642 utils/adt/int8.c:765
-#: utils/adt/int8.c:855 utils/adt/geo_ops.c:3832
+#: utils/adt/int8.c:598 utils/adt/int8.c:643 utils/adt/int8.c:794
+#: utils/adt/int8.c:884 utils/adt/geo_ops.c:3832
 msgid "division by zero"
 msgstr "divis�o por zero"
 
-#: utils/adt/numeric.c:4220 utils/adt/float.c:1452
+#: utils/adt/numeric.c:4274 utils/adt/float.c:1434
 msgid "cannot take square root of a negative number"
 msgstr "n�o pode calcular raiz quadrada de um n�mero negativo"
 
-#: utils/adt/numeric.c:4310
+#: utils/adt/numeric.c:4364
 msgid "argument for function \"exp\" too big"
 msgstr "argumento para fun��o \"exp\" � muito grande"
 
-#: utils/adt/numeric.c:4439 utils/adt/float.c:1561 utils/adt/float.c:1591
+#: utils/adt/numeric.c:4493 utils/adt/float.c:1543 utils/adt/float.c:1573
 msgid "cannot take logarithm of zero"
 msgstr "n�o pode calcular logaritmo de zero"
 
-#: utils/adt/numeric.c:4443 utils/adt/float.c:1565 utils/adt/float.c:1595
+#: utils/adt/numeric.c:4497 utils/adt/float.c:1547 utils/adt/float.c:1577
 msgid "cannot take logarithm of a negative number"
 msgstr "n�o pode calcular logaritmo de n�mero negativo"
 
-#: utils/adt/numeric.c:4692
+#: utils/adt/numeric.c:4746
 msgid "zero raised to zero is undefined"
 msgstr "zero elevado a zero � indefinido"
 
@@ -1708,19 +1535,19 @@ msgstr "valor de data/hora \"%s\" n
 #: utils/adt/timestamp.c:1928 utils/adt/timestamp.c:1949
 #: utils/adt/timestamp.c:2007 utils/adt/timestamp.c:2030
 #: utils/adt/timestamp.c:2412 utils/adt/timestamp.c:2530
-#: utils/adt/timestamp.c:2752 utils/adt/timestamp.c:2825
-#: utils/adt/timestamp.c:2872 utils/adt/timestamp.c:2968
-#: utils/adt/timestamp.c:3251 utils/adt/timestamp.c:3384
-#: utils/adt/timestamp.c:3391 utils/adt/timestamp.c:3404
-#: utils/adt/timestamp.c:3412 utils/adt/timestamp.c:3475
-#: utils/adt/timestamp.c:3610 utils/adt/timestamp.c:3618
-#: utils/adt/timestamp.c:3885 utils/adt/timestamp.c:3892
-#: utils/adt/timestamp.c:3920 utils/adt/timestamp.c:3924
+#: utils/adt/timestamp.c:2752 utils/adt/timestamp.c:2836
+#: utils/adt/timestamp.c:2883 utils/adt/timestamp.c:2990
+#: utils/adt/timestamp.c:3273 utils/adt/timestamp.c:3406
+#: utils/adt/timestamp.c:3413 utils/adt/timestamp.c:3426
+#: utils/adt/timestamp.c:3434 utils/adt/timestamp.c:3497
+#: utils/adt/timestamp.c:3632 utils/adt/timestamp.c:3640
+#: utils/adt/timestamp.c:3907 utils/adt/timestamp.c:3914
+#: utils/adt/timestamp.c:3942 utils/adt/timestamp.c:3946
 #: utils/adt/nabstime.c:570 utils/adt/nabstime.c:613 utils/adt/nabstime.c:643
 #: utils/adt/nabstime.c:686 utils/adt/date.c:732 utils/adt/date.c:775
-#: utils/adt/date.c:1337 utils/adt/date.c:1374 utils/adt/date.c:2252
-#: utils/adt/formatting.c:2897 utils/adt/formatting.c:2922
-#: utils/adt/formatting.c:2981
+#: utils/adt/date.c:1337 utils/adt/date.c:1374 utils/adt/date.c:2260
+#: utils/adt/formatting.c:2916 utils/adt/formatting.c:2941
+#: utils/adt/formatting.c:3000
 msgid "timestamp out of range"
 msgstr "timestamp fora do intervalo"
 
@@ -1730,7 +1557,7 @@ msgid "timestamp(%d) precision must be between %d and %d"
 msgstr "precis�o do timestamp(%d) deve ser entre %d e %d"
 
 #: utils/adt/timestamp.c:528 utils/adt/timestamp.c:2407
-#: utils/adt/timestamp.c:2525 utils/adt/timestamp.c:3060
+#: utils/adt/timestamp.c:2525 utils/adt/timestamp.c:3082
 msgid "interval out of range"
 msgstr "interval fora do intervalo"
 
@@ -1759,48 +1586,48 @@ msgstr ""
 msgid "invalid input syntax for type interval: \"%s\""
 msgstr "sintaxe de entrada inv�lida para tipo interval: \"%s\""
 
-#: utils/adt/timestamp.c:2817 utils/adt/timestamp.c:3363
-#: utils/adt/timestamp.c:3420
+#: utils/adt/timestamp.c:2828 utils/adt/timestamp.c:3385
+#: utils/adt/timestamp.c:3442
 #, c-format
 msgid "timestamp units \"%s\" not supported"
 msgstr "unidades do timestamp \"%s\" n�o s�o suportadas"
 
-#: utils/adt/timestamp.c:2831 utils/adt/timestamp.c:3430
+#: utils/adt/timestamp.c:2842 utils/adt/timestamp.c:3452
 #, c-format
 msgid "timestamp units \"%s\" not recognized"
 msgstr "unidades do timestamp \"%s\" desconhecidas"
 
-#: utils/adt/timestamp.c:2957 utils/adt/timestamp.c:3588
-#: utils/adt/timestamp.c:3626
+#: utils/adt/timestamp.c:2979 utils/adt/timestamp.c:3610
+#: utils/adt/timestamp.c:3648
 #, c-format
 msgid "timestamp with time zone units \"%s\" not supported"
 msgstr "unidades do timestamp com zona hor�ria \"%s\" n�o s�o suportadas"
 
-#: utils/adt/timestamp.c:2974 utils/adt/timestamp.c:3635
+#: utils/adt/timestamp.c:2996 utils/adt/timestamp.c:3657
 #, c-format
 msgid "timestamp with time zone units \"%s\" not recognized"
 msgstr "unidades do timestamp com zona hor�ria \"%s\" desconhecidas"
 
-#: utils/adt/timestamp.c:3053 utils/adt/timestamp.c:3741
+#: utils/adt/timestamp.c:3075 utils/adt/timestamp.c:3763
 #, c-format
 msgid "interval units \"%s\" not supported"
 msgstr "unidades de interval \"%s\" n�o s�o suportadas"
 
-#: utils/adt/timestamp.c:3069 utils/adt/timestamp.c:3771
+#: utils/adt/timestamp.c:3091 utils/adt/timestamp.c:3793
 #, c-format
 msgid "interval units \"%s\" not recognized"
 msgstr "unidades de interval \"%s\" desconhecidas"
 
-#: utils/adt/timestamp.c:3093
+#: utils/adt/timestamp.c:3115
 msgid "cannot calculate week number without year information"
 msgstr "n�o pode calcular n�mero da semana sem a informa��o do ano"
 
-#: utils/adt/timestamp.c:3816 utils/adt/timestamp.c:3965 utils/adt/date.c:2510
+#: utils/adt/timestamp.c:3838 utils/adt/timestamp.c:3987 utils/adt/date.c:2518
 #, c-format
 msgid "time zone \"%s\" not recognized"
 msgstr "zona hor�ria \"%s\" desconhecida"
 
-#: utils/adt/timestamp.c:3842 utils/adt/timestamp.c:3991
+#: utils/adt/timestamp.c:3864 utils/adt/timestamp.c:4013
 #, c-format
 msgid "interval time zone \"%s\" must not specify month"
 msgstr "zona hor�ria de interval \"%s\" n�o deve especificar o m�s"
@@ -1828,7 +1655,7 @@ msgid "cannot convert reltime \"invalid\" to interval"
 msgstr "n�o pode converter reltime \"invalid\" em interval"
 
 #: utils/adt/not_in.c:64 utils/adt/varlena.c:1636 utils/adt/varlena.c:1641
-#: utils/adt/regproc.c:1110 utils/adt/regproc.c:1115
+#: utils/adt/regproc.c:1109 utils/adt/regproc.c:1114
 msgid "invalid name syntax"
 msgstr "sintaxe de nome inv�lida"
 
@@ -1920,37 +1747,37 @@ msgstr "n
 msgid "unrecognized privilege type: \"%s\""
 msgstr "tipo de privil�gio desconhecido: \"%s\""
 
-#: utils/adt/acl.c:1661 utils/init/postinit.c:271 utils/init/postinit.c:283
-#: commands/comment.c:458 commands/dbcommands.c:550 commands/dbcommands.c:679
-#: commands/dbcommands.c:779 commands/dbcommands.c:866 catalog/aclchk.c:451
+#: utils/adt/acl.c:1661 utils/init/postinit.c:313 utils/init/postinit.c:325
+#: commands/comment.c:463 commands/dbcommands.c:565 commands/dbcommands.c:691
+#: commands/dbcommands.c:789 commands/dbcommands.c:874 catalog/aclchk.c:450
 #, c-format
 msgid "database \"%s\" does not exist"
 msgstr "banco de dados \"%s\" n�o existe"
 
-#: utils/adt/acl.c:1875 utils/adt/regproc.c:117 utils/adt/regproc.c:138
-#: utils/adt/regproc.c:290
+#: utils/adt/acl.c:1875 utils/adt/regproc.c:116 utils/adt/regproc.c:137
+#: utils/adt/regproc.c:289
 #, c-format
 msgid "function \"%s\" does not exist"
 msgstr "fun��o \"%s\" n�o existe"
 
-#: utils/adt/acl.c:2079 commands/comment.c:1001 commands/functioncmds.c:451
-#: commands/proclang.c:202 commands/proclang.c:257 catalog/aclchk.c:758
+#: utils/adt/acl.c:2079 commands/comment.c:985 commands/functioncmds.c:548
+#: commands/proclang.c:200 commands/proclang.c:255 catalog/aclchk.c:757
 #, c-format
 msgid "language \"%s\" does not exist"
 msgstr "linguagem \"%s\" n�o existe"
 
-#: utils/adt/acl.c:2283 commands/comment.c:509 commands/schemacmds.c:181
-#: commands/schemacmds.c:243 commands/schemacmds.c:298 catalog/aclchk.c:921
-#: catalog/namespace.c:255 catalog/namespace.c:1229 catalog/namespace.c:1267
-#: catalog/namespace.c:1866
+#: utils/adt/acl.c:2283 commands/comment.c:513 commands/schemacmds.c:180
+#: commands/schemacmds.c:242 commands/schemacmds.c:297 catalog/aclchk.c:920
+#: catalog/namespace.c:254 catalog/namespace.c:1228 catalog/namespace.c:1266
+#: catalog/namespace.c:1865
 #, c-format
 msgid "schema \"%s\" does not exist"
 msgstr "esquema \"%s\" n�o existe"
 
-#: utils/adt/acl.c:2489 commands/tablespace.c:425 commands/tablespace.c:750
-#: commands/tablespace.c:817 commands/tablespace.c:896
-#: commands/dbcommands.c:277 commands/indexcmds.c:171 commands/tablecmds.c:324
-#: commands/tablecmds.c:5435 catalog/aclchk.c:1080
+#: utils/adt/acl.c:2489 commands/tablespace.c:423 commands/tablespace.c:747
+#: commands/tablespace.c:814 commands/tablespace.c:893
+#: commands/dbcommands.c:286 commands/indexcmds.c:174 commands/tablecmds.c:325
+#: commands/tablecmds.c:5521 catalog/aclchk.c:1079
 #, c-format
 msgid "tablespace \"%s\" does not exist"
 msgstr "tablespace \"%s\" n�o existe"
@@ -1963,11 +1790,15 @@ msgstr "cadeia de caracteres de escape inv
 msgid "Escape string must be empty or one character."
 msgstr "Cadeia de caracteres de escape deve ser vazia ou ter um caracter."
 
-#: utils/adt/int.c:137
+#: utils/adt/int.c:170
 msgid "int2vector has too many elements"
 msgstr "int2vector tem muitos elementos"
 
-#: utils/adt/int.c:1294 utils/adt/int8.c:1151
+#: utils/adt/int.c:227
+msgid "invalid int2vector data"
+msgstr "dado de int2vector inv�lido"
+
+#: utils/adt/int.c:1348 utils/adt/int8.c:1180
 msgid "step size may not equal zero"
 msgstr "tamanho do passo n�o pode ser zero"
 
@@ -1985,38 +1816,34 @@ msgstr "valor de octeto inv
 msgid "text too long to convert to MAC address"
 msgstr "texto muito longo para converter em endere�o MAC"
 
-#: utils/adt/oid.c:45
-msgid "deprecated input syntax for type oid: \"\""
-msgstr "sintaxe de entrada obsoleta para tipo oid: \"\""
-
-#: utils/adt/oid.c:46 utils/adt/float.c:281 utils/adt/float.c:458
-msgid "This input will be rejected in a future release of PostgreSQL."
-msgstr "Esta entrada ser� rejeitada em vers�es futuras do PostgreSQL."
-
-#: utils/adt/oid.c:60 utils/adt/oid.c:66 utils/adt/oid.c:87
+#: utils/adt/oid.c:43 utils/adt/oid.c:57 utils/adt/oid.c:63 utils/adt/oid.c:84
 #, c-format
 msgid "invalid input syntax for type oid: \"%s\""
 msgstr "sintaxe de entrada inv�lida para tipo oid: \"%s\""
 
-#: utils/adt/oid.c:72 utils/adt/oid.c:110
+#: utils/adt/oid.c:69 utils/adt/oid.c:107
 #, c-format
 msgid "value \"%s\" is out of range for type oid"
 msgstr "valor \"%s\" est� fora do intervalo para tipo oid"
 
-#: utils/adt/oid.c:188
+#: utils/adt/oid.c:212
 msgid "oidvector has too many elements"
 msgstr "oidvector tem muitos elementos"
 
+#: utils/adt/oid.c:269
+msgid "invalid oidvector data"
+msgstr "dado de oidvector inv�lido"
+
 #: utils/adt/tid.c:66 utils/adt/tid.c:74 utils/adt/tid.c:82
 #, c-format
 msgid "invalid input syntax for type tid: \"%s\""
 msgstr "sintaxe de entrada inv�lida para tipo tid: \"%s\""
 
-#: utils/adt/oracle_compat.c:99 utils/adt/oracle_compat.c:139
+#: utils/adt/oracle_compat.c:100 utils/adt/oracle_compat.c:140
 msgid "invalid multibyte character for locale"
 msgstr "caracter multibyte inv�lido para localidade"
 
-#: utils/adt/oracle_compat.c:100
+#: utils/adt/oracle_compat.c:101
 msgid ""
 "The server's LC_CTYPE locale is probably incompatible with the database "
 "encoding."
@@ -2024,10 +1851,10 @@ msgstr ""
 "A localidade LC_TYPE do servidor � provavelmente incompat�vel com a "
 "codifica��o do banco de dados."
 
-#: utils/adt/oracle_compat.c:411 utils/adt/oracle_compat.c:508
-#: utils/adt/oracle_compat.c:1132
+#: utils/adt/oracle_compat.c:424 utils/adt/oracle_compat.c:521
+#: utils/adt/oracle_compat.c:1145
 msgid "requested length too large"
-msgstr "tamanho solicitado � muito grande"
+msgstr "tamanho requisitado � muito grande"
 
 #: utils/adt/ri_triggers.c:302 utils/adt/ri_triggers.c:364
 #: utils/adt/ri_triggers.c:543 utils/adt/ri_triggers.c:782
@@ -2036,7 +1863,7 @@ msgstr "tamanho solicitado 
 #: utils/adt/ri_triggers.c:1668 utils/adt/ri_triggers.c:1838
 #: utils/adt/ri_triggers.c:2056 utils/adt/ri_triggers.c:2236
 #: utils/adt/ri_triggers.c:2441 utils/adt/ri_triggers.c:2537
-#: utils/adt/ri_triggers.c:2660 gram.y:1886
+#: utils/adt/ri_triggers.c:2660 gram.y:1896
 msgid "MATCH PARTIAL not yet implemented"
 msgstr "MATCH PARTIAL ainda n�o foi implementado"
 
@@ -2145,7 +1972,7 @@ msgstr ""
 msgid "Key (%s)=(%s) is still referenced from table \"%s\"."
 msgstr "Chave (%s)=(%s) ainda � referenciada pela tabela \"%s\"."
 
-#: utils/adt/ri_triggers.c:3642 utils/adt/arrayfuncs.c:2582
+#: utils/adt/ri_triggers.c:3642 utils/adt/arrayfuncs.c:2562
 #: parser/parse_oper.c:185
 #, c-format
 msgid "could not identify an equality operator for type %s"
@@ -2161,22 +1988,26 @@ msgstr "valor muito longo para tipo character(%d)"
 msgid "value too long for type character varying(%d)"
 msgstr "valor muito longo para tipo character varying(%d)"
 
-#: utils/adt/ruleutils.c:1257 commands/comment.c:404 commands/tablecmds.c:3100
-#: commands/tablecmds.c:3193 commands/tablecmds.c:3245
-#: commands/tablecmds.c:3341 commands/tablecmds.c:3402
-#: commands/tablecmds.c:3468 commands/tablecmds.c:4608
-#: commands/tablecmds.c:4745 parser/parse_relation.c:1641
-#: parser/parse_relation.c:1700 parser/parse_relation.c:1913
+#: utils/adt/ruleutils.c:1267 commands/comment.c:410 commands/tablecmds.c:3165
+#: commands/tablecmds.c:3258 commands/tablecmds.c:3310
+#: commands/tablecmds.c:3406 commands/tablecmds.c:3467
+#: commands/tablecmds.c:3533 commands/tablecmds.c:4693
+#: commands/tablecmds.c:4830 parser/parse_relation.c:1609
+#: parser/parse_relation.c:1664 parser/parse_relation.c:1876
 #: parser/parse_type.c:94
 #, c-format
 msgid "column \"%s\" of relation \"%s\" does not exist"
 msgstr "coluna \"%s\" da rela��o \"%s\" n�o existe"
 
-#: utils/adt/ruleutils.c:1615
+#: utils/adt/ruleutils.c:1624
 #, c-format
 msgid "rule \"%s\" has unsupported event type %d"
 msgstr "regra \"%s\" tem tipo de evento %d que n�o � suportado"
 
+#: utils/adt/ruleutils.c:3555 utils/adt/regproc.c:643 utils/adt/regproc.c:1275
+msgid "too many arguments"
+msgstr "muitos argumentos"
+
 #: utils/adt/encode.c:55 utils/adt/encode.c:91
 #, c-format
 msgid "unrecognized encoding: \"%s\""
@@ -2189,7 +2020,7 @@ msgstr "d
 
 #: utils/adt/encode.c:178
 msgid "invalid hexadecimal data: odd number of digits"
-msgstr "dado hexadecimal inv�lido: n�mero de d�gitos estranho"
+msgstr "dado hexadecimal inv�lido: n�mero �mpar de d�gitos"
 
 #: utils/adt/encode.c:295
 msgid "unexpected \"=\""
@@ -2208,43 +2039,43 @@ msgstr "fim de sequ
 msgid "invalid input syntax for type bytea"
 msgstr "sintaxe de entrada inv�lida para tipo bytea"
 
-#: utils/adt/datetime.c:1313 utils/adt/datetime.c:2078 utils/adt/date.c:87
+#: utils/adt/datetime.c:1313 utils/adt/datetime.c:2079 utils/adt/date.c:87
 msgid "date/time value \"current\" is no longer supported"
 msgstr "valor de data/hora \"current\" n�o � mais suportado"
 
-#: utils/adt/datetime.c:1495 utils/adt/datetime.c:2360
-#: utils/adt/formatting.c:3183
+#: utils/adt/datetime.c:1495 utils/adt/datetime.c:2361
+#: utils/adt/formatting.c:3218
 #, c-format
 msgid "inconsistent use of year %04d and \"BC\""
 msgstr "uso inconsistente do ano %04d e \"BC\""
 
-#: utils/adt/datetime.c:3305 utils/adt/datetime.c:3312
+#: utils/adt/datetime.c:3306 utils/adt/datetime.c:3313
 #, c-format
 msgid "date/time field value out of range: \"%s\""
 msgstr "valor do campo date/time est� fora do intervalo: \"%s\""
 
-#: utils/adt/datetime.c:3314
+#: utils/adt/datetime.c:3315
 msgid "Perhaps you need a different \"datestyle\" setting."
 msgstr "Talvez voc� necessite de uma defini��o diferente para \"datestyle\"."
 
-#: utils/adt/datetime.c:3319
+#: utils/adt/datetime.c:3320
 #, c-format
 msgid "interval field value out of range: \"%s\""
 msgstr "valor do campo interval fora do intervalo: \"%s\""
 
-#: utils/adt/datetime.c:3325
+#: utils/adt/datetime.c:3326
 #, c-format
 msgid "time zone displacement out of range: \"%s\""
 msgstr "deslocamento de zona hor�ria fora do intervalo: \"%s\""
 
 #. translator: first %s is inet or cidr
-#: utils/adt/datetime.c:3332 utils/adt/network.c:93
+#: utils/adt/datetime.c:3333 utils/adt/network.c:93
 #, c-format
 msgid "invalid input syntax for type %s: \"%s\""
 msgstr "sintaxe de entrada inv�lida para tipo %s: \"%s\""
 
 #: utils/adt/numutils.c:74 utils/adt/numutils.c:84 utils/adt/numutils.c:97
-#: utils/adt/int8.c:101 utils/adt/int8.c:136
+#: utils/adt/int8.c:102 utils/adt/int8.c:137
 #, c-format
 msgid "invalid input syntax for integer: \"%s\""
 msgstr "sintaxe de entrada inv�lida para integer: \"%s\""
@@ -2300,36 +2131,28 @@ msgid "type \"double precision\" value out of range: underflow"
 msgstr ""
 "valor do tipo \"double precision\" fora do intervalo: estouro (underflow)"
 
-#: utils/adt/float.c:280
-msgid "deprecated input syntax for type real: \"\""
-msgstr "sintaxe de entrada obsoleta para tipo real: \"\""
-
-#: utils/adt/float.c:320
-#, c-format
-msgid "\"%s\" is out of range for type real"
-msgstr "\"%s\" est� fora do intervalo para tipo real"
-
-#: utils/adt/float.c:325 utils/adt/float.c:349
+#: utils/adt/float.c:274 utils/adt/float.c:316 utils/adt/float.c:340
 #, c-format
 msgid "invalid input syntax for type real: \"%s\""
 msgstr "sintaxe de entrada inv�lida para tipo real: \"%s\""
 
-#: utils/adt/float.c:457
-msgid "deprecated input syntax for type double precision: \"\""
-msgstr "sintaxe de entrada obsoleta para tipo double precision: \"\""
+#: utils/adt/float.c:311
+#, c-format
+msgid "\"%s\" is out of range for type real"
+msgstr "\"%s\" est� fora do intervalo para tipo real"
 
-#: utils/adt/float.c:497
+#: utils/adt/float.c:479
 #, c-format
 msgid "\"%s\" is out of range for type double precision"
 msgstr "\"%s\" est� fora do intervalo para tipo double precision"
 
-#: utils/adt/float.c:1508 utils/adt/float.c:1538
+#: utils/adt/float.c:1490 utils/adt/float.c:1520
 msgid "result is out of range"
 msgstr "resultado est� fora do intervalo"
 
-#: utils/adt/float.c:1622 utils/adt/float.c:1647 utils/adt/float.c:1672
-#: utils/adt/float.c:1698 utils/adt/float.c:1723 utils/adt/float.c:1748
-#: utils/adt/float.c:1774 utils/adt/float.c:1799
+#: utils/adt/float.c:1604 utils/adt/float.c:1629 utils/adt/float.c:1654
+#: utils/adt/float.c:1680 utils/adt/float.c:1705 utils/adt/float.c:1730
+#: utils/adt/float.c:1756 utils/adt/float.c:1781
 msgid "input is out of range"
 msgstr "entrada est� fora do intervalo"
 
@@ -2366,27 +2189,27 @@ msgstr "sintaxe de entrada inv
 msgid "\"time\" units \"%s\" not recognized"
 msgstr "unidades de \"time\" \"%s\" desconhecidas"
 
-#: utils/adt/date.c:2330
+#: utils/adt/date.c:2338
 #, c-format
 msgid "invalid input syntax for type time with time zone: \"%s\""
 msgstr "sintaxe de entrada inv�lida para tipo hora com zona hor�ria: \"%s\""
 
-#: utils/adt/date.c:2436 utils/adt/date.c:2455
+#: utils/adt/date.c:2444 utils/adt/date.c:2463
 #, c-format
 msgid "\"time with time zone\" units \"%s\" not recognized"
 msgstr "unidades de \"time with time zone\" \"%s\" desconhecidas"
 
-#: utils/adt/date.c:2532
+#: utils/adt/date.c:2540
 #, c-format
 msgid "\"interval\" time zone \"%s\" not valid"
 msgstr "zona hor�ria de \"interval\" \"%s\" inv�lida"
 
-#: utils/adt/int8.c:117
+#: utils/adt/int8.c:118
 #, c-format
 msgid "value \"%s\" is out of range for type bigint"
 msgstr "valor \"%s\" est� fora do intervalo para tipo bigint"
 
-#: utils/adt/int8.c:1066
+#: utils/adt/int8.c:1095
 msgid "OID out of range"
 msgstr "OID fora do intervalo"
 
@@ -2444,7 +2267,7 @@ msgstr "n
 
 #: utils/adt/geo_ops.c:292 utils/adt/geo_ops.c:3953 utils/adt/geo_ops.c:4843
 msgid "too many points requested"
-msgstr "muitos pontos solicitados"
+msgstr "muitos pontos requisitados"
 
 #: utils/adt/geo_ops.c:315
 msgid "could not format \"path\" value"
@@ -2537,37 +2360,37 @@ msgstr "n
 
 #: utils/adt/geo_ops.c:4834
 msgid "must request at least 2 points"
-msgstr "deve informar pelo menos 2 pontos"
+msgstr "deve solicitar pelo menos 2 pontos"
 
 #: utils/adt/geo_ops.c:4878 utils/adt/geo_ops.c:4901
 msgid "cannot convert empty polygon to circle"
 msgstr "n�o pode converter pol�gono vazio para c�rculo"
 
-#: utils/adt/misc.c:81
+#: utils/adt/misc.c:82
 msgid "must be superuser to signal other server processes"
-msgstr "deve ser super-usu�rio para sinalizar outros processos servidor"
+msgstr "deve ser super-usu�rio para sinalizar outros processos do servidor"
 
-#: utils/adt/misc.c:90
+#: utils/adt/misc.c:91
 #, c-format
 msgid "PID %d is not a PostgreSQL server process"
 msgstr "PID %d n�o � um processo do servidor PostgreSQL"
 
-#: utils/adt/misc.c:98
+#: utils/adt/misc.c:99
 #, c-format
 msgid "could not send signal to process %d: %m"
 msgstr "n�o p�de enviar sinal para processo %d: %m"
 
-#: utils/adt/misc.c:156
+#: utils/adt/misc.c:152
 msgid "global tablespace never has databases"
 msgstr "tablespace global nunca tem bancos de dados"
 
-#: utils/adt/misc.c:174 access/transam/slru.c:930 commands/tablespace.c:525
-#: commands/tablespace.c:692 ../port/copydir.c:55
+#: utils/adt/misc.c:165 utils/init/checkfiles.c:47 access/transam/slru.c:930
+#: commands/tablespace.c:522 commands/tablespace.c:689 ../port/copydir.c:55
 #, c-format
 msgid "could not open directory \"%s\": %m"
 msgstr "n�o p�de abrir diret�rio \"%s\": %m"
 
-#: utils/adt/misc.c:177
+#: utils/adt/misc.c:168
 #, c-format
 msgid "%u is not a tablespace OID"
 msgstr "%u n�o � um OID de tablespace"
@@ -2612,13 +2435,13 @@ msgstr "valor de \"cidr\" externo 
 msgid "invalid mask length: %d"
 msgstr "tamanho de m�scara inv�lido: %d"
 
-#: utils/adt/selfuncs.c:3370 utils/adt/selfuncs.c:3775
+#: utils/adt/selfuncs.c:3408 utils/adt/selfuncs.c:3813
 msgid "case insensitive matching not supported on type bytea"
 msgstr ""
 "correspond�ncia n�o sens�vel a mai�sculas/min�sculas n�o � suportada pelo "
 "tipo bytea"
 
-#: utils/adt/selfuncs.c:3477 utils/adt/selfuncs.c:3936
+#: utils/adt/selfuncs.c:3515 utils/adt/selfuncs.c:3974
 msgid "regular-expression matching not supported on type bytea"
 msgstr "correspond�ncia de express�o regular n�o � suportada pelo tipo bytea"
 
@@ -2627,77 +2450,77 @@ msgstr "correspond
 msgid "encoding conversion from %s to ASCII not supported"
 msgstr "convers�o de condifica��o de %s para ASCII n�o � suportada"
 
-#: utils/adt/formatting.c:986
+#: utils/adt/formatting.c:988
 msgid "\"9\" must be ahead of \"PR\""
 msgstr "\"9\" deve estar a frente de \"PR\""
 
-#: utils/adt/formatting.c:1005
+#: utils/adt/formatting.c:1007
 msgid "\"0\" must be ahead of \"PR\""
 msgstr "\"0\" deve estar a frente de \"PR\""
 
-#: utils/adt/formatting.c:1034
+#: utils/adt/formatting.c:1036
 msgid "multiple decimal points"
 msgstr "m�ltiplos separadores decimais"
 
-#: utils/adt/formatting.c:1041 utils/adt/formatting.c:1146
+#: utils/adt/formatting.c:1043 utils/adt/formatting.c:1148
 msgid "cannot use \"V\" and decimal point together"
 msgstr "n�o pode utilizar \"V\" e separador decimal juntos"
 
-#: utils/adt/formatting.c:1056
+#: utils/adt/formatting.c:1058
 msgid "not unique \"S\""
 msgstr "\"S\" n�o � �nico"
 
-#: utils/adt/formatting.c:1063
+#: utils/adt/formatting.c:1065
 msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together"
 msgstr "n�o pode utilizar \"S\" e \"PL\"/\"MI\"/\"SG\"/\"PR\" juntos"
 
-#: utils/adt/formatting.c:1087
+#: utils/adt/formatting.c:1089
 msgid "cannot use \"S\" and \"MI\" together"
 msgstr "n�o pode utilizar \"S\" e \"MI\" juntos"
 
-#: utils/adt/formatting.c:1100
+#: utils/adt/formatting.c:1102
 msgid "cannot use \"S\" and \"PL\" together"
 msgstr "n�o pode utilizar \"S\" e \"PL\" juntos"
 
-#: utils/adt/formatting.c:1113
+#: utils/adt/formatting.c:1115
 msgid "cannot use \"S\" and \"SG\" together"
 msgstr "n�o pode utilizar \"S\" e \"SG\" juntos"
 
-#: utils/adt/formatting.c:1125
+#: utils/adt/formatting.c:1127
 msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together"
 msgstr "n�o pode utilizar \"PR\" e \"S\"/\"PL\"/\"MI\"/\"SG\" juntos"
 
-#: utils/adt/formatting.c:1155
+#: utils/adt/formatting.c:1157
 msgid "\"E\" is not supported"
 msgstr "\"E\" n�o � suportado"
 
-#: utils/adt/formatting.c:1426
+#: utils/adt/formatting.c:1428
 #, c-format
 msgid "\"%s\" is not a number"
 msgstr "\"%s\" n�o � um n�mero"
 
-#: utils/adt/formatting.c:1691
+#: utils/adt/formatting.c:1693
 msgid "invalid AM/PM string"
 msgstr "cadeia de caracteres AM/PM inv�lida"
 
-#: utils/adt/formatting.c:2037
+#: utils/adt/formatting.c:2039
 msgid "\"TZ\"/\"tz\" not supported"
 msgstr "\"TZ\"/\"tz\" n�o � suportado"
 
-#: utils/adt/formatting.c:2047
+#: utils/adt/formatting.c:2049
 #, c-format
 msgid "invalid value for %s"
 msgstr "valor inv�lido para %s"
 
-#: utils/adt/formatting.c:3144
+#: utils/adt/formatting.c:3163
 msgid "AM/PM hour must be between 1 and 12"
 msgstr "hora AM/PM deve estar entre 1 e 12"
 
-#: utils/adt/formatting.c:3218
+#: utils/adt/formatting.c:3253
 msgid "cannot calculate day of year without year information"
 msgstr "n�o pode calcular dia do ano sem a informa��o do ano"
 
-#: utils/adt/formatting.c:4084
+#: utils/adt/formatting.c:4119
 msgid "\"RN\" not supported"
 msgstr "\"RN\" n�o � suportado"
 
@@ -2749,16 +2572,16 @@ msgstr ""
 msgid "invalid array element type OID: %u"
 msgstr "OID do tipo de elemento da matriz � inv�lido: %u"
 
-#: utils/adt/array_userfuncs.c:358 utils/adt/arrayfuncs.c:1149
-#: utils/adt/arrayfuncs.c:2423
+#: utils/adt/array_userfuncs.c:358 utils/adt/arrayfuncs.c:1145
+#: utils/adt/arrayfuncs.c:2403
 #, c-format
 msgid "invalid number of dimensions: %d"
 msgstr "n�mero de dimens�es � inv�lido: %d"
 
 #: utils/adt/array_userfuncs.c:362 utils/adt/arrayfuncs.c:216
-#: utils/adt/arrayfuncs.c:472 utils/adt/arrayfuncs.c:1153
-#: utils/adt/arrayfuncs.c:2427 executor/execQual.c:260 executor/execQual.c:288
-#: executor/execQual.c:2138
+#: utils/adt/arrayfuncs.c:472 utils/adt/arrayfuncs.c:1149
+#: utils/adt/arrayfuncs.c:2407 executor/execQual.c:261 executor/execQual.c:289
+#: executor/execQual.c:2115
 #, c-format
 msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
 msgstr "n�mero de dimens�es da matriz (%d) excede o m�ximo permitido (%d)"
@@ -2803,79 +2626,79 @@ msgstr "faltando chave da esquerda"
 msgid "malformed array literal: \"%s\""
 msgstr "matriz mal formada: \"%s\""
 
-#: utils/adt/arrayfuncs.c:507 executor/execQual.c:2158
+#: utils/adt/arrayfuncs.c:507 executor/execQual.c:2135
 msgid ""
 "multidimensional arrays must have array expressions with matching dimensions"
 msgstr ""
 "matrizes multidimensionais devem ter express�es de matriz com dimens�es "
 "correspondentes"
 
-#: utils/adt/arrayfuncs.c:1160
+#: utils/adt/arrayfuncs.c:1156
 msgid "invalid array flags"
 msgstr "marca��es de matriz inv�lidas"
 
-#: utils/adt/arrayfuncs.c:1168
+#: utils/adt/arrayfuncs.c:1164
 msgid "wrong element type"
 msgstr "tipo de elemento incorreto"
 
-#: utils/adt/arrayfuncs.c:1211 utils/cache/lsyscache.c:1764
+#: utils/adt/arrayfuncs.c:1207 utils/cache/lsyscache.c:1760
 #, c-format
 msgid "no binary input function available for type %s"
 msgstr "nenhuma fun��o de entrada dispon�vel para tipo %s"
 
-#: utils/adt/arrayfuncs.c:1304
+#: utils/adt/arrayfuncs.c:1300
 #, c-format
 msgid "improper binary format in array element %d"
 msgstr "formato bin�rio inv�lido no elemento %d da matriz"
 
-#: utils/adt/arrayfuncs.c:1383 utils/cache/lsyscache.c:1800
+#: utils/adt/arrayfuncs.c:1378 utils/cache/lsyscache.c:1795
 #, c-format
 msgid "no binary output function available for type %s"
 msgstr "nenhuma fun��o de sa�da dispon�vel para tipo %s"
 
-#: utils/adt/arrayfuncs.c:1657
+#: utils/adt/arrayfuncs.c:1650
 msgid "slices of fixed-length arrays not implemented"
 msgstr "segmentos de matrizes de tamanho fixo n�o est� implementado"
 
-#: utils/adt/arrayfuncs.c:1795 utils/adt/arrayfuncs.c:1800
-#: utils/adt/arrayfuncs.c:1840 utils/adt/arrayfuncs.c:1862
-#: utils/adt/arrayfuncs.c:1874 utils/adt/arrayfuncs.c:2035
-#: utils/adt/arrayfuncs.c:2052 utils/adt/arrayfuncs.c:2063
-#: utils/adt/arrayfuncs.c:2072 utils/adt/arrayfuncs.c:2083
+#: utils/adt/arrayfuncs.c:1788 utils/adt/arrayfuncs.c:1793
+#: utils/adt/arrayfuncs.c:1833 utils/adt/arrayfuncs.c:1855
+#: utils/adt/arrayfuncs.c:1867 utils/adt/arrayfuncs.c:2028
+#: utils/adt/arrayfuncs.c:2045 utils/adt/arrayfuncs.c:2056
+#: utils/adt/arrayfuncs.c:2065 utils/adt/arrayfuncs.c:2076
 msgid "invalid array subscripts"
 msgstr "�ndices da matriz inv�lidos"
 
-#: utils/adt/arrayfuncs.c:1991
+#: utils/adt/arrayfuncs.c:1984
 msgid "updates on slices of fixed-length arrays not implemented"
 msgstr ""
 "atualiza��o em segmentos de matrizes de tamanho fixo n�o est� implementada"
 
-#: utils/adt/arrayfuncs.c:2026 utils/adt/arrayfuncs.c:2095
+#: utils/adt/arrayfuncs.c:2019 utils/adt/arrayfuncs.c:2088
 msgid "source array too small"
 msgstr "matriz de origem muito pequena"
 
-#: utils/adt/arrayfuncs.c:2325 utils/adt/arrayfuncs.c:3322
+#: utils/adt/arrayfuncs.c:2305 utils/adt/arrayfuncs.c:3306
 msgid "null array elements not supported"
 msgstr "elementos nulos na matriz n�o s�o suportados"
 
-#: utils/adt/arrayfuncs.c:2560 utils/adt/arrayfuncs.c:2715
+#: utils/adt/arrayfuncs.c:2540 utils/adt/arrayfuncs.c:2694
 msgid "cannot compare arrays of different element types"
 msgstr "n�o pode comparar matrizes de tipos de elementos diferentes"
 
-#: utils/adt/arrayfuncs.c:2732
+#: utils/adt/arrayfuncs.c:2711
 #, c-format
 msgid "could not identify a comparison function for type %s"
 msgstr "n�o p�de identificar uma fun��o de compara��o para tipo %s"
 
-#: utils/adt/arrayfuncs.c:3131
+#: utils/adt/arrayfuncs.c:3109
 msgid "could not determine target array type"
 msgstr "n�o p�de determinar tipo da matriz alvo"
 
-#: utils/adt/arrayfuncs.c:3137
+#: utils/adt/arrayfuncs.c:3115
 msgid "target type is not an array"
 msgstr "tipo alvo n�o � uma matriz"
 
-#: utils/adt/arrayfuncs.c:3149
+#: utils/adt/arrayfuncs.c:3127
 msgid "array coercion to domain type elements not currently supported"
 msgstr "convers�o de matrizes para elementos do tipo dom�nio n�o � suportada"
 
@@ -2915,47 +2738,47 @@ msgstr "n
 msgid "cannot XOR bit strings of different sizes"
 msgstr "n�o pode executar XOR em cadeias de bits de tamanhos diferentes"
 
-#: utils/adt/rowtypes.c:78 utils/adt/rowtypes.c:442
+#: utils/adt/rowtypes.c:79 utils/adt/rowtypes.c:441
 msgid "input of anonymous composite types is not implemented"
 msgstr "entrada de tipos compostos an�nimos n�o est� implementada"
 
-#: utils/adt/rowtypes.c:125 utils/adt/rowtypes.c:152 utils/adt/rowtypes.c:176
-#: utils/adt/rowtypes.c:184 utils/adt/rowtypes.c:234 utils/adt/rowtypes.c:242
+#: utils/adt/rowtypes.c:126 utils/adt/rowtypes.c:153 utils/adt/rowtypes.c:177
+#: utils/adt/rowtypes.c:185 utils/adt/rowtypes.c:235 utils/adt/rowtypes.c:243
 #, c-format
 msgid "malformed record literal: \"%s\""
-msgstr "matriz mal formada: \"%s\""
+msgstr "registro mal formado: \"%s\""
 
-#: utils/adt/rowtypes.c:126
+#: utils/adt/rowtypes.c:127
 msgid "Missing left parenthesis."
 msgstr "Faltando par�ntese esquerdo."
 
-#: utils/adt/rowtypes.c:153
+#: utils/adt/rowtypes.c:154
 msgid "Too few columns."
 msgstr "Poucas colunas."
 
-#: utils/adt/rowtypes.c:178 utils/adt/rowtypes.c:186
+#: utils/adt/rowtypes.c:179 utils/adt/rowtypes.c:187
 msgid "Unexpected end of input."
 msgstr "Fim da entrada inesperado."
 
-#: utils/adt/rowtypes.c:235
+#: utils/adt/rowtypes.c:236
 msgid "Too many columns."
 msgstr "Muitas colunas."
 
-#: utils/adt/rowtypes.c:243
+#: utils/adt/rowtypes.c:244
 msgid "Junk after right parenthesis."
 msgstr "Lixo ap�s par�ntese direito."
 
-#: utils/adt/rowtypes.c:491
+#: utils/adt/rowtypes.c:490
 #, c-format
 msgid "wrong number of columns: %d, expected %d"
 msgstr "n�mero de colunas incorreto: %d, esperado %d"
 
-#: utils/adt/rowtypes.c:515
+#: utils/adt/rowtypes.c:514
 #, c-format
 msgid "wrong data type: %u, expected %u"
 msgstr "tipo de dado incorreto: %u, esperado %u"
 
-#: utils/adt/rowtypes.c:574
+#: utils/adt/rowtypes.c:573
 #, c-format
 msgid "improper binary format in record column %d"
 msgstr "formato bin�rio inv�lido na coluna record %d"
@@ -2970,56 +2793,52 @@ msgstr "express
 msgid "invalid regular expression: %s"
 msgstr "express�o regular inv�lida: %s"
 
-#: utils/adt/regproc.c:122 utils/adt/regproc.c:142
+#: utils/adt/regproc.c:121 utils/adt/regproc.c:141
 #, c-format
 msgid "more than one function named \"%s\""
 msgstr "mais de uma fun��o com nome \"%s\""
 
-#: utils/adt/regproc.c:467 utils/adt/regproc.c:487 utils/adt/regproc.c:665
+#: utils/adt/regproc.c:466 utils/adt/regproc.c:486 utils/adt/regproc.c:664
 #: parser/parse_oper.c:84 parser/parse_oper.c:785
 #, c-format
 msgid "operator does not exist: %s"
 msgstr "operador n�o existe: %s"
 
-#: utils/adt/regproc.c:471 utils/adt/regproc.c:491
+#: utils/adt/regproc.c:470 utils/adt/regproc.c:490
 #, c-format
 msgid "more than one operator named %s"
 msgstr "mais de um operador com nome %s"
 
-#: utils/adt/regproc.c:639 gram.y:3491
+#: utils/adt/regproc.c:638 gram.y:3574
 msgid "missing argument"
 msgstr "faltando argumento"
 
-#: utils/adt/regproc.c:640 gram.y:3492
+#: utils/adt/regproc.c:639 gram.y:3575
 msgid "Use NONE to denote the missing argument of a unary operator."
 msgstr "Utilize NONE para denotar argumento em falta de um operador un�rio."
 
-#: utils/adt/regproc.c:644 utils/adt/regproc.c:1276
-msgid "too many arguments"
-msgstr "muitos argumentos"
-
-#: utils/adt/regproc.c:645
+#: utils/adt/regproc.c:644
 msgid "Provide two argument types for operator."
 msgstr "Forne�a dois tipos de argumento para operador."
 
-#: utils/adt/regproc.c:837 catalog/namespace.c:200
+#: utils/adt/regproc.c:836 catalog/namespace.c:199
 #, c-format
 msgid "relation \"%s\" does not exist"
 msgstr "rela��o \"%s\" n�o existe"
 
-#: utils/adt/regproc.c:1174
+#: utils/adt/regproc.c:1173
 msgid "expected a left parenthesis"
 msgstr "par�ntese esquerdo esperado"
 
-#: utils/adt/regproc.c:1190
+#: utils/adt/regproc.c:1189
 msgid "expected a right parenthesis"
 msgstr "par�ntese direito esperado"
 
-#: utils/adt/regproc.c:1209
+#: utils/adt/regproc.c:1208
 msgid "expected a type name"
 msgstr "nome de tipo esperado"
 
-#: utils/adt/regproc.c:1241
+#: utils/adt/regproc.c:1240
 msgid "improper type name"
 msgstr "nome de tipo inv�lido"
 
@@ -3060,103 +2879,131 @@ msgstr "fun
 #: utils/fmgr/fmgr.c:448
 #, c-format
 msgid "unrecognized API version %d reported by info function \"%s\""
-msgstr "vers�o %d de API desconhecida reportada pela fun��o \"%s\""
+msgstr "vers�o %d de API desconhecida relatada pela fun��o \"%s\""
 
-#: utils/fmgr/fmgr.c:759 utils/fmgr/fmgr.c:1634
+#: utils/fmgr/fmgr.c:759 utils/fmgr/fmgr.c:1726
 #, c-format
 msgid "function %u has too many arguments (%d, maximum is %d)"
 msgstr "fun��o %u tem muitos argumentos (%d, m�ximo � %d)"
 
-#: utils/fmgr/funcapi.c:39 executor/execQual.c:870 executor/execQual.c:914
-#: executor/execQual.c:1090 executor/execQual.c:1215 executor/execQual.c:3580
-#: executor/functions.c:666 executor/functions.c:705
+#: utils/fmgr/funcapi.c:59 executor/execQual.c:855 executor/execQual.c:899
+#: executor/execQual.c:1072 executor/execQual.c:1197 executor/execQual.c:3533
+#: executor/functions.c:672 executor/functions.c:711
 msgid "set-valued function called in context that cannot accept a set"
 msgstr ""
 "fun��o que tem argumento do tipo conjunto foi chamada em um contexto que n�o "
 "pode aceitar um conjunto"
 
-#: utils/init/miscinit.c:335 utils/cache/lsyscache.c:2044
-#: commands/variable.c:664 commands/user.c:899 commands/user.c:1012
-#: commands/user.c:1104 commands/user.c:1233
+#: utils/fmgr/funcapi.c:349
+#, c-format
+msgid ""
+"could not determine actual result type for function \"%s\" declared to "
+"return type %s"
+msgstr ""
+"n�o p�de determinar tipo de resultado para fun��o \"%s\" declarada que "
+"retorna tipo %s"
+
+#: utils/fmgr/funcapi.c:849 utils/fmgr/funcapi.c:880
+msgid "number of aliases does not match number of columns"
+msgstr "n�mero de aliases n�o corresponde ao n�mero de colunas"
+
+#: utils/fmgr/funcapi.c:874
+msgid "no column alias was provided"
+msgstr "nenhum alias de coluna foi fornecido"
+
+#: utils/fmgr/funcapi.c:898
+msgid "could not determine row description for function returning record"
+msgstr ""
+"n�o p�de determinar descri��o de registro para fun��o que retorna record"
+
+#: utils/init/checkfiles.c:196
+#, c-format
+msgid "table or index file \"%s\" is stale and can safely be removed"
+msgstr ""
+"arquivo de tabela ou �ndice \"%s\" est� velho e pode ser removido seguramente"
+
+#: utils/init/miscinit.c:334 utils/cache/lsyscache.c:2038
+#: commands/variable.c:610 commands/user.c:412 commands/user.c:525
+#: commands/user.c:616 commands/user.c:745
 #, c-format
 msgid "user \"%s\" does not exist"
 msgstr "usu�rio \"%s\" n�o existe"
 
-#: utils/init/miscinit.c:403
+#: utils/init/miscinit.c:402
 msgid "permission denied to set session authorization"
-msgstr "permiss�o negada ao autorizar sess�o"
+msgstr "permiss�o negada ao definir autoriza��o da sess�o"
 
-#: utils/init/miscinit.c:429
+#: utils/init/miscinit.c:428
 #, c-format
 msgid "invalid user ID: %d"
 msgstr "ID de usu�rio inv�lido: %d"
 
-#: utils/init/miscinit.c:519
+#: utils/init/miscinit.c:521
 #, c-format
 msgid "could not create lock file \"%s\": %m"
 msgstr "n�o p�de criar arquivo de bloqueio \"%s\": %m"
 
-#: utils/init/miscinit.c:533
+#: utils/init/miscinit.c:535
 #, c-format
 msgid "could not open lock file \"%s\": %m"
 msgstr "n�o p�de abrir arquivo de bloqueio \"%s\": %m"
 
-#: utils/init/miscinit.c:539
+#: utils/init/miscinit.c:541
 #, c-format
 msgid "could not read lock file \"%s\": %m"
 msgstr "n�o p�de ler arquivo de bloqueio \"%s\": %m"
 
-#: utils/init/miscinit.c:589
+#: utils/init/miscinit.c:606
 #, c-format
 msgid "lock file \"%s\" already exists"
 msgstr "arquivo de bloqueio \"%s\" j� existe"
 
-#: utils/init/miscinit.c:593
+#: utils/init/miscinit.c:610
 #, c-format
 msgid "Is another postgres (PID %d) running in data directory \"%s\"?"
 msgstr ""
 "Outro postgres (PID %d) est� executando sob o diret�rio de dados \"%s\"?"
 
-#: utils/init/miscinit.c:595
+#: utils/init/miscinit.c:612
 #, c-format
 msgid "Is another postmaster (PID %d) running in data directory \"%s\"?"
 msgstr ""
 "Outro postmaster (PID %d) est� executando sob o diret�rio de dados \"%s\"?"
 
-#: utils/init/miscinit.c:598
+#: utils/init/miscinit.c:615
 #, c-format
 msgid "Is another postgres (PID %d) using socket file \"%s\"?"
 msgstr "Outro postgres (PID %d) est� utilizando arquivo de soquete \"%s\"?"
 
-#: utils/init/miscinit.c:600
+#: utils/init/miscinit.c:617
 #, c-format
 msgid "Is another postmaster (PID %d) using socket file \"%s\"?"
 msgstr "Outro postmaster (PID %d) est� utilizando arquivo de soquete \"%s\"?"
 
-#: utils/init/miscinit.c:628
+#: utils/init/miscinit.c:645
 #, c-format
 msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use"
 msgstr ""
 "bloco de mem�ria compartilhada existente (chave %lu, ID %lu) ainda est� em "
 "uso"
 
-#: utils/init/miscinit.c:631
+#: utils/init/miscinit.c:648
 #, c-format
 msgid ""
 "If you're sure there are no old server processes still running, remove the "
 "shared memory block with the command \"ipcrm\", or just delete the file \"%s"
 "\"."
 msgstr ""
-"Se voc� tem certeza que n�o h� processos servidor antigos sendo executados, "
-"remova o bloco de mem�ria compartilhada com o comando \"ipcrm\", ou apague o "
-"arquivo \"%s\"."
+"Se voc� tem certeza que n�o h� processos do servidor antigos sendo "
+"executados, remova o bloco de mem�ria compartilhada com o comando \"ipcrm\", "
+"ou apague o arquivo \"%s\"."
 
-#: utils/init/miscinit.c:648
+#: utils/init/miscinit.c:665
 #, c-format
 msgid "could not remove old lock file \"%s\": %m"
 msgstr "n�o p�de remover arquivo de bloqueio antigo \"%s\": %m"
 
-#: utils/init/miscinit.c:650
+#: utils/init/miscinit.c:667
 msgid ""
 "The file seems accidentally left over, but it could not be removed. Please "
 "remove the file by hand and try again."
@@ -3164,54 +3011,54 @@ msgstr ""
 "O arquivo parece ter sido deixado acidentalmente, mas ele n�o p�de ser "
 "removido. Por favor remova o arquivo manualmente e tente novamente."
 
-#: utils/init/miscinit.c:672 utils/init/miscinit.c:682
+#: utils/init/miscinit.c:689 utils/init/miscinit.c:699
 #, c-format
 msgid "could not write lock file \"%s\": %m"
 msgstr "n�o p�de escrever no arquivo de bloqueio \"%s\": %m"
 
-#: utils/init/miscinit.c:792 utils/misc/guc.c:4939
+#: utils/init/miscinit.c:809 utils/misc/guc.c:4972
 #, c-format
 msgid "could not read from file \"%s\": %m"
 msgstr "n�o p�de ler do arquivo \"%s\": %m"
 
-#: utils/init/miscinit.c:832 utils/init/miscinit.c:841 utils/misc/guc.c:4799
-#: utils/misc/guc.c:4863 access/transam/xlog.c:1573 access/transam/xlog.c:1697
-#: access/transam/xlog.c:2992 access/transam/xlog.c:3030
-#: commands/tablespace.c:664 commands/tablespace.c:670 commands/copy.c:1118
-#: postmaster/postmaster.c:2916 postmaster/postmaster.c:2926
+#: utils/init/miscinit.c:849 utils/init/miscinit.c:858 utils/misc/guc.c:4832
+#: utils/misc/guc.c:4896 access/transam/xlog.c:1595 access/transam/xlog.c:1722
+#: access/transam/xlog.c:3031 access/transam/xlog.c:3069
+#: commands/tablespace.c:661 commands/tablespace.c:667 commands/copy.c:1106
+#: postmaster/postmaster.c:2887 postmaster/postmaster.c:2897
 #, c-format
 msgid "could not write to file \"%s\": %m"
 msgstr "n�o p�de escrever no arquivo \"%s\": %m"
 
-#: utils/init/miscinit.c:883 utils/init/miscinit.c:896
+#: utils/init/miscinit.c:900 utils/init/miscinit.c:913
 #, c-format
 msgid "\"%s\" is not a valid data directory"
 msgstr "\"%s\" n�o � um diret�rio de dados v�lido"
 
-#: utils/init/miscinit.c:885
+#: utils/init/miscinit.c:902
 #, c-format
 msgid "File \"%s\" is missing."
 msgstr "Arquivo \"%s\" n�o foi encontrado."
 
-#: utils/init/miscinit.c:898
+#: utils/init/miscinit.c:915
 #, c-format
 msgid "File \"%s\" does not contain valid data."
 msgstr "Arquivo \"%s\" n�o cont�m dados v�lidos."
 
-#: utils/init/miscinit.c:900
+#: utils/init/miscinit.c:917
 msgid "You may need to initdb."
 msgstr "Voc� precisa executar o initdb."
 
-#: utils/init/miscinit.c:907 access/transam/xlog.c:3216
-#: access/transam/xlog.c:3246 access/transam/xlog.c:3253
-#: access/transam/xlog.c:3260 access/transam/xlog.c:3267
-#: access/transam/xlog.c:3274 access/transam/xlog.c:3281
-#: access/transam/xlog.c:3290 access/transam/xlog.c:3297
-#: access/transam/xlog.c:3305
+#: utils/init/miscinit.c:924 access/transam/xlog.c:3255
+#: access/transam/xlog.c:3285 access/transam/xlog.c:3292
+#: access/transam/xlog.c:3299 access/transam/xlog.c:3306
+#: access/transam/xlog.c:3313 access/transam/xlog.c:3320
+#: access/transam/xlog.c:3329 access/transam/xlog.c:3336
+#: access/transam/xlog.c:3344
 msgid "database files are incompatible with server"
 msgstr "arquivos do banco de dados s�o incompat�veis com o servidor"
 
-#: utils/init/miscinit.c:908
+#: utils/init/miscinit.c:925
 #, c-format
 msgid ""
 "The data directory was initialized by PostgreSQL version %ld.%ld, which is "
@@ -3220,50 +3067,85 @@ msgstr ""
 "O diret�rio de dados foi inicializado pelo PostgreSQL vers�o %ld.%ld, que "
 "n�o � compat�vel com essa vers�o %s."
 
-#: utils/init/miscinit.c:945
+#: utils/init/miscinit.c:962
 msgid "invalid list syntax for parameter \"preload_libraries\""
 msgstr "sintaxe de lista inv�lida para par�metro \"preload_libraries\""
 
-#: utils/init/miscinit.c:991
+#: utils/init/miscinit.c:1008
 #, c-format
 msgid "preloaded library \"%s\" with initialization function \"%s\""
 msgstr "biblioteca pr�-carregada \"%s\" com fun��o de inicializa��o \"%s\""
 
-#: utils/init/miscinit.c:995
+#: utils/init/miscinit.c:1012
 #, c-format
 msgid "preloaded library \"%s\""
 msgstr "biblioteca pr�-carregada \"%s\""
 
-#: utils/init/postinit.c:119
+#: utils/init/flatfiles.c:233 utils/init/flatfiles.c:293
+#: utils/init/flatfiles.c:347 utils/init/flatfiles.c:439
+#: utils/init/flatfiles.c:487 utils/init/flatfiles.c:592
+#, c-format
+msgid "could not write to temporary file \"%s\": %m"
+msgstr "n�o p�de escrever no arquivo tempor�rio \"%s\": %m"
+
+#: utils/init/flatfiles.c:275
+#, c-format
+msgid "invalid database name \"%s\""
+msgstr "nome de banco de dados \"%s\" � inv�lido"
+
+#: utils/init/flatfiles.c:303 utils/init/flatfiles.c:449
+#: utils/init/flatfiles.c:602 access/transam/xlog.c:3104
+#: access/transam/xlog.c:3889 access/transam/xlog.c:3932
+#: postmaster/pgarch.c:581
+#, c-format
+msgid "could not rename file \"%s\" to \"%s\": %m"
+msgstr "n�o p�de renomear arquivo \"%s\" para \"%s\": %m"
+
+#: utils/init/flatfiles.c:376
+#, c-format
+msgid "invalid group name \"%s\""
+msgstr "nome de grupo \"%s\" � inv�lido"
+
+#: utils/init/flatfiles.c:564
+#, c-format
+msgid "invalid user name \"%s\""
+msgstr "nome do usu�rio \"%s\" � inv�lido"
+
+#: utils/init/flatfiles.c:570
+#, c-format
+msgid "invalid user password \"%s\""
+msgstr "senha de usu�rio \"%s\" � inv�lida"
+
+#: utils/init/postinit.c:162
 #, c-format
 msgid "database \"%s\", OID %u, has disappeared from pg_database"
 msgstr "banco de dados \"%s\", OID %u, desapareceu de pg_database"
 
-#: utils/init/postinit.c:130
+#: utils/init/postinit.c:175
 #, c-format
 msgid "database \"%s\" is not currently accepting connections"
 msgstr "banco de dados \"%s\" n�o est� aceitando conex�es"
 
-#: utils/init/postinit.c:285
+#: utils/init/postinit.c:327
 #, c-format
 msgid "The database subdirectory \"%s\" is missing."
 msgstr "O subdiret�rio do banco de dados \"%s\" n�o foi encontrado."
 
-#: utils/init/postinit.c:290
+#: utils/init/postinit.c:332
 #, c-format
 msgid "could not access directory \"%s\": %m"
 msgstr "n�o p�de acessar diret�rio \"%s\": %m"
 
-#: utils/init/postinit.c:299
+#: utils/init/postinit.c:341
 #, c-format
 msgid "could not change directory to \"%s\": %m"
 msgstr "n�o p�de mudar diret�rio para \"%s\": %m"
 
-#: utils/init/postinit.c:382
+#: utils/init/postinit.c:419
 msgid "no users are defined in this database system"
 msgstr "nenhum usu�rio est� definido nesse sistema de banco de dados"
 
-#: utils/init/postinit.c:383
+#: utils/init/postinit.c:420
 #, c-format
 msgid ""
 "You should immediately run CREATE USER \"%s\" WITH SYSID %d CREATEUSER;."
@@ -3271,232 +3153,234 @@ msgstr ""
 "Voc� deve executar CREATE USER \"%s\" WITH SYSID %d CREATEUSER; "
 "imediatamente."
 
-#: utils/init/postinit.c:423
+#: utils/init/postinit.c:460
 msgid "connection limit exceeded for non-superusers"
 msgstr "limite de conex�o excedeu para n�o-super-usu�rios"
 
-#: guc-file.l:271
+#: guc-file.l:272
 #, c-format
 msgid "syntax error in file \"%s\" line %u, near end of line"
 msgstr "erro de sintaxe no arquivo \"%s\" linha %u, pr�ximo ao fim da linha"
 
-#: guc-file.l:276
+#: guc-file.l:277
 #, c-format
 msgid "syntax error in file \"%s\" line %u, near token \"%s\""
 msgstr "erro de sintaxe no arquivo \"%s\" linha %u, pr�ximo a express�o \"%s\""
 
-#: utils/misc/guc.c:234
+#: utils/misc/guc.c:235
 msgid "Ungrouped"
 msgstr "Desagrupado"
 
-#: utils/misc/guc.c:236
+#: utils/misc/guc.c:237
 msgid "File Locations"
 msgstr "Locais de Arquivos"
 
-#: utils/misc/guc.c:238
+#: utils/misc/guc.c:239
 msgid "Connections and Authentication"
 msgstr "Conex�es e Autentica��o"
 
-#: utils/misc/guc.c:240
+#: utils/misc/guc.c:241
 msgid "Connections and Authentication / Connection Settings"
 msgstr "Conex�es e Autentica��o / Configura��es sobre Conex�o"
 
-#: utils/misc/guc.c:242
+#: utils/misc/guc.c:243
 msgid "Connections and Authentication / Security and Authentication"
 msgstr "Conex�es e Autentica��o / Seguran�a e Autentica��o"
 
-#: utils/misc/guc.c:244
+#: utils/misc/guc.c:245
 msgid "Resource Usage"
 msgstr "Uso de Recursos"
 
-#: utils/misc/guc.c:246
+#: utils/misc/guc.c:247
 msgid "Resource Usage / Memory"
 msgstr "Uso de Recursos / Mem�ria"
 
-#: utils/misc/guc.c:248
+#: utils/misc/guc.c:249
 msgid "Resource Usage / Free Space Map"
 msgstr "Uso de Recursos / Mapeamento de Espa�o Livre"
 
-#: utils/misc/guc.c:250
+#: utils/misc/guc.c:251
 msgid "Resource Usage / Kernel Resources"
 msgstr "Uso de Recursos / Recursos do Kernel"
 
-#: utils/misc/guc.c:252
+#: utils/misc/guc.c:253
 msgid "Write-Ahead Log"
 msgstr "Log de Escrita Pr�via"
 
-#: utils/misc/guc.c:254
+#: utils/misc/guc.c:255
 msgid "Write-Ahead Log / Settings"
 msgstr "Log de Escrita Pr�via / Configura��es"
 
-#: utils/misc/guc.c:256
+#: utils/misc/guc.c:257
 msgid "Write-Ahead Log / Checkpoints"
 msgstr "Log de Escrita Pr�via / Pontos de Controle"
 
-#: utils/misc/guc.c:258
+#: utils/misc/guc.c:259
 msgid "Query Tuning"
 msgstr "Ajuste de Consultas"
 
-#: utils/misc/guc.c:260
+#: utils/misc/guc.c:261
 msgid "Query Tuning / Planner Method Configuration"
 msgstr "Ajuste de Consultas / Configura��o dos M�todos do Planejador"
 
-#: utils/misc/guc.c:262
+#: utils/misc/guc.c:263
 msgid "Query Tuning / Planner Cost Constants"
 msgstr "Ajuste de Consultas / Constantes de Custo do Planejador"
 
-#: utils/misc/guc.c:264
+#: utils/misc/guc.c:265
 msgid "Query Tuning / Genetic Query Optimizer"
 msgstr "Ajuste de Consultas / Otimizador de Consultas Gen�ticas"
 
-#: utils/misc/guc.c:266
+#: utils/misc/guc.c:267
 msgid "Query Tuning / Other Planner Options"
 msgstr "Ajuste de Consultas / Outras Op��es do Planejador"
 
-#: utils/misc/guc.c:268
+#: utils/misc/guc.c:269
 msgid "Reporting and Logging"
 msgstr "Relat�rio e Registro"
 
-#: utils/misc/guc.c:270
+#: utils/misc/guc.c:271
 msgid "Reporting and Logging / Where to Log"
 msgstr "Relat�rio e Registro / Onde Registrar"
 
-#: utils/misc/guc.c:272
+#: utils/misc/guc.c:273
 msgid "Reporting and Logging / When to Log"
 msgstr "Relat�rio e Registro / Quando Registrar"
 
-#: utils/misc/guc.c:274
+#: utils/misc/guc.c:275
 msgid "Reporting and Logging / What to Log"
 msgstr "Relat�rio e Registro / O que Registrar"
 
-#: utils/misc/guc.c:276
+#: utils/misc/guc.c:277
 msgid "Statistics"
 msgstr "Estat�sticas"
 
-#: utils/misc/guc.c:278
+#: utils/misc/guc.c:279
 msgid "Statistics / Monitoring"
 msgstr "Estat�sticas / Monitoramento"
 
-#: utils/misc/guc.c:280
+#: utils/misc/guc.c:281
 msgid "Statistics / Query and Index Statistics Collector"
 msgstr "Estat�sticas / Coletor de Estat�sticas de Consultas e �ndices"
 
-#: utils/misc/guc.c:282
+#: utils/misc/guc.c:283
 msgid "Client Connection Defaults"
 msgstr "Valores Padr�o de Conex�o"
 
-#: utils/misc/guc.c:284
+#: utils/misc/guc.c:285
 msgid "Client Connection Defaults / Statement Behavior"
 msgstr "Valores Padr�o de Conex�o / Comportamento do Comando"
 
-#: utils/misc/guc.c:286
+#: utils/misc/guc.c:287
 msgid "Client Connection Defaults / Locale and Formatting"
 msgstr "Valores Padr�o de Conex�o / Localidade e Formata��o"
 
-#: utils/misc/guc.c:288
+#: utils/misc/guc.c:289
 msgid "Client Connection Defaults / Other Defaults"
-msgstr "Valores Padr�o de Conex�o / Outros Valores"
+msgstr "Valores Padr�o de Conex�o / Outros Valores Padr�o"
 
-#: utils/misc/guc.c:290
+#: utils/misc/guc.c:291
 msgid "Lock Management"
 msgstr "Ger�ncia de Bloqueio"
 
-#: utils/misc/guc.c:292
+#: utils/misc/guc.c:293
 msgid "Version and Platform Compatibility"
 msgstr "Compatibilidade de Vers�o e Plataforma"
 
-#: utils/misc/guc.c:294
+#: utils/misc/guc.c:295
 msgid "Version and Platform Compatibility / Previous PostgreSQL Versions"
 msgstr ""
 "Compatibilidade de Vers�o e Plataforma / Vers�es Anteriores do PostgreSQL"
 
-#: utils/misc/guc.c:296
+#: utils/misc/guc.c:297
 msgid "Version and Platform Compatibility / Other Platforms and Clients"
 msgstr "Compatibilidade de Vers�o e Plataforma / Outras Plataformas e Clientes"
 
-#: utils/misc/guc.c:298
+#: utils/misc/guc.c:299
 msgid "Preset Options"
 msgstr "Op��es Pr�-Definidas"
 
-#: utils/misc/guc.c:300
+#: utils/misc/guc.c:301
 msgid "Customized Options"
 msgstr "Op��es Customizadas"
 
-#: utils/misc/guc.c:302
+#: utils/misc/guc.c:303
 msgid "Developer Options"
 msgstr "Op��es para Desenvolvedores"
 
-#: utils/misc/guc.c:357
+#: utils/misc/guc.c:358
 msgid "Enables the planner's use of sequential-scan plans."
-msgstr "Habilita o uso de planejamentos de busca sequencial pelo planejador."
+msgstr "Habilita o uso de planos de busca sequencial pelo planejador."
 
-#: utils/misc/guc.c:365
+#: utils/misc/guc.c:366
 msgid "Enables the planner's use of index-scan plans."
-msgstr "Habilita o uso de planejamentos de buscas por �ndices pelo planejador."
+msgstr "Habilita o uso de planos de buscas indexadas pelo planejador."
 
-#: utils/misc/guc.c:373
+#: utils/misc/guc.c:374
+msgid "Enables the planner's use of bitmap-scan plans."
+msgstr "Habilita o uso de planos de buscas por bitmap pelo planejador."
+
+#: utils/misc/guc.c:382
 msgid "Enables the planner's use of TID scan plans."
-msgstr "Habilita o uso de planejamentos de buscas por TID pelo planejador."
+msgstr "Habilita o uso de planos de busca por TID pelo planejador."
 
-#: utils/misc/guc.c:381
+#: utils/misc/guc.c:390
 msgid "Enables the planner's use of explicit sort steps."
 msgstr "Habilita o uso de passos para ordena��o expl�cita pelo planejador."
 
-#: utils/misc/guc.c:389
+#: utils/misc/guc.c:398
 msgid "Enables the planner's use of hashed aggregation plans."
-msgstr ""
-"Habilita o uso de planejamentos de agrega��o do tipo hash pelo planejador."
+msgstr "Habilita o uso de planos de agrega��o do tipo hash pelo planejador."
 
-#: utils/misc/guc.c:397
+#: utils/misc/guc.c:406
 msgid "Enables the planner's use of nested-loop join plans."
-msgstr ""
-"Habilita o uso de planejamentos de jun��o de la�o aninhado do planejador."
+msgstr "Habilita o uso de planos de jun��o de la�o aninhado do planejador."
 
-#: utils/misc/guc.c:405
+#: utils/misc/guc.c:414
 msgid "Enables the planner's use of merge join plans."
-msgstr "Habilita o uso de planejamentos de jun��o por mesclagem do planejador."
+msgstr "Habilita o uso de planos de jun��o por mesclagem do planejador."
 
-#: utils/misc/guc.c:413
+#: utils/misc/guc.c:422
 msgid "Enables the planner's use of hash join plans."
-msgstr "Habilita o uso de planejamento de jun��o hash do planejador."
+msgstr "Habilita o uso de planos de jun��o hash do planejador."
 
-#: utils/misc/guc.c:421
+#: utils/misc/guc.c:430
 msgid "Enables genetic query optimization."
 msgstr "Habilita a otimiza��o de consultas gen�ticas."
 
-#: utils/misc/guc.c:422
+#: utils/misc/guc.c:431
 msgid "This algorithm attempts to do planning without exhaustive searching."
 msgstr "Esse algoritmo tenta fazer o planejamento sem busca exaustiva."
 
-#: utils/misc/guc.c:431
+#: utils/misc/guc.c:440
 msgid "Shows whether the current user is a superuser."
 msgstr "Mostra se o usu�rio atual � um super-usu�rio."
 
-#: utils/misc/guc.c:440
+#: utils/misc/guc.c:449
 msgid "Enables SSL connections."
 msgstr "Habilita conex�es SSL."
 
-#: utils/misc/guc.c:448
+#: utils/misc/guc.c:457
 msgid "Forces synchronization of updates to disk."
 msgstr "For�a sincroniza��o de atualiza��es com o disco."
 
-#: utils/misc/guc.c:449
+#: utils/misc/guc.c:458
 msgid ""
 "The server will use the fsync() system call in several places to make sure "
 "that updates are physically written to disk. This insures that a database "
 "cluster will recover to a consistent state after an operating system or "
 "hardware crash."
 msgstr ""
-"O servidor utilizar� a chamada do sistema fsync() em v�rios lugares para ter "
+"O servidor utilizar� a chamada de sistema fsync() em v�rios lugares para ter "
 "certeza que as atualiza��es est�o gravadas fisicamente no disco. Isso "
 "assegura que o agrupamento de bancos de dados recuperar� ao seu estado "
 "consistente ap�s uma falha do sistema operacional ou de hardware."
 
-#: utils/misc/guc.c:459
+#: utils/misc/guc.c:468
 msgid "Continues processing past damaged page headers."
 msgstr "Continua processando cabe�alhos antigos de p�ginas danificadas."
 
-#: utils/misc/guc.c:460
+#: utils/misc/guc.c:469
 msgid ""
 "Detection of a damaged page header normally causes PostgreSQL to report an "
 "error, aborting the current transaction. Setting zero_damaged_pages to true "
@@ -3511,11 +3395,11 @@ msgstr ""
 "processamento. Esse comportamento destr�i dados, especificadamente todos os "
 "registros da p�gina danificada."
 
-#: utils/misc/guc.c:472
+#: utils/misc/guc.c:481
 msgid "Runs the server silently."
 msgstr "Executa o servidor silenciosamente."
 
-#: utils/misc/guc.c:473
+#: utils/misc/guc.c:482
 msgid ""
 "If this parameter is set, the server will automatically run in the "
 "background and any controlling terminals are dissociated."
@@ -3523,81 +3407,81 @@ msgstr ""
 "Se esse par�metro est� definido, o servidor executar� automaticamente em "
 "segundo plano e qualquer terminal de controle � dissociado."
 
-#: utils/misc/guc.c:481
+#: utils/misc/guc.c:490
 msgid "Logs each successful connection."
 msgstr "Registra cada conex�o bem sucedida."
 
-#: utils/misc/guc.c:489
+#: utils/misc/guc.c:498
 msgid "Logs end of a session, including duration."
 msgstr "Registra o fim da sess�o, incluindo a dura��o."
 
-#: utils/misc/guc.c:499
+#: utils/misc/guc.c:508
 msgid "Turns on various assertion checks."
 msgstr "Ativa v�rias verifica��es de asserto."
 
-#: utils/misc/guc.c:500
+#: utils/misc/guc.c:509
 msgid "This is a debugging aid."
 msgstr "Esse � um aux�lio na depura��o."
 
-#: utils/misc/guc.c:511 utils/misc/guc.c:593 utils/misc/guc.c:666
-#: utils/misc/guc.c:675 utils/misc/guc.c:684 utils/misc/guc.c:693
-#: utils/misc/guc.c:1078 utils/misc/guc.c:1087 utils/misc/guc.c:1145
+#: utils/misc/guc.c:520 utils/misc/guc.c:602 utils/misc/guc.c:675
+#: utils/misc/guc.c:684 utils/misc/guc.c:693 utils/misc/guc.c:702
+#: utils/misc/guc.c:1096 utils/misc/guc.c:1105 utils/misc/guc.c:1163
 msgid "no description available"
 msgstr "nenhuma descri��o dispon�vel"
 
-#: utils/misc/guc.c:520
+#: utils/misc/guc.c:529
 msgid "Logs the duration of each completed SQL statement."
-msgstr "Registra a dura��o de cada senten�a SQL completa."
+msgstr "Registra a dura��o de cada comando SQL completa."
 
-#: utils/misc/guc.c:528
+#: utils/misc/guc.c:537
 msgid "Prints the parse tree to the server log."
 msgstr "Escreve a �rvore de an�lise para log do servidor."
 
-#: utils/misc/guc.c:536
+#: utils/misc/guc.c:545
 msgid "Prints the parse tree after rewriting to server log."
 msgstr "Escreve a �rvore de an�lise depois de reescrever no log do servidor."
 
-#: utils/misc/guc.c:544
+#: utils/misc/guc.c:553
 msgid "Prints the execution plan to server log."
 msgstr "Escreve o plano de execu��o no log do servidor."
 
-#: utils/misc/guc.c:552
+#: utils/misc/guc.c:561
 msgid "Indents parse and plan tree displays."
-msgstr "Identa exibi��o da �rvore de an�lise e planejamento."
+msgstr "Identa exibi��o da �rvore de an�lise e do plano."
 
-#: utils/misc/guc.c:560
+#: utils/misc/guc.c:569
 msgid "Writes parser performance statistics to the server log."
 msgstr "Escreve estat�sticas de performance do analisador no log do servidor."
 
-#: utils/misc/guc.c:568
+#: utils/misc/guc.c:577
 msgid "Writes planner performance statistics to the server log."
 msgstr "Escreve estat�sticas de performance do planejador no log do servidor."
 
-#: utils/misc/guc.c:576
+#: utils/misc/guc.c:585
 msgid "Writes executor performance statistics to the server log."
 msgstr "Escreve estat�sticas de performance do executor no log do servidor."
 
-#: utils/misc/guc.c:584
+#: utils/misc/guc.c:593
 msgid "Writes cumulative performance statistics to the server log."
 msgstr "Escreve estat�sticas de performance acumulativas no log do servidor."
 
-#: utils/misc/guc.c:604
+#: utils/misc/guc.c:613
 msgid "Uses the indented output format for EXPLAIN VERBOSE."
 msgstr "Utiliza o formato identado para EXPLAIN VERBOSE."
 
-#: utils/misc/guc.c:612
+#: utils/misc/guc.c:621
 msgid "Starts the server statistics-collection subprocess."
 msgstr "Inicia subprocesso de coleta de estat�sticas do servidor."
 
-#: utils/misc/guc.c:620
+#: utils/misc/guc.c:629
 msgid "Zeroes collected statistics on server restart."
 msgstr "Zera estat�sticas coletadas quando o servidor for reiniciado."
 
-#: utils/misc/guc.c:628
+#: utils/misc/guc.c:637
 msgid "Collects statistics about executing commands."
 msgstr "Coleta estat�sticas sobre execu��o de comandos."
 
-#: utils/misc/guc.c:629
+#: utils/misc/guc.c:638
 msgid ""
 "Enables the collection of statistics on the currently executing command of "
 "each session, along with the time at which that command began execution."
@@ -3605,23 +3489,23 @@ msgstr ""
 "Habilita a coleta de estat�sticas do comando em execu��o de cada sess�o, ao "
 "mesmo tempo que o comando inicia a execu��o."
 
-#: utils/misc/guc.c:638
+#: utils/misc/guc.c:647
 msgid "Collects row-level statistics on database activity."
 msgstr "Coleta estat�sticas de registros do banco de dados."
 
-#: utils/misc/guc.c:646
+#: utils/misc/guc.c:655
 msgid "Collects block-level statistics on database activity."
 msgstr "Coleta estat�sticas de blocos do banco de dados."
 
-#: utils/misc/guc.c:655
+#: utils/misc/guc.c:664
 msgid "Generates debugging output for LISTEN and NOTIFY."
 msgstr "Gera sa�da de depura��o para LISTEN e NOTIFY."
 
-#: utils/misc/guc.c:704
+#: utils/misc/guc.c:713
 msgid "Logs the host name in the connection logs."
 msgstr "Registra o nome da m�quina nos logs de conex�o."
 
-#: utils/misc/guc.c:705
+#: utils/misc/guc.c:714
 msgid ""
 "By default, connection logs only show the IP address of the connecting host. "
 "If you want them to show the host name you can turn this on, but depending "
@@ -3633,15 +3517,15 @@ msgstr ""
 "habilit�-lo, mas dependendo da configura��o de resolu��o do nome da m�quina "
 "isso pode impor uma penaliza��o de performance."
 
-#: utils/misc/guc.c:715
+#: utils/misc/guc.c:724
 msgid "Causes subtables to be included by default in various commands."
 msgstr "Causa subtabelas serem inclu�das por padr�o em v�rios comandos."
 
-#: utils/misc/guc.c:723
+#: utils/misc/guc.c:732
 msgid "Interprets ACST, CST, EST, and SAT as Australian time zones."
 msgstr "Interpreta ACST, CST, EST e SAT como zonas hor�rias australianas."
 
-#: utils/misc/guc.c:724
+#: utils/misc/guc.c:733
 msgid ""
 "Otherwise they are interpreted as North/South American time zones and "
 "Saturday."
@@ -3649,11 +3533,11 @@ msgstr ""
 "Caso contr�rio eles s�o interpretados como zonas hor�rias da Am�rica do "
 "Norte/Sul e S�bado."
 
-#: utils/misc/guc.c:732
+#: utils/misc/guc.c:741
 msgid "Encrypt passwords."
 msgstr "Criptografa senhas."
 
-#: utils/misc/guc.c:733
+#: utils/misc/guc.c:742
 msgid ""
 "When a password is specified in CREATE USER or ALTER USER without writing "
 "either ENCRYPTED or UNENCRYPTED, this parameter determines whether the "
@@ -3663,11 +3547,11 @@ msgstr ""
 "ENCRYPTED ou UNENCRYPTED, esse par�metro determina se a senha ser� "
 "criptografada."
 
-#: utils/misc/guc.c:742
+#: utils/misc/guc.c:751
 msgid "Treats \"expr=NULL\" as \"expr IS NULL\"."
 msgstr "Trata \"expr=NULL\" como \"expr IS NULL\"."
 
-#: utils/misc/guc.c:743
+#: utils/misc/guc.c:752
 msgid ""
 "When turned on, expressions of the form expr = NULL (or NULL = expr) are "
 "treated as expr IS NULL, that is, they return true if expr evaluates to the "
@@ -3679,15 +3563,15 @@ msgstr ""
 "como nula, e false caso contr�rio. O comportamento correto de expr = NULL � "
 "retornar sempre nulo (desconhecido)."
 
-#: utils/misc/guc.c:754
+#: utils/misc/guc.c:763
 msgid "Enables per-database user names."
 msgstr "Habilita uso de nomes de usu�rio por banco de dados."
 
-#: utils/misc/guc.c:763
+#: utils/misc/guc.c:772
 msgid "This parameter doesn't do anything."
 msgstr "Esse par�metro n�o faz nada."
 
-#: utils/misc/guc.c:764
+#: utils/misc/guc.c:773
 msgid ""
 "It's just here so that we won't choke on SET AUTOCOMMIT TO ON from 7.3-"
 "vintage clients."
@@ -3695,64 +3579,64 @@ msgstr ""
 "Isso est� aqui para que n�o seja necess�rio SET AUTOCOMMIT TO ON em clientes "
 "7.3 e anteriores."
 
-#: utils/misc/guc.c:772
+#: utils/misc/guc.c:781
 msgid "Sets the default read-only status of new transactions."
 msgstr "Define o status padr�o como somente leitura para novas transa��es."
 
-#: utils/misc/guc.c:780
+#: utils/misc/guc.c:789
 msgid "Sets the current transaction's read-only status."
 msgstr "Define o status da transa��o atual como somente leitura."
 
-#: utils/misc/guc.c:789
+#: utils/misc/guc.c:798
 msgid "Automatically adds missing table references to FROM clauses."
 msgstr ""
-"Adiciona automaticamente refer�ncia a tabelas n�o encontradas nas cl�usulas "
+"Adiciona automaticamente refer�ncias a tabelas n�o encontradas nas cl�usulas "
 "FROM."
 
-#: utils/misc/guc.c:797
+#: utils/misc/guc.c:806
 msgid "Check function bodies during CREATE FUNCTION."
 msgstr "Verifica corpo da fun��o durante CREATE FUNCTION."
 
-#: utils/misc/guc.c:805
-msgid "By default, newly-created tables should have OIDs."
-msgstr "Por padr�o, tabelas criadas devem ter OIDs."
+#: utils/misc/guc.c:814
+msgid "Create new tables with OIDs by default."
+msgstr "Cria novas tabelas com OIDs por padr�o."
 
-#: utils/misc/guc.c:813
+#: utils/misc/guc.c:822
 msgid "Start a subprocess to capture stderr output into log files."
 msgstr "Inicia um subprocesso para capturar sa�da de erro em arquivos de log."
 
-#: utils/misc/guc.c:821
+#: utils/misc/guc.c:830
 msgid "Truncate existing log files of same name during log rotation."
 msgstr ""
 "Trunca arquivos de log existentes com mesmo nome durante rota��o de log."
 
-#: utils/misc/guc.c:831
+#: utils/misc/guc.c:840
 msgid "Emit WAL-related debugging output."
 msgstr "Emite sa�da de depura��o relacionada ao WAL."
 
-#: utils/misc/guc.c:842
+#: utils/misc/guc.c:851
 msgid "Datetimes are integer based"
 msgstr "Datetimes s�o baseados em inteiros"
 
-#: utils/misc/guc.c:865
+#: utils/misc/guc.c:874
 msgid "Sets the default statistics target."
-msgstr "Define o alvo padr�o de estat�sticas."
+msgstr "Define o valor padr�o de estat�sticas."
 
-#: utils/misc/guc.c:866
+#: utils/misc/guc.c:875
 msgid ""
 "This applies to table columns that have not had a column-specific target set "
 "via ALTER TABLE SET STATISTICS."
 msgstr ""
-"Isso se aplica a colunas de tabelas que n�o tem um alvo espec�fico definido "
+"Isso se aplica a colunas de tabelas que n�o tem um valor espec�fico definido "
 "atrav�s do ALTER TABLE SET STATISTICS."
 
-#: utils/misc/guc.c:874
+#: utils/misc/guc.c:883
 msgid "Sets the FROM-list size beyond which subqueries are not collapsed."
 msgstr ""
 "Define o tamanho da lista do FROM a partir do qual as subconsultas n�o "
 "entrar�o em colapso."
 
-#: utils/misc/guc.c:876
+#: utils/misc/guc.c:885
 msgid ""
 "The planner will merge subqueries into upper queries if the resulting FROM "
 "list would have no more than this many items."
@@ -3760,13 +3644,13 @@ msgstr ""
 "O planejador mesclar� subconsultas em consultas de n�vel superior se a lista "
 "resultante do FROM for menor que essa quantidade de itens."
 
-#: utils/misc/guc.c:885
+#: utils/misc/guc.c:894
 msgid "Sets the FROM-list size beyond which JOIN constructs are not flattened."
 msgstr ""
 "Define o tamanho da lista do FROM a partir do qual as constru��es JOIN n�o "
 "ser�o nivelados."
 
-#: utils/misc/guc.c:887
+#: utils/misc/guc.c:896
 msgid ""
 "The planner will flatten explicit inner JOIN constructs into lists of FROM "
 "items whenever a list of no more than this many items would result."
@@ -3774,55 +3658,60 @@ msgstr ""
 "O planejador nivelar� constru��es JOIN expl�citas em listas de itens FROM "
 "sempre que a lista n�o tenha mais do que essa quantidade de itens."
 
-#: utils/misc/guc.c:896
+#: utils/misc/guc.c:905
 msgid "Sets the threshold of FROM items beyond which GEQO is used."
 msgstr "Define o limite de itens do FROM a partir do qual o GEQO � utilizado."
 
-#: utils/misc/guc.c:904
+#: utils/misc/guc.c:913
 msgid "GEQO: effort is used to set the default for other GEQO parameters."
 msgstr ""
 "GEQO: esfor�o � utilizado para definir o padr�o para outros par�metros GEQO."
 
-#: utils/misc/guc.c:912
+#: utils/misc/guc.c:921
 msgid "GEQO: number of individuals in the population."
 msgstr "GEQO: n�mero de indiv�duos em uma popula��o."
 
-#: utils/misc/guc.c:913 utils/misc/guc.c:921
+#: utils/misc/guc.c:922 utils/misc/guc.c:930
 msgid "Zero selects a suitable default value."
 msgstr "Zero seleciona um valor padr�o ideal."
 
-#: utils/misc/guc.c:920
+#: utils/misc/guc.c:929
 msgid "GEQO: number of iterations of the algorithm."
 msgstr "GEQO: n�mero de itera��es do algoritmo."
 
-#: utils/misc/guc.c:929
+#: utils/misc/guc.c:938
 msgid "The time in milliseconds to wait on lock before checking for deadlock."
 msgstr ""
 "O tempo em milisegundos para esperar um bloqueio antes de verificar um "
 "impasse."
 
-#: utils/misc/guc.c:945
+#: utils/misc/guc.c:954
 msgid "Sets the maximum number of concurrent connections."
 msgstr "Define o n�mero m�ximo de conex�es concorrentes."
 
-#: utils/misc/guc.c:954
+#: utils/misc/guc.c:963
 msgid "Sets the number of connection slots reserved for superusers."
 msgstr "Define o n�mero de conex�es reservadas para super-usu�rios."
 
-#: utils/misc/guc.c:963
+#: utils/misc/guc.c:972
 msgid "Sets the number of shared memory buffers used by the server."
 msgstr ""
 "Define o n�mero de buffers de mem�ria compartilhada utilizados pelo servidor."
 
-#: utils/misc/guc.c:972
+#: utils/misc/guc.c:981
+msgid "Sets the maximum number of temporary buffers used by each session."
+msgstr ""
+"Define o n�mero m�ximo de buffers tempor�rios utilizados por cada sess�o."
+
+#: utils/misc/guc.c:990
 msgid "Sets the TCP port the server listens on."
 msgstr "Define a porta TCP que o servidor escutar�."
 
-#: utils/misc/guc.c:981
+#: utils/misc/guc.c:999
 msgid "Sets the access permissions of the Unix-domain socket."
 msgstr "Define as permiss�es de acesso do soquete de dom�nio Unix."
 
-#: utils/misc/guc.c:982
+#: utils/misc/guc.c:1000
 msgid ""
 "Unix-domain sockets use the usual Unix file system permission set. The "
 "parameter value is expected to be an numeric mode specification in the form "
@@ -3834,11 +3723,11 @@ msgstr ""
 "pelas chamadas de sistema chmod e umask. (Para utilizar formato octal "
 "customizado, o n�mero deve come�ar com um 0 (zero).)"
 
-#: utils/misc/guc.c:994
+#: utils/misc/guc.c:1012
 msgid "Sets the maximum memory to be used for query workspaces."
 msgstr "Define o m�ximo de mem�ria utilizada para opera��es da consulta."
 
-#: utils/misc/guc.c:995
+#: utils/misc/guc.c:1013
 msgid ""
 "This much memory may be used by each internal sort operation and hash table "
 "before switching to temporary disk files."
@@ -3846,54 +3735,54 @@ msgstr ""
 "Esta quantidade de mem�ria pode ser utilizada por opera��o de ordena��o "
 "interna e tabela hash antes de alternar para arquivos tempor�rios no disco."
 
-#: utils/misc/guc.c:1005
+#: utils/misc/guc.c:1023
 msgid "Sets the maximum memory to be used for maintenance operations."
 msgstr "Define o m�ximo de mem�ria utilizada para opera��es de manuten��o."
 
-#: utils/misc/guc.c:1006
+#: utils/misc/guc.c:1024
 msgid "This includes operations such as VACUUM and CREATE INDEX."
 msgstr "Isso inclue opera��es tais como VACUUM e CREATE INDEX."
 
-#: utils/misc/guc.c:1014
+#: utils/misc/guc.c:1032
 msgid "Sets the maximum stack depth, in kilobytes."
-msgstr "Define a profundidade m�xima da pilha, em kilobytes."
+msgstr "Define a tamanho m�ximo da pilha, em kilobytes."
 
-#: utils/misc/guc.c:1023
+#: utils/misc/guc.c:1041
 msgid "Vacuum cost for a page found in the buffer cache."
 msgstr "Custo da faxina por p�gina encontrada na cache do buffer."
 
-#: utils/misc/guc.c:1032
+#: utils/misc/guc.c:1050
 msgid "Vacuum cost for a page not found in the buffer cache."
 msgstr "Custo da faxina por p�gina n�o encontrada na cache do buffer."
 
-#: utils/misc/guc.c:1041
+#: utils/misc/guc.c:1059
 msgid "Vacuum cost for a page dirtied by vacuum."
 msgstr "Custo da faxina por p�gina sujada pela faxina."
 
-#: utils/misc/guc.c:1050
+#: utils/misc/guc.c:1068
 msgid "Vacuum cost amount available before napping."
 msgstr "Quantidade de custo da faxina dispon�vel antes de adormecer."
 
-#: utils/misc/guc.c:1059
+#: utils/misc/guc.c:1077
 msgid "Vacuum cost delay in milliseconds."
 msgstr "Atraso do custo da faxina em milisegundos."
 
-#: utils/misc/guc.c:1068
+#: utils/misc/guc.c:1086
 msgid ""
 "Sets the maximum number of simultaneously open files for each server process."
 msgstr ""
 "Define o n�mero m�ximo de arquivos abertos simultaneamente por cada processo "
 "do servidor."
 
-#: utils/misc/guc.c:1098
+#: utils/misc/guc.c:1116
 msgid "Sets the maximum allowed duration (in milliseconds) of any statement."
-msgstr "Define a dura��o m�xima permitida (em milisegundos) de cada senten�a."
+msgstr "Define a dura��o m�xima permitida (em milisegundos) de cada comando."
 
-#: utils/misc/guc.c:1099
+#: utils/misc/guc.c:1117
 msgid "A value of 0 turns off the timeout."
 msgstr "Um valor 0 desabilita o tempo de espera."
 
-#: utils/misc/guc.c:1107
+#: utils/misc/guc.c:1125
 msgid ""
 "Sets the maximum number of tables and indexes for which free space is "
 "tracked."
@@ -3901,17 +3790,17 @@ msgstr ""
 "Define o n�mero m�ximo de tabelas e �ndices para qual espa�o livre � "
 "registrado."
 
-#: utils/misc/guc.c:1115
+#: utils/misc/guc.c:1133
 msgid "Sets the maximum number of disk pages for which free space is tracked."
 msgstr ""
 "Define o n�mero m�ximo de p�ginas do disco para qual espa�o livre � "
 "registrado."
 
-#: utils/misc/guc.c:1124
+#: utils/misc/guc.c:1142
 msgid "Sets the maximum number of locks per transaction."
 msgstr "Define o n�mero m�ximo de bloqueios por transa��o."
 
-#: utils/misc/guc.c:1125
+#: utils/misc/guc.c:1143
 msgid ""
 "The shared lock table is sized on the assumption that at most "
 "max_locks_per_transaction * max_connections distinct objects will need to be "
@@ -3921,24 +3810,24 @@ msgstr ""
 "que max_locks_per_transaction * max_connections objetos distintos necessitam "
 "ser bloqueados simultaneamente."
 
-#: utils/misc/guc.c:1135
+#: utils/misc/guc.c:1153
 msgid "Sets the maximum time in seconds to complete client authentication."
 msgstr ""
 "Define o tempo m�ximo em segundos para completar uma autentica��o do cliente."
 
-#: utils/misc/guc.c:1155
+#: utils/misc/guc.c:1173
 msgid ""
 "Sets the maximum distance in log segments between automatic WAL checkpoints."
 msgstr ""
 "Define a dist�ncia m�xima em segmentos de log entre pontos de controle WAL "
 "autom�ticos."
 
-#: utils/misc/guc.c:1164
+#: utils/misc/guc.c:1182
 msgid "Sets the maximum time in seconds between automatic WAL checkpoints."
 msgstr ""
 "Define o tempo m�ximo em segundos entre pontos de controle WAL autom�ticos."
 
-#: utils/misc/guc.c:1173
+#: utils/misc/guc.c:1191
 msgid ""
 "Logs if filling of checkpoint segments happens more frequently than this (in "
 "seconds)."
@@ -3946,7 +3835,7 @@ msgstr ""
 "Registra se preenchimento de segmentos dos pontos de controle acontece mais "
 "frequentemente do que esse (em segundos)."
 
-#: utils/misc/guc.c:1175
+#: utils/misc/guc.c:1193
 msgid ""
 "Write a message to the server log if checkpoints caused by the filling of "
 "checkpoint segment files happens more frequently than this number of "
@@ -3956,13 +3845,13 @@ msgstr ""
 "preenchimento de arquivos de segmento dos pontos de controle acontece mais "
 "frequentemente do que esse n�mero de segundos. Zero desabilita esse aviso."
 
-#: utils/misc/guc.c:1185
+#: utils/misc/guc.c:1203
 msgid "Sets the number of disk-page buffers in shared memory for WAL."
 msgstr ""
 "Define o n�mero de buffers de p�ginas do disco para WAL na mem�ria "
 "compartilhada."
 
-#: utils/misc/guc.c:1194
+#: utils/misc/guc.c:1212
 msgid ""
 "Sets the delay in microseconds between transaction commit and flushing WAL "
 "to disk."
@@ -3970,18 +3859,18 @@ msgstr ""
 "Define o atraso em microsegundos entre efetivar uma transa��o e escrever WAL "
 "no disco."
 
-#: utils/misc/guc.c:1204
+#: utils/misc/guc.c:1222
 msgid ""
 "Sets the minimum concurrent open transactions before performing commit_delay."
 msgstr ""
 "Define o n�mero m�nimo de transa��es concorrentes abertas antes de esperar "
 "commit_delay."
 
-#: utils/misc/guc.c:1214
+#: utils/misc/guc.c:1232
 msgid "Sets the number of digits displayed for floating-point values."
 msgstr "Define o n�mero de d�gitos mostrados para valores de ponto flutuante."
 
-#: utils/misc/guc.c:1215
+#: utils/misc/guc.c:1233
 msgid ""
 "This affects real, double precision, and geometric data types. The parameter "
 "value is added to the standard number of digits (FLT_DIG or DBL_DIG as "
@@ -3991,68 +3880,65 @@ msgstr ""
 "par�metro � formatado segundo padr�o de d�gitos (FLT_DIG ou DBL_DIG segundo "
 "correspondente)."
 
-#: utils/misc/guc.c:1225
+#: utils/misc/guc.c:1243
 msgid ""
 "Sets the minimum execution time in milliseconds above which statements will "
 "be logged."
 msgstr ""
-"Define o tempo m�nimo de execu��o em milisegundos no qual as senten�as ser�o "
-"registradas."
+"Define o tempo m�nimo de execu��o em milisegundos no qual os comandos ser�o "
+"registrados."
 
-#: utils/misc/guc.c:1227
+#: utils/misc/guc.c:1245
 msgid "Zero prints all queries. The default is -1 (turning this feature off)."
 msgstr ""
-"Zero mostra todas as consultas. O padr�o � -1 (desabilita essa "
+"Zero exibe todas as consultas. O padr�o � -1 (desabilita essa "
 "funcionalidade)."
 
-#: utils/misc/guc.c:1235
-msgid "Interval to report shared buffer status in seconds"
-msgstr "Intervalo para informar status do buffer compartilhado em segundos"
-
-#: utils/misc/guc.c:1244
+#: utils/misc/guc.c:1253
 msgid "Background writer sleep time between rounds in milliseconds"
 msgstr ""
 "Tempo de adormecimento do Background writer entre ciclos em milisegundos"
 
-#: utils/misc/guc.c:1253
-msgid "Background writer percentage of dirty buffers to flush per round"
-msgstr ""
-"Percentagem de buffers sujos do Background writer a serem escritos por ciclo"
-
 #: utils/misc/guc.c:1262
-msgid "Background writer maximum number of pages to flush per round"
+msgid "Background writer maximum number of all pages to flush per round"
 msgstr ""
-"N�mero m�ximo de p�ginas do Background writer a serem escritas por ciclo"
+"N�mero m�ximo de todas as p�ginas do Background writer a serem escritas por "
+"ciclo"
 
 #: utils/misc/guc.c:1271
+msgid "Background writer maximum number of LRU pages to flush per round"
+msgstr ""
+"N�mero m�ximo de p�ginas LRU do Background writer a serem escritas por ciclo"
+
+#: utils/misc/guc.c:1280
 msgid "Automatic log file rotation will occur after N minutes"
 msgstr "Rota��o de arquivo de log autom�tica ocorrer� ap�s N minutos"
 
-#: utils/misc/guc.c:1280
+#: utils/misc/guc.c:1289
 msgid "Automatic log file rotation will occur after N kilobytes"
 msgstr "Rota��o de arquivo de log autom�tica ocorrer� ap�s N kilobytes"
 
-#: utils/misc/guc.c:1289
+#: utils/misc/guc.c:1298
 msgid "Shows the maximum number of function arguments."
 msgstr "Mostra o n�mero m�ximo de argumentos da fun��o."
 
-#: utils/misc/guc.c:1299
+#: utils/misc/guc.c:1308
 msgid "Shows the maximum number of index keys."
 msgstr "Mostra o n�mero m�ximo de chaves do �ndice."
 
-#: utils/misc/guc.c:1309
+#: utils/misc/guc.c:1318
 msgid "Shows the maximum identifier length"
 msgstr "Mostra o tamanho m�ximo de identificador"
 
-#: utils/misc/guc.c:1319
+#: utils/misc/guc.c:1328
 msgid "Shows size of a disk block"
 msgstr "Mostra o tamanho do bloco do disco"
 
-#: utils/misc/guc.c:1338
+#: utils/misc/guc.c:1347
 msgid "Sets the planner's assumption about size of the disk cache."
 msgstr "Define a suposi��o do planejador sobre o tamanho da cache do disco."
 
-#: utils/misc/guc.c:1339
+#: utils/misc/guc.c:1348
 msgid ""
 "That is, the portion of the kernel's disk cache that will be used for "
 "PostgreSQL data files. This is measured in disk pages, which are normally 8 "
@@ -4062,7 +3948,7 @@ msgstr ""
 "do PostgreSQL. Isto � medido em p�ginas do disco, que s�o normalmente 8 kB "
 "cada."
 
-#: utils/misc/guc.c:1348
+#: utils/misc/guc.c:1357
 msgid ""
 "Sets the planner's estimate of the cost of a nonsequentially fetched disk "
 "page."
@@ -4070,7 +3956,7 @@ msgstr ""
 "Define a estimativa do planejador do custo de busca n�o sequencial de uma "
 "p�gina no disco."
 
-#: utils/misc/guc.c:1350
+#: utils/misc/guc.c:1359
 msgid ""
 "This is measured as a multiple of the cost of a sequential page fetch. A "
 "higher value makes it more likely a sequential scan will be used, a lower "
@@ -4079,20 +3965,20 @@ msgstr ""
 "Isso se mede como m�ltiplo do custo de busca de uma p�gina sequencialmente. "
 "Um valor maior faz com que seja mais f�cil a utiliza��o de uma busca "
 "sequencial, um valor menor faz com que seja mais f�cil a utiliza��o de uma "
-"busca por �ndice."
+"busca indexada."
 
-#: utils/misc/guc.c:1360
+#: utils/misc/guc.c:1369
 msgid "Sets the planner's estimate of the cost of processing each tuple (row)."
 msgstr ""
 "Define a estimativa do planejador do custo de processamento de cada tupla "
 "(registro)."
 
-#: utils/misc/guc.c:1361 utils/misc/guc.c:1371 utils/misc/guc.c:1380
+#: utils/misc/guc.c:1370 utils/misc/guc.c:1380 utils/misc/guc.c:1389
 msgid "This is measured as a fraction of the cost of a sequential page fetch."
 msgstr ""
 "Isso � medido como uma fra��o do custo de uma busca sequencial de p�gina."
 
-#: utils/misc/guc.c:1369
+#: utils/misc/guc.c:1378
 msgid ""
 "Sets the planner's estimate of processing cost for each index tuple (row) "
 "during index scan."
@@ -4100,38 +3986,50 @@ msgstr ""
 "Define a estimativa do planejador do custo de processamento de cada �ndice "
 "(registro) durante a busca indexada."
 
-#: utils/misc/guc.c:1379
+#: utils/misc/guc.c:1388
 msgid ""
 "Sets the planner's estimate of processing cost of each operator in WHERE."
 msgstr ""
 "Define a estimativa do planejador do custo de processamento de cada operador "
 "no WHERE."
 
-#: utils/misc/guc.c:1389
+#: utils/misc/guc.c:1398
 msgid "GEQO: selective pressure within the population."
 msgstr "GEQO: press�o seletiva na popula��o."
 
-#: utils/misc/guc.c:1399
+#: utils/misc/guc.c:1408
+msgid "Background writer percentage of LRU buffers to flush per round"
+msgstr ""
+"Percentagem de buffers LRU sujos do Background writer a serem escritos por "
+"ciclo"
+
+#: utils/misc/guc.c:1417
+msgid "Background writer percentage of all buffers to flush per round"
+msgstr ""
+"Percentagem de todos os buffers sujos do Background writer a serem escritos "
+"por ciclo"
+
+#: utils/misc/guc.c:1426
 msgid "Sets the seed for random-number generation."
 msgstr "Define a semente para gera��o de n�meros rand�micos."
 
-#: utils/misc/guc.c:1418
+#: utils/misc/guc.c:1445
 msgid "WAL archiving command."
 msgstr "comando para arquivamento do WAL."
 
-#: utils/misc/guc.c:1419
+#: utils/misc/guc.c:1446
 msgid "The shell command that will be called to archive a WAL file."
 msgstr "Um comando do shell que ser� chamado para arquivar o arquivo do WAL."
 
-#: utils/misc/guc.c:1427
+#: utils/misc/guc.c:1454
 msgid "Sets the client's character set encoding."
 msgstr "Define a codifica��o do conjunto de caracteres do cliente."
 
-#: utils/misc/guc.c:1437
+#: utils/misc/guc.c:1464
 msgid "Sets the message levels that are sent to the client."
 msgstr "Define os n�veis de mensagem que s�o enviadas ao cliente."
 
-#: utils/misc/guc.c:1438
+#: utils/misc/guc.c:1465
 msgid ""
 "Valid values are DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, LOG, NOTICE, "
 "WARNING, and ERROR. Each level includes all the levels that follow it. The "
@@ -4141,11 +4039,11 @@ msgstr ""
 "WARNING e ERROR. Cada n�vel inclui todos os n�veis que o seguem. Quanto mais "
 "superior for o n�vel, menos mensagens s�o enviadas."
 
-#: utils/misc/guc.c:1449
+#: utils/misc/guc.c:1476
 msgid "Sets the message levels that are logged."
 msgstr "Define os n�veis de mensagem que ser�o registrados."
 
-#: utils/misc/guc.c:1450
+#: utils/misc/guc.c:1477
 msgid ""
 "Valid values are DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, "
 "WARNING, ERROR, LOG, FATAL, and PANIC. Each level includes all the levels "
@@ -4155,28 +4053,28 @@ msgstr ""
 "WARNING, ERROR, LOG, FATAL e PANIC. Cada n�vel inclui todos os n�veis que o "
 "seguem."
 
-#: utils/misc/guc.c:1460
+#: utils/misc/guc.c:1487
 msgid "Sets the verbosity of logged messages."
 msgstr "Define o detalhamento das mensagens registradas."
 
-#: utils/misc/guc.c:1461
+#: utils/misc/guc.c:1488
 msgid "Valid values are \"terse\", \"default\", and \"verbose\"."
 msgstr "Valores v�lidos s�o \"terse\", \"default\", e \"verbose\"."
 
-#: utils/misc/guc.c:1468
+#: utils/misc/guc.c:1495
 msgid "Sets the type of statements logged."
 msgstr "Define o tipos de comando registrados."
 
-#: utils/misc/guc.c:1469
+#: utils/misc/guc.c:1496
 msgid "Valid values are \"none\", \"ddl\", \"mod\", and \"all\"."
 msgstr "Valores v�lidos s�o \"none\", \"ddl\", \"mod\" e \"all\"."
 
-#: utils/misc/guc.c:1477
+#: utils/misc/guc.c:1504
 msgid ""
 "Causes all statements generating error at or above this level to be logged."
 msgstr "Registrar todas os comandos que geram erro deste n�vel ou superior."
 
-#: utils/misc/guc.c:1478
+#: utils/misc/guc.c:1505
 msgid ""
 "All SQL statements that cause an error of the specified level or a higher "
 "level are logged."
@@ -4184,37 +4082,37 @@ msgstr ""
 "Todas os comandos SQL que causarem um erro de um n�vel espec�fico ou "
 "superior ser�o registradas."
 
-#: utils/misc/guc.c:1487
+#: utils/misc/guc.c:1514
 msgid "Controls information prefixed to each log line"
 msgstr "Controla informa��o prefixada em cada linha do log"
 
-#: utils/misc/guc.c:1488
+#: utils/misc/guc.c:1515
 msgid "if blank no prefix is used"
 msgstr "se estiver em branco nenhum prefixo � utilizado"
 
-#: utils/misc/guc.c:1497
+#: utils/misc/guc.c:1524
 msgid "Sets the display format for date and time values."
 msgstr "Define o formato de exibi��o para valores de data e hora."
 
-#: utils/misc/guc.c:1498
+#: utils/misc/guc.c:1525
 msgid "Also controls interpretation of ambiguous date inputs."
 msgstr "Tamb�m controla interpreta��o de entrada de datas amb�guas."
 
-#: utils/misc/guc.c:1508
+#: utils/misc/guc.c:1535
 msgid "Sets the default tablespace to create tables and indexes in."
 msgstr "Define a tablespace padr�o para cria��o de tabelas e �ndices."
 
-#: utils/misc/guc.c:1509
+#: utils/misc/guc.c:1536
 msgid "An empty string selects the database's default tablespace."
 msgstr ""
 "Uma cadeia de caracteres vazia seleciona a tablespace padr�o do banco de "
 "dados."
 
-#: utils/misc/guc.c:1517
+#: utils/misc/guc.c:1544
 msgid "Sets the transaction isolation level of each new transaction."
 msgstr "Define n�vel de isolamento de transa��o de cada nova transa��o."
 
-#: utils/misc/guc.c:1518
+#: utils/misc/guc.c:1545
 msgid ""
 "Each SQL transaction has an isolation level, which can be either \"read "
 "uncommitted\", \"read committed\", \"repeatable read\", or \"serializable\"."
@@ -4222,11 +4120,11 @@ msgstr ""
 "Cada transa��o SQL tem um n�vel de isolamento, que pode ser \"read "
 "uncommitted\", \"read committed\", \"repeatable read\" ou \"serializable\"."
 
-#: utils/misc/guc.c:1527
+#: utils/misc/guc.c:1554
 msgid "Sets the path for dynamically loadable modules."
 msgstr "Define o caminho para m�dulos carreg�veis dinamicamente."
 
-#: utils/misc/guc.c:1528
+#: utils/misc/guc.c:1555
 msgid ""
 "If a dynamically loadable module needs to be opened and the specified name "
 "does not have a directory component (i.e., the name does not contain a "
@@ -4236,76 +4134,76 @@ msgstr ""
 "especificado n�o tem um componente de diret�rio (i.e., o nome n�o cont�m uma "
 "barra), o sistema ir� procurar o caminho para o arquivo especificado."
 
-#: utils/misc/guc.c:1540
+#: utils/misc/guc.c:1567
 msgid "Sets the location of the Kerberos server key file."
 msgstr "Define o local do arquivo da chave do servidor Kerberos."
 
-#: utils/misc/guc.c:1550
+#: utils/misc/guc.c:1577
 msgid "Sets the Rendezvous broadcast service name."
 msgstr "Define o nome do servi�o de difus�o do Rendezvous."
 
-#: utils/misc/guc.c:1561
+#: utils/misc/guc.c:1588
 msgid "Shows the collation order locale."
 msgstr "Mostra a localidade utilizada na compara��o ao ordenar."
 
-#: utils/misc/guc.c:1571
+#: utils/misc/guc.c:1598
 msgid "Shows the character classification and case conversion locale."
 msgstr ""
 "Mostra a localidade de classifica��o de caracteres e convers�o entre "
 "mai�sculas/min�sculas."
 
-#: utils/misc/guc.c:1581
+#: utils/misc/guc.c:1608
 msgid "Sets the language in which messages are displayed."
 msgstr "Define a l�ngua na qual as mensagens s�o mostradas."
 
-#: utils/misc/guc.c:1590
+#: utils/misc/guc.c:1617
 msgid "Sets the locale for formatting monetary amounts."
 msgstr "Define a localidade para formato de moeda."
 
-#: utils/misc/guc.c:1599
+#: utils/misc/guc.c:1626
 msgid "Sets the locale for formatting numbers."
 msgstr "Define a localidade para formato de n�mero."
 
-#: utils/misc/guc.c:1608
+#: utils/misc/guc.c:1635
 msgid "Sets the locale for formatting date and time values."
 msgstr "Define a localidade para formato de data e hora."
 
-#: utils/misc/guc.c:1617
+#: utils/misc/guc.c:1644
 msgid "Lists shared libraries to preload into server."
 msgstr "Mostra bibliotecas compartilhadas a serem carregadas no servidor."
 
-#: utils/misc/guc.c:1627
+#: utils/misc/guc.c:1654
 msgid "Sets the regular expression \"flavor\"."
 msgstr "Define a express�o regular como \"flavor\"."
 
-#: utils/misc/guc.c:1628
+#: utils/misc/guc.c:1655
 msgid "This can be set to advanced, extended, or basic."
 msgstr "Isso pode ser definido como advanced, extended ou basic."
 
-#: utils/misc/guc.c:1636
+#: utils/misc/guc.c:1663
 msgid "Sets the schema search order for names that are not schema-qualified."
 msgstr ""
 "Define a ordem de busca em esquemas para nomes que n�o especificam um "
 "esquema."
 
-#: utils/misc/guc.c:1647
+#: utils/misc/guc.c:1674
 msgid "Sets the server (database) character set encoding."
 msgstr ""
 "Define a codifica��o do conjunto de caracteres do servidor (banco de dados)."
 
-#: utils/misc/guc.c:1658
+#: utils/misc/guc.c:1685
 msgid "Shows the server version."
 msgstr "Mostra a vers�o do servidor."
 
-#: utils/misc/guc.c:1669
+#: utils/misc/guc.c:1696
 msgid "Sets the session user name."
 msgstr "Define o nome do usu�rio da sess�o."
 
-#: utils/misc/guc.c:1679
+#: utils/misc/guc.c:1706
 msgid "Sets the destination for server log output."
 msgstr "Define o destino do log do servidor."
 
-#: utils/misc/guc.c:1680
+#: utils/misc/guc.c:1707
 msgid ""
 "Valid values are combinations of \"stderr\", \"syslog\", and \"eventlog\", "
 "depending on the platform."
@@ -4313,27 +4211,27 @@ msgstr ""
 "Valores v�lidos s�o combina��es de \"stderr\", \"syslog\" e \"eventlog\", "
 "dependendo da plataforma."
 
-#: utils/misc/guc.c:1689
+#: utils/misc/guc.c:1716
 msgid "Sets the destination directory for log files."
 msgstr "Define o diret�rio de destino dos arquivos de log."
 
-#: utils/misc/guc.c:1690
+#: utils/misc/guc.c:1717
 msgid "May be specified as relative to the data directory or as absolute path."
 msgstr ""
 "Pode ser especificado como caminho relativo ao diret�rio de dados ou como "
 "caminho absoluto."
 
-#: utils/misc/guc.c:1699
+#: utils/misc/guc.c:1726
 msgid "Sets the file name pattern for log files."
 msgstr "Define o padr�o de nome de arquivo para arquivos de log."
 
-#: utils/misc/guc.c:1710
+#: utils/misc/guc.c:1737
 msgid "Sets the syslog \"facility\" to be used when syslog enabled."
 msgstr ""
 "Define o syslog \"facility\" a ser utilizado quando syslog estiver "
 "habilitado."
 
-#: utils/misc/guc.c:1711
+#: utils/misc/guc.c:1738
 msgid ""
 "Valid values are LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, "
 "LOCAL7."
@@ -4341,66 +4239,66 @@ msgstr ""
 "Valores v�lidos s�o LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, "
 "LOCAL7."
 
-#: utils/misc/guc.c:1719
+#: utils/misc/guc.c:1746
 msgid "Sets the program name used to identify PostgreSQL messages in syslog."
 msgstr ""
 "Define o nome do programa utilizado para identificar mensagens do PostgreSQL "
 "no syslog."
 
-#: utils/misc/guc.c:1730
+#: utils/misc/guc.c:1757
 msgid "Sets the time zone for displaying and interpreting time stamps."
 msgstr "Define a zona hor�ria para exibi��o e interpreta��o de timestamps."
 
-#: utils/misc/guc.c:1740
+#: utils/misc/guc.c:1767
 msgid "Sets the current transaction's isolation level."
 msgstr "Define o n�vel de isolamento da transa��o atual."
 
-#: utils/misc/guc.c:1750
+#: utils/misc/guc.c:1777
 msgid "Sets the owning group of the Unix-domain socket."
 msgstr "Define o grupo dono do soquete de dom�nio Unix."
 
-#: utils/misc/guc.c:1751
+#: utils/misc/guc.c:1778
 msgid ""
 "(The owning user of the socket is always the user that starts the server.)"
 msgstr "(O usu�rio dono do soquete � sempre aquele que inicia o servidor.)"
 
-#: utils/misc/guc.c:1760
+#: utils/misc/guc.c:1787
 msgid "Sets the directory where the Unix-domain socket will be created."
 msgstr "Define o diret�rio onde o soquete de dom�nio Unix ser� criado."
 
-#: utils/misc/guc.c:1770
+#: utils/misc/guc.c:1797
 msgid "Sets the host name or IP address(es) to listen to."
 msgstr "Define o nome da m�quina ou endere�o(s) IP para escutar."
 
-#: utils/misc/guc.c:1780
+#: utils/misc/guc.c:1807
 msgid "Selects the method used for forcing WAL updates out to disk."
 msgstr "Seleciona o m�todo utilizado para for�ar atualiza��es do WAL no disco."
 
-#: utils/misc/guc.c:1789
+#: utils/misc/guc.c:1816
 msgid "Sets the list of known custom variable classes."
 msgstr "Define a lista de classes de vari�veis customizadas conhecidas."
 
-#: utils/misc/guc.c:1799
+#: utils/misc/guc.c:1826
 msgid "Sets the server's data directory."
 msgstr "Define o diret�rio de dados do servidor."
 
-#: utils/misc/guc.c:1809
+#: utils/misc/guc.c:1836
 msgid "Sets the server's main configuration file."
 msgstr "Define o arquivo de configura��o principal do servidor."
 
-#: utils/misc/guc.c:1819
+#: utils/misc/guc.c:1846
 msgid "Sets the server's \"hba\" configuration file"
 msgstr "Define o arquivo de configura��o \"hba\" do servidor"
 
-#: utils/misc/guc.c:1829
+#: utils/misc/guc.c:1856
 msgid "Sets the server's \"ident\" configuration file"
 msgstr "Define o arquivo de configura��o \"ident\" do servidor"
 
-#: utils/misc/guc.c:1839
+#: utils/misc/guc.c:1866
 msgid "Writes the postmaster PID to the specified file."
 msgstr "Escreve o PID do postmaster no arquivo especificado."
 
-#: utils/misc/guc.c:2478
+#: utils/misc/guc.c:2505
 #, c-format
 msgid ""
 "%s does not know where to find the server configuration file.\n"
@@ -4411,12 +4309,12 @@ msgstr ""
 "Voc� deve especificar a op��o --config-file ou -D ou definir uma vari�vel de "
 "ambiente PGDATA.\n"
 
-#: utils/misc/guc.c:2503
+#: utils/misc/guc.c:2530
 #, c-format
 msgid "%s cannot access the server configuration file \"%s\": %s\n"
 msgstr "%s n�o pode acessar o arquivo de configura��o do servidor \"%s\": %s\n"
 
-#: utils/misc/guc.c:2523
+#: utils/misc/guc.c:2550
 #, c-format
 msgid ""
 "%s does not know where to find the database system data.\n"
@@ -4427,7 +4325,7 @@ msgstr ""
 "Isto pode ser especificado como \"data_directory\" no \"%s\", pela op��o -D "
 "ou definindo uma vari�vel de ambiente PGDATA.\n"
 
-#: utils/misc/guc.c:2546
+#: utils/misc/guc.c:2573
 #, c-format
 msgid ""
 "%s does not know where to find the \"hba\" configuration file.\n"
@@ -4438,7 +4336,7 @@ msgstr ""
 "Isto pode ser especificado como \"hba_file\" no \"%s\", pela op��o -D ou "
 "definindo uma vari�vel de ambiente PGDATA.\n"
 
-#: utils/misc/guc.c:2569
+#: utils/misc/guc.c:2596
 #, c-format
 msgid ""
 "%s does not know where to find the \"ident\" configuration file.\n"
@@ -4449,126 +4347,126 @@ msgstr ""
 "Isto pode ser especificado como \"ident_file\" no \"%s\", pela op��o -D ou "
 "definindo uma vari�vel de ambiente PGDATA.\n"
 
-#: utils/misc/guc.c:3275 utils/misc/guc.c:3801 utils/misc/guc.c:3841
-#: utils/misc/guc.c:3916 utils/misc/guc.c:4252 utils/misc/guc.c:4403
+#: utils/misc/guc.c:3302 utils/misc/guc.c:3828 utils/misc/guc.c:3868
+#: utils/misc/guc.c:3943 utils/misc/guc.c:4285 utils/misc/guc.c:4436
 #, c-format
 msgid "unrecognized configuration parameter \"%s\""
 msgstr "par�metro de configura��o desconhecido \"%s\""
 
-#: utils/misc/guc.c:3294
+#: utils/misc/guc.c:3321
 #, c-format
 msgid "parameter \"%s\" cannot be changed"
 msgstr "par�metro \"%s\" n�o pode ser mudado"
 
-#: utils/misc/guc.c:3306
+#: utils/misc/guc.c:3333
 #, c-format
 msgid "parameter \"%s\" cannot be changed after server start"
 msgstr ""
 "par�metro \"%s\" n�o pode ser mudado depois que o servidor foi iniciado"
 
-#: utils/misc/guc.c:3316
+#: utils/misc/guc.c:3343
 #, c-format
 msgid "parameter \"%s\" cannot be changed now"
 msgstr "par�metro \"%s\" n�o pode ser mudado agora"
 
-#: utils/misc/guc.c:3346
+#: utils/misc/guc.c:3373
 #, c-format
 msgid "parameter \"%s\" cannot be set after connection start"
 msgstr ""
 "par�metro \"%s\" n�o pode ser definido depois que a conex�o foi iniciada"
 
-#: utils/misc/guc.c:3356
+#: utils/misc/guc.c:3383
 #, c-format
 msgid "permission denied to set parameter \"%s\""
 msgstr "permiss�o negada ao definir par�metro \"%s\""
 
-#: utils/misc/guc.c:3407
+#: utils/misc/guc.c:3434
 #, c-format
 msgid "parameter \"%s\" requires a Boolean value"
 msgstr "par�metro \"%s\" requer um valor booleano"
 
-#: utils/misc/guc.c:3423 utils/misc/guc.c:3507
+#: utils/misc/guc.c:3450 utils/misc/guc.c:3534
 #, c-format
 msgid "invalid value for parameter \"%s\": %d"
 msgstr "valor inv�lido para par�metro \"%s\": %d"
 
-#: utils/misc/guc.c:3483
+#: utils/misc/guc.c:3510
 #, c-format
 msgid "parameter \"%s\" requires an integer value"
 msgstr "par�metro \"%s\" requer um valor inteiro"
 
-#: utils/misc/guc.c:3491
+#: utils/misc/guc.c:3518
 #, c-format
 msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)"
 msgstr "%d est� fora do intervalo v�lido para par�metro \"%s\" (%d .. %d)"
 
-#: utils/misc/guc.c:3567
+#: utils/misc/guc.c:3594
 #, c-format
 msgid "parameter \"%s\" requires a numeric value"
 msgstr "par�metro \"%s\" requer um valor num�rico"
 
-#: utils/misc/guc.c:3575
+#: utils/misc/guc.c:3602
 #, c-format
 msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)"
 msgstr "%g est� fora do intervalo v�lido para par�metro \"%s\" (%g .. %g)"
 
-#: utils/misc/guc.c:3591
+#: utils/misc/guc.c:3618
 #, c-format
 msgid "invalid value for parameter \"%s\": %g"
 msgstr "valor inv�lido para par�metro \"%s\": %g"
 
-#: utils/misc/guc.c:3689
+#: utils/misc/guc.c:3716
 #, c-format
 msgid "invalid value for parameter \"%s\": \"%s\""
 msgstr "valor inv�lido para par�metro \"%s\": \"%s\""
 
-#: utils/misc/guc.c:3805 utils/misc/guc.c:3845 utils/misc/guc.c:4407
+#: utils/misc/guc.c:3832 utils/misc/guc.c:3872 utils/misc/guc.c:4440
 #, c-format
 msgid "must be superuser to examine \"%s\""
 msgstr "deve ser super-usu�rio para examinar \"%s\""
 
-#: utils/misc/guc.c:3925
+#: utils/misc/guc.c:3952
 #, c-format
 msgid "SET %s takes only one argument"
 msgstr "SET %s s� tem um argumento"
 
-#: utils/misc/guc.c:4029
+#: utils/misc/guc.c:4054
 msgid "SET requires parameter name"
 msgstr "SET requer nome do par�metro"
 
-#: utils/misc/guc.c:4093
+#: utils/misc/guc.c:4118
 #, c-format
 msgid "attempt to redefine parameter \"%s\""
 msgstr "tentativa de redefinir par�metro \"%s\""
 
-#: utils/misc/guc.c:5050
+#: utils/misc/guc.c:5083
 #, c-format
 msgid "could not parse setting for parameter \"%s\""
 msgstr "n�o p�de analisar defini��o para par�metro \"%s\""
 
-#: utils/misc/guc.c:5248
+#: utils/misc/guc.c:5281
 msgid "invalid list syntax for parameter \"log_destination\""
 msgstr "sintaxe de lista inv�lida para par�metro \"log_destination\""
 
-#: utils/misc/guc.c:5271
+#: utils/misc/guc.c:5304
 #, c-format
 msgid "unrecognized \"log_destination\" key word: \"%s\""
 msgstr "palavra chave de \"log_destination\" desconhecida: \"%s\""
 
-#: utils/misc/guc.c:5499
+#: utils/misc/guc.c:5545
 msgid "SET AUTOCOMMIT TO OFF is no longer supported"
 msgstr "SET AUTOCOMMIT TO OFF n�o � mais suportado"
 
-#: utils/misc/guc.c:5547
+#: utils/misc/guc.c:5593
 #, c-format
 msgid "invalid syntax for \"custom_variable_classes\": \"%s\""
 msgstr "sintaxe inv�lida para \"custom_variable_classes\": \"%s\""
 
-#: utils/misc/guc.c:5576
+#: utils/misc/guc.c:5622
 msgid "cannot enable parameter when \"log_statement_stats\" is true"
 msgstr "n�o pode habilitar par�metro quando \"log_statement_stats\" � true"
 
-#: utils/misc/guc.c:5593
+#: utils/misc/guc.c:5639
 msgid ""
 "cannot enable \"log_statement_stats\" when \"log_parser_stats\", "
 "\"log_planner_stats\", or \"log_executor_stats\" is true"
@@ -4576,11 +4474,11 @@ msgstr ""
 "n�o pode habilitar \"log_statement_stats\" quando \"log_parser_stats\", "
 "\"log_planner_stats\" ou \"log_executor_stats\" � true"
 
-#: utils/misc/guc.c:5612
+#: utils/misc/guc.c:5658
 msgid "cannot set transaction read-write mode inside a read-only transaction"
 msgstr ""
 "n�o pode definir modo leitura-escrita da transa��o dentro de uma transa��o "
-"somente-leitura"
+"somente leitura"
 
 #: utils/misc/help_config.c:125
 msgid "internal error: unrecognized run-time parameter type\n"
@@ -4606,11 +4504,11 @@ msgstr "cursor \"%s\" j
 msgid "closing existing cursor \"%s\""
 msgstr "fechando cursor existente \"%s\""
 
-#: utils/sort/tuplesort.c:2082
+#: utils/sort/tuplesort.c:2078
 msgid "could not create unique index"
 msgstr "n�o p�de criar �ndice �nico"
 
-#: utils/sort/tuplesort.c:2083
+#: utils/sort/tuplesort.c:2079
 msgid "Table contains duplicated values."
 msgstr "Tabela cont�m valores duplicados."
 
@@ -4628,48 +4526,48 @@ msgstr "Talvez esteja faltando espa
 msgid "could not read block %ld of temporary file: %m"
 msgstr "n�o p�de ler bloco %ld do arquivo tempor�rio: %m"
 
-#: utils/cache/typcache.c:155 parser/parse_type.c:206 parser/parse_type.c:237
+#: utils/cache/typcache.c:154 parser/parse_type.c:206 parser/parse_type.c:237
 #, c-format
 msgid "type \"%s\" is only a shell"
 msgstr "tipo \"%s\" � indefinido"
 
-#: utils/cache/typcache.c:369 commands/indexcmds.c:694
+#: utils/cache/typcache.c:368 commands/indexcmds.c:697
 #, c-format
 msgid "there are multiple default operator classes for data type %s"
 msgstr "h� m�ltiplas classes de operadores padr�o para tipo de dado %s"
 
-#: utils/cache/typcache.c:414
+#: utils/cache/typcache.c:413
 #, c-format
 msgid "type %s is not composite"
 msgstr "tipo %s n�o � composto"
 
-#: utils/cache/typcache.c:428
+#: utils/cache/typcache.c:427
 msgid "record type has not been registered"
 msgstr "tipo record n�o foi registrado"
 
-#: utils/cache/lsyscache.c:1687 utils/cache/lsyscache.c:1723
-#: utils/cache/lsyscache.c:1759 utils/cache/lsyscache.c:1795
+#: utils/cache/lsyscache.c:1685 utils/cache/lsyscache.c:1720
+#: utils/cache/lsyscache.c:1755 utils/cache/lsyscache.c:1790
 #, c-format
 msgid "type %s is only a shell"
 msgstr "tipo %s � indefinido"
 
-#: utils/cache/lsyscache.c:1692
+#: utils/cache/lsyscache.c:1690
 #, c-format
 msgid "no input function available for type %s"
 msgstr "nenhuma fun��o de entrada dispon�vel para tipo %s"
 
-#: utils/cache/lsyscache.c:1728
+#: utils/cache/lsyscache.c:1725
 #, c-format
 msgid "no output function available for type %s"
 msgstr "nenhuma fun��o de sa�da dispon�vel para tipo %s"
 
-#: utils/cache/relcache.c:3264
+#: utils/cache/relcache.c:3153
 #, c-format
 msgid "could not create relation-cache initialization file \"%s\": %m"
 msgstr ""
 "n�o p�de criar arquivo de inicializa��o de cache de rela��es \"%s\": %m"
 
-#: utils/cache/relcache.c:3266
+#: utils/cache/relcache.c:3155
 msgid "Continuing anyway, but there's something wrong."
 msgstr "Continuando mesmo assim, mas h� algo errado."
 
@@ -4683,87 +4581,6 @@ msgstr "n
 msgid "could not reopen file \"%s\" as stdout: %m"
 msgstr "n�o p�de abrir arquivo \"%s\" novamente como saida padr�o: %m"
 
-#: utils/error/elog.c:1350 utils/error/elog.c:1360
-msgid "[unknown]"
-msgstr "[desconhecido]"
-
-#: utils/error/elog.c:1488 utils/error/elog.c:1681 utils/error/elog.c:1757
-msgid "missing error text"
-msgstr "faltando mensagem de erro"
-
-#: utils/error/elog.c:1491 utils/error/elog.c:1494 utils/error/elog.c:1760
-#: utils/error/elog.c:1763
-#, c-format
-msgid " at character %d"
-msgstr " no caracter %d"
-
-#: utils/error/elog.c:1504
-msgid "DETAIL:  "
-msgstr "DETALHE:  "
-
-#: utils/error/elog.c:1511
-msgid "HINT:  "
-msgstr "DICA:  "
-
-#: utils/error/elog.c:1518
-msgid "QUERY:  "
-msgstr "CONSULTA:  "
-
-#: utils/error/elog.c:1525
-msgid "CONTEXT:  "
-msgstr "CONTEXTO:  "
-
-#: utils/error/elog.c:1535
-#, c-format
-msgid "LOCATION:  %s, %s:%d\n"
-msgstr "LOCAL:  %s, %s:%d\n"
-
-#: utils/error/elog.c:1542
-#, c-format
-msgid "LOCATION:  %s:%d\n"
-msgstr "LOCAL:  %s:%d\n"
-
-#: utils/error/elog.c:1555
-msgid "STATEMENT:  "
-msgstr "COMANDO:  "
-
-#: utils/error/elog.c:1873
-#, c-format
-msgid "operating system error %d"
-msgstr "erro do sistema operacional %d"
-
-#: utils/error/elog.c:1896
-msgid "DEBUG"
-msgstr "DEPURA��O"
-
-#: utils/error/elog.c:1900
-msgid "LOG"
-msgstr "LOG"
-
-#: utils/error/elog.c:1903
-msgid "INFO"
-msgstr "INFO"
-
-#: utils/error/elog.c:1906
-msgid "NOTICE"
-msgstr "NOTA"
-
-#: utils/error/elog.c:1909
-msgid "WARNING"
-msgstr "AVISO"
-
-#: utils/error/elog.c:1912
-msgid "ERROR"
-msgstr "ERRO"
-
-#: utils/error/elog.c:1915
-msgid "FATAL"
-msgstr "FATAL"
-
-#: utils/error/elog.c:1918
-msgid "PANIC"
-msgstr "P�NICO"
-
 #: utils/error/assert.c:34
 msgid "TRAP: ExceptionalCondition: bad arguments\n"
 msgstr "TRAP: ExceptionCondition: argumentos inv�lidos\n"
@@ -4800,43 +4617,41 @@ msgstr "Por favor fa
 msgid "hash indexes do not support whole-index scans"
 msgstr "�ndices hash n�o suportam buscas em todo �ndice"
 
-#: access/hash/hashinsert.c:90
+#: access/hash/hashinsert.c:89
 #, c-format
 msgid "index row size %lu exceeds hash maximum %lu"
 msgstr "tamanho de registro do �ndice %lu excede tamanho m�ximo do hash %lu"
 
-#: access/heap/hio.c:109
+#: access/heap/hio.c:104
 #, c-format
 msgid "row is too big: size %lu, maximum size %lu"
 msgstr "registro � muito grande: tamanho %lu, tamanho m�ximo %lu"
 
-#: access/heap/heapam.c:487
+#: access/heap/heapam.c:484
 #, c-format
 msgid "could not obtain lock on relation \"%s\""
 msgstr "n�o p�de obter bloqueio na rela��o \"%s\""
 
-#: access/heap/heapam.c:610 access/heap/heapam.c:645 access/heap/heapam.c:680
-#: catalog/aclchk.c:286
+#: access/heap/heapam.c:567 access/heap/heapam.c:602 catalog/aclchk.c:285
 #, c-format
 msgid "\"%s\" is an index"
 msgstr "\"%s\" � um �ndice"
 
-#: access/heap/heapam.c:615 access/heap/heapam.c:650 access/heap/heapam.c:685
+#: access/heap/heapam.c:572 access/heap/heapam.c:607
 #, c-format
 msgid "\"%s\" is a special relation"
 msgstr "\"%s\" � uma rela��o especial"
 
-#: access/heap/heapam.c:620 access/heap/heapam.c:655 access/heap/heapam.c:690
-#: catalog/aclchk.c:293
+#: access/heap/heapam.c:577 access/heap/heapam.c:612 catalog/aclchk.c:292
 #, c-format
 msgid "\"%s\" is a composite type"
 msgstr "\"%s\" � um tipo composto"
 
-#: access/rtree/rtree.c:646
+#: access/rtree/rtree.c:614
 msgid "variable-length rtree keys are not supported"
 msgstr "chaves de �rvore R com tamanho vari�vel n�o s�o suportadas"
 
-#: access/rtree/rtree.c:786
+#: access/rtree/rtree.c:753
 #, c-format
 msgid "index row size %lu exceeds rtree maximum, %lu"
 msgstr ""
@@ -4847,34 +4662,21 @@ msgstr ""
 msgid "number of index columns (%d) exceeds limit (%d)"
 msgstr "n�mero de colunas indexadas (%d) excede limite (%d)"
 
-#: access/common/indextuple.c:165
+#: access/common/indextuple.c:166
 #, c-format
 msgid "index row requires %lu bytes, maximum size is %lu"
 msgstr "registro do �ndice requer %lu bytes, tamanho m�ximo � %lu"
 
-#: access/common/heaptuple.c:580
+#: access/common/heaptuple.c:707 access/common/heaptuple.c:815
 #, c-format
 msgid "number of columns (%d) exceeds limit (%d)"
 msgstr "n�mero de colunas (%d) excede limite (%d)"
 
-#: access/common/tupdesc.c:511
+#: access/common/tupdesc.c:498
 #, c-format
 msgid "column \"%s\" cannot be declared SETOF"
 msgstr "coluna \"%s\" n�o pode ser declarada SETOF"
 
-#: access/common/tupdesc.c:630 access/common/tupdesc.c:661
-msgid "number of aliases does not match number of columns"
-msgstr "n�mero de aliases n�o corresponde ao n�mero de colunas"
-
-#: access/common/tupdesc.c:655
-msgid "no column alias was provided"
-msgstr "nenhum alias de coluna foi fornecido"
-
-#: access/common/tupdesc.c:679
-msgid "could not determine row description for function returning record"
-msgstr ""
-"n�o p�de determinar descri��o de registro para fun��o que retorna record"
-
 #: access/transam/slru.c:452
 #, c-format
 msgid "file \"%s\" doesn't exist, reading as zeroes"
@@ -4888,10 +4690,10 @@ msgstr "arquivo \"%s\" n
 msgid "could not access status of transaction %u"
 msgstr "n�o p�de acessar status da transa��o %u"
 
-#: access/transam/slru.c:645 access/transam/xlog.c:1544
-#: access/transam/xlog.c:1664 access/transam/xlog.c:2939
-#: access/transam/xlog.c:5357 access/transam/xlog.c:5475
-#: postmaster/postmaster.c:2906
+#: access/transam/slru.c:645 access/transam/xlog.c:1566
+#: access/transam/xlog.c:1689 access/transam/xlog.c:2978
+#: access/transam/xlog.c:5466 access/transam/xlog.c:5584
+#: postmaster/postmaster.c:2877
 #, c-format
 msgid "could not create file \"%s\": %m"
 msgstr "n�o p�de criar arquivo \"%s\": %m"
@@ -4911,14 +4713,14 @@ msgstr "n
 msgid "could not write to file \"%s\" at offset %u: %m"
 msgstr "n�o p�de escrever no arquivo \"%s\" deslocado de %u: %m"
 
-#: access/transam/slru.c:673 access/transam/xlog.c:1580
-#: access/transam/xlog.c:1704 access/transam/xlog.c:3036
+#: access/transam/slru.c:673 access/transam/xlog.c:1602
+#: access/transam/xlog.c:1729 access/transam/xlog.c:3075
 #, c-format
 msgid "could not fsync file \"%s\": %m"
 msgstr "n�o p�de executar fsync no arquivo \"%s\": %m"
 
-#: access/transam/slru.c:680 access/transam/xlog.c:1585
-#: access/transam/xlog.c:1709 access/transam/xlog.c:3041
+#: access/transam/slru.c:680 access/transam/xlog.c:1607
+#: access/transam/xlog.c:1734 access/transam/xlog.c:3080
 #, c-format
 msgid "could not close file \"%s\": %m"
 msgstr "n�o p�de fechar arquivo \"%s\": %m"
@@ -4926,113 +4728,113 @@ msgstr "n
 #: access/transam/slru.c:862
 #, c-format
 msgid "could not truncate directory \"%s\": apparent wraparound"
-msgstr "n�o p�de truncar diret�rio \"%s\": rein�cio aparente"
+msgstr "n�o p�de truncar diret�rio \"%s\": reciclagem aparente"
 
 #: access/transam/slru.c:948
 #, c-format
 msgid "removing file \"%s\""
 msgstr "removendo arquivo \"%s\""
 
-#: access/transam/slru.c:967 commands/tablespace.c:573
-#: commands/tablespace.c:719
+#: access/transam/slru.c:967 commands/tablespace.c:570
+#: commands/tablespace.c:716 ../port/copydir.c:87
 #, c-format
 msgid "could not read directory \"%s\": %m"
 msgstr "n�o p�de ler diret�rio \"%s\": %m"
 
-#: access/transam/xact.c:510
+#: access/transam/xact.c:509
 msgid "cannot have more than 2^32-1 commands in a transaction"
 msgstr "n�o pode ter mais do que 2^32-1 comandos em uma transa��o"
 
 #. translator: %s represents an SQL statement name
-#: access/transam/xact.c:2178
+#: access/transam/xact.c:2216
 #, c-format
 msgid "%s cannot run inside a transaction block"
 msgstr "%s n�o pode executar dentro de um bloco de transa��o"
 
 #. translator: %s represents an SQL statement name
-#: access/transam/xact.c:2188
+#: access/transam/xact.c:2226
 #, c-format
 msgid "%s cannot run inside a subtransaction"
 msgstr "%s n�o pode executar dentro de uma subtransa��o"
 
 #. translator: %s represents an SQL statement name
-#: access/transam/xact.c:2200
+#: access/transam/xact.c:2238
 #, c-format
 msgid "%s cannot be executed from a function"
 msgstr "%s n�o pode ser executada a partir de uma fun��o"
 
 #. translator: %s represents an SQL statement name
-#: access/transam/xact.c:2251
+#: access/transam/xact.c:2289
 #, c-format
 msgid "%s may only be used in transaction blocks"
 msgstr "%s s� deve ser utilizado em blocos de transa��o"
 
-#: access/transam/xact.c:2434
+#: access/transam/xact.c:2472
 msgid "there is already a transaction in progress"
 msgstr "h� uma transa��o em execu��o"
 
-#: access/transam/xact.c:2549 access/transam/xact.c:2640
+#: access/transam/xact.c:2587 access/transam/xact.c:2678
 msgid "there is no transaction in progress"
 msgstr "n�o h� uma transa��o em execu��o"
 
-#: access/transam/xact.c:2732 access/transam/xact.c:2781
-#: access/transam/xact.c:2787 access/transam/xact.c:2831
-#: access/transam/xact.c:2878 access/transam/xact.c:2884
+#: access/transam/xact.c:2770 access/transam/xact.c:2819
+#: access/transam/xact.c:2825 access/transam/xact.c:2869
+#: access/transam/xact.c:2916 access/transam/xact.c:2922
 msgid "no such savepoint"
 msgstr "savepoint inexistente"
 
-#: access/transam/xact.c:3522
+#: access/transam/xact.c:3560
 msgid "cannot have more than 2^32-1 subtransactions in a transaction"
 msgstr "n�o pode ter mais do que 2^32-1 subtransa��es em uma transa��o"
 
-#: access/transam/xlog.c:907
+#: access/transam/xlog.c:918
 #, c-format
 msgid "could not create archive status file \"%s\": %m"
 msgstr "n�o p�de criar arquivo de status do arquivador \"%s\": %m"
 
-#: access/transam/xlog.c:915
+#: access/transam/xlog.c:926
 #, c-format
 msgid "could not write archive status file \"%s\": %m"
 msgstr "n�o p�de escrever no arquivo de status do arquivador \"%s\": %m"
 
-#: access/transam/xlog.c:1180 access/transam/xlog.c:1321
-#: access/transam/xlog.c:5209
+#: access/transam/xlog.c:1194 access/transam/xlog.c:1335
+#: access/transam/xlog.c:5318
 #, c-format
 msgid "could not close log file %u, segment %u: %m"
 msgstr "n�o p�de fechar arquivo de log %u, segmento %u: %m"
 
-#: access/transam/xlog.c:1255 access/transam/xlog.c:2433
+#: access/transam/xlog.c:1269 access/transam/xlog.c:2472
 #, c-format
 msgid "could not seek in log file %u, segment %u to offset %u: %m"
 msgstr "n�o p�de buscar no arquivo de log %u, segmento %u deslocado de %u: %m"
 
-#: access/transam/xlog.c:1269
+#: access/transam/xlog.c:1283
 #, c-format
 msgid "could not write to log file %u, segment %u at offset %u: %m"
 msgstr ""
 "n�o p�de escrever no arquivo de log %u, segmento %u deslocado de %u: %m"
 
-#: access/transam/xlog.c:1521 access/transam/xlog.c:1612
-#: access/transam/xlog.c:1825 access/transam/xlog.c:1879
-#: access/transam/xlog.c:1888
+#: access/transam/xlog.c:1543 access/transam/xlog.c:1637
+#: access/transam/xlog.c:1854 access/transam/xlog.c:1908
+#: access/transam/xlog.c:1917
 #, c-format
 msgid "could not open file \"%s\" (log file %u, segment %u): %m"
 msgstr "n�o p�de abrir arquivo \"%s\" (arquivo de log %u, segmento %u): %m"
 
-#: access/transam/xlog.c:1677 access/transam/xlog.c:2970
-#: access/transam/xlog.c:5446 access/transam/xlog.c:5497
-#: access/transam/xlog.c:5569 access/transam/xlog.c:5594
-#: access/transam/xlog.c:5632
+#: access/transam/xlog.c:1702 access/transam/xlog.c:3009
+#: access/transam/xlog.c:5555 access/transam/xlog.c:5606
+#: access/transam/xlog.c:5678 access/transam/xlog.c:5703
+#: access/transam/xlog.c:5741
 #, c-format
 msgid "could not read file \"%s\": %m"
 msgstr "n�o p�de ler arquivo \"%s\": %m"
 
-#: access/transam/xlog.c:1680
+#: access/transam/xlog.c:1705
 #, c-format
 msgid "not enough data in file \"%s\""
 msgstr "dados insuficientes no arquivo \"%s\""
 
-#: access/transam/xlog.c:1792
+#: access/transam/xlog.c:1821
 #, c-format
 msgid ""
 "could not link file \"%s\" to \"%s\" (initialization of log file %u, segment "
@@ -5041,7 +4843,7 @@ msgstr ""
 "n�o p�de vincular arquivo \"%s\" para \"%s\" (inicializa��o do arquivo de "
 "log %u, segmento %u): %m"
 
-#: access/transam/xlog.c:1799
+#: access/transam/xlog.c:1828
 #, c-format
 msgid ""
 "could not rename file \"%s\" to \"%s\" (initialization of log file %u, "
@@ -5050,158 +4852,158 @@ msgstr ""
 "n�o p�de renomear arquivo \"%s\" para \"%s\" (inicializa��o do arquivo de "
 "log %u, segmento %u): %m"
 
-#: access/transam/xlog.c:1954 access/transam/xlog.c:2056
-#: access/transam/xlog.c:5340
+#: access/transam/xlog.c:1983 access/transam/xlog.c:2085
+#: access/transam/xlog.c:5449
 #, c-format
 msgid "could not stat file \"%s\": %m"
 msgstr "n�o p�de executar stat no arquivo \"%s\": %m"
 
-#: access/transam/xlog.c:1962 access/transam/xlog.c:5502
-#: access/transam/xlog.c:5656 commands/tablespace.c:589
+#: access/transam/xlog.c:1991 access/transam/xlog.c:5611
+#: access/transam/xlog.c:5765 commands/tablespace.c:586
 #, c-format
 msgid "could not remove file \"%s\": %m"
 msgstr "n�o p�de remover arquivo \"%s\": %m"
 
-#: access/transam/xlog.c:2037
+#: access/transam/xlog.c:2066
 #, c-format
 msgid "archive file \"%s\" has wrong size: %lu instead of %lu"
 msgstr ""
 "arquivo do arquivador \"%s\" tem tamanho incorreto: %lu ao inv�s de %lu"
 
-#: access/transam/xlog.c:2044
+#: access/transam/xlog.c:2073
 #, c-format
 msgid "restored log file \"%s\" from archive"
 msgstr "arquivo de log restaurado \"%s\" do arquivador"
 
-#: access/transam/xlog.c:2069
+#: access/transam/xlog.c:2098
 #, c-format
 msgid "could not restore file \"%s\" from archive: return code %d"
 msgstr "n�o p�de restaurar arquivo \"%s\" do arquivador: c�digo retornado %d"
 
-#: access/transam/xlog.c:2137
+#: access/transam/xlog.c:2172
 #, c-format
 msgid "could not open transaction log directory \"%s\": %m"
 msgstr "n�o p�de abrir diret�rio do log de transa��o \"%s\": %m"
 
-#: access/transam/xlog.c:2182
+#: access/transam/xlog.c:2215
 #, c-format
 msgid "recycled transaction log file \"%s\""
 msgstr "arquivo do log de transa��o \"%s\" reciclado"
 
-#: access/transam/xlog.c:2190
+#: access/transam/xlog.c:2229
 #, c-format
 msgid "removing transaction log file \"%s\""
 msgstr "removendo arquivo do log de transa��o \"%s\""
 
-#: access/transam/xlog.c:2213
+#: access/transam/xlog.c:2252
 #, c-format
 msgid "could not read transaction log directory \"%s\": %m"
 msgstr "n�o p�de ler diret�rio do log de transa��o \"%s\": %m"
 
-#: access/transam/xlog.c:2297
+#: access/transam/xlog.c:2336
 #, c-format
 msgid "incorrect resource manager data checksum in record at %X/%X"
 msgstr ""
 "soma de verifica��o de dados do gerenciador de recursos est� incorreta no "
 "registro em %X/%Xincorreta"
 
-#: access/transam/xlog.c:2320
+#: access/transam/xlog.c:2359
 #, c-format
 msgid "incorrect checksum of backup block %d in record at %X/%X"
 msgstr ""
 "soma de verifica��o do bloco de c�pia de seguran�a %d est� incorreta no "
 "registro em %X/%X"
 
-#: access/transam/xlog.c:2393 access/transam/xlog.c:2463
+#: access/transam/xlog.c:2432 access/transam/xlog.c:2502
 #, c-format
 msgid "invalid record offset at %X/%X"
 msgstr "deslocamento de registro inv�lido em %X/%X"
 
-#: access/transam/xlog.c:2441
+#: access/transam/xlog.c:2480
 #, c-format
 msgid "could not read from log file %u, segment %u at offset %u: %m"
-msgstr "n�o p�de ler do arquivo de log %u, segmento %u deslocamento %u: %m"
+msgstr "n�o p�de ler do arquivo de log %u, segmento %u deslocado de %u: %m"
 
-#: access/transam/xlog.c:2471
+#: access/transam/xlog.c:2510
 #, c-format
 msgid "contrecord is requested by %X/%X"
 msgstr "contrecord � solicitado por %X/%X"
 
-#: access/transam/xlog.c:2486
+#: access/transam/xlog.c:2525
 #, c-format
 msgid "record with zero length at %X/%X"
 msgstr "registro com tamanho zero em %X/%X"
 
-#: access/transam/xlog.c:2493
+#: access/transam/xlog.c:2532
 #, c-format
 msgid "invalid resource manager ID %u at %X/%X"
 msgstr "ID do gerenciador de recursos %u � inv�lido em %X/%X"
 
-#: access/transam/xlog.c:2531
+#: access/transam/xlog.c:2570
 #, c-format
 msgid "record length %u at %X/%X too long"
 msgstr "tamanho do registro %u em %X/%X � muito longo"
 
-#: access/transam/xlog.c:2567
+#: access/transam/xlog.c:2606
 #, c-format
 msgid "could not read from log file %u, segment %u, offset %u: %m"
 msgstr "n�o p�de ler do arquivo de log %u, segmento %u, deslocamento %u: %m"
 
-#: access/transam/xlog.c:2576
+#: access/transam/xlog.c:2615
 #, c-format
 msgid "there is no contrecord flag in log file %u, segment %u, offset %u"
 msgstr ""
 "n�o h� marca��o em contrecord no arquivo de log %u, segmento %u, "
 "deslocamento %u"
 
-#: access/transam/xlog.c:2586
+#: access/transam/xlog.c:2625
 #, c-format
 msgid "invalid contrecord length %u in log file %u, segment %u, offset %u"
 msgstr ""
 "tamanho de contrecord %u � inv�lido no arquivo de log %u, segmento %u, "
 "deslocamento %u"
 
-#: access/transam/xlog.c:2653
+#: access/transam/xlog.c:2692
 #, c-format
 msgid "invalid magic number %04X in log file %u, segment %u, offset %u"
 msgstr ""
 "n�mero m�gico %04X � invalido no arquivo de log %u, segmento %u, "
 "deslocamento %u"
 
-#: access/transam/xlog.c:2660
+#: access/transam/xlog.c:2699
 #, c-format
 msgid "invalid info bits %04X in log file %u, segment %u, offset %u"
 msgstr ""
 "bits de informa��o %04X inv�lidos no arquivo de log %u, segmento %u, "
 "deslocamento %u"
 
-#: access/transam/xlog.c:2682 access/transam/xlog.c:2690
+#: access/transam/xlog.c:2721 access/transam/xlog.c:2729
 msgid "WAL file is from different system"
 msgstr "arquivo do WAL � de um sistema diferente"
 
-#: access/transam/xlog.c:2683
+#: access/transam/xlog.c:2722
 #, c-format
 msgid "WAL file SYSID is %s, pg_control SYSID is %s"
 msgstr "SYSID de arquivo do WAL � %s, SYSID do pg_control � %s"
 
-#: access/transam/xlog.c:2691
+#: access/transam/xlog.c:2730
 msgid "Incorrect XLOG_SEG_SIZE in page header."
 msgstr "XLOG_SEG_SIZE incorreto no cabe�alho da p�gina."
 
-#: access/transam/xlog.c:2700
+#: access/transam/xlog.c:2739
 #, c-format
 msgid "unexpected pageaddr %X/%X in log file %u, segment %u, offset %u"
 msgstr ""
-"pageaddr %X/%X inesperado no arquivo de log %u, segmento %u, deslocalemto %u"
+"pageaddr %X/%X inesperado no arquivo de log %u, segmento %u, deslocamento %u"
 
-#: access/transam/xlog.c:2712
+#: access/transam/xlog.c:2751
 #, c-format
 msgid "unexpected timeline ID %u in log file %u, segment %u, offset %u"
 msgstr ""
 "ID de linha do tempo %u inesperado no arquivo de log %u, segmento %u, "
-"deslocalemto %u"
+"deslocamento %u"
 
-#: access/transam/xlog.c:2730
+#: access/transam/xlog.c:2769
 #, c-format
 msgid ""
 "out-of-sequence timeline ID %u (after %u) in log file %u, segment %u, offset "
@@ -5210,90 +5012,83 @@ msgstr ""
 "ID de linha do tempo %u fora de sequ�ncia (depois %u) no arquivo de log %u, "
 "segmento %u, deslocamento %u"
 
-#: access/transam/xlog.c:2799
+#: access/transam/xlog.c:2838
 #, c-format
 msgid "syntax error in history file: %s"
 msgstr "erro de sintaxe no arquivo de hist�rico: %s"
 
-#: access/transam/xlog.c:2800
+#: access/transam/xlog.c:2839
 msgid "Expected a numeric timeline ID."
 msgstr "Esperado um ID de linha do tempo num�rico."
 
-#: access/transam/xlog.c:2805
+#: access/transam/xlog.c:2844
 #, c-format
 msgid "invalid data in history file: %s"
 msgstr "dado inv�lido no arquivo de hist�rico: %s"
 
-#: access/transam/xlog.c:2806
+#: access/transam/xlog.c:2845
 msgid "Timeline IDs must be in increasing sequence."
 msgstr "IDs de linha do tempo devem ser uma sequ�ncia crescente."
 
-#: access/transam/xlog.c:2819
+#: access/transam/xlog.c:2858
 #, c-format
 msgid "invalid data in history file \"%s\""
 msgstr "dado inv�lido no arquivo de hist�rico \"%s\""
 
-#: access/transam/xlog.c:2820
+#: access/transam/xlog.c:2859
 msgid "Timeline IDs must be less than child timeline's ID."
 msgstr ""
 "IDs de linha do tempo devem ser menores do que ID de linha do tempo "
 "descendente."
 
-#: access/transam/xlog.c:3058
+#: access/transam/xlog.c:3097
 #, c-format
 msgid "could not link file \"%s\" to \"%s\": %m"
 msgstr "n�o p�de vincular arquivo \"%s\" a \"%s\": %m"
 
-#: access/transam/xlog.c:3065 access/transam/xlog.c:3847
-#: access/transam/xlog.c:3890 commands/user.c:282 commands/user.c:412
-#: postmaster/pgarch.c:596
-#, c-format
-msgid "could not rename file \"%s\" to \"%s\": %m"
-msgstr "n�o p�de renomear arquivo \"%s\" para \"%s\": %m"
-
-#: access/transam/xlog.c:3126
+#: access/transam/xlog.c:3165
 msgid "invalid LC_COLLATE setting"
 msgstr "valor do LC_COLLATE inv�lido"
 
-#: access/transam/xlog.c:3131
+#: access/transam/xlog.c:3170
 msgid "invalid LC_CTYPE setting"
 msgstr "valor do LC_CTYPE inv�lido"
 
-#: access/transam/xlog.c:3150
+#: access/transam/xlog.c:3189
 msgid "sizeof(ControlFileData) is larger than BLCKSZ; fix either one"
 msgstr "sizeof(ControlFileData) � maior do que BLCKSZ; conserte um deles"
 
-#: access/transam/xlog.c:3160
+#: access/transam/xlog.c:3199
 #, c-format
 msgid "could not create control file \"%s\": %m"
 msgstr "n�o p�de criar arquivo de controle \"%s\": %m"
 
-#: access/transam/xlog.c:3171 access/transam/xlog.c:3358
+#: access/transam/xlog.c:3210 access/transam/xlog.c:3397
 #, c-format
 msgid "could not write to control file: %m"
 msgstr "n�o p�de escrever em arquivo de controle: %m"
 
-#: access/transam/xlog.c:3177 access/transam/xlog.c:3364
+#: access/transam/xlog.c:3216 access/transam/xlog.c:3403
 #, c-format
 msgid "could not fsync control file: %m"
 msgstr "n�o p�de executar fsync no arquivo de controle: %m"
 
-#: access/transam/xlog.c:3182 access/transam/xlog.c:3369
+#: access/transam/xlog.c:3221 access/transam/xlog.c:3408
 #, c-format
 msgid "could not close control file: %m"
 msgstr "n�o p�de fechar arquivo de controle: %m"
 
-#: access/transam/xlog.c:3198 access/transam/xlog.c:3347
+#: access/transam/xlog.c:3237 access/transam/xlog.c:3386
 #, c-format
 msgid "could not open control file \"%s\": %m"
 msgstr "n�o p�de abrir arquivo de controle \"%s\": %m"
 
-#: access/transam/xlog.c:3204
+#: access/transam/xlog.c:3243
 #, c-format
 msgid "could not read from control file: %m"
 msgstr "n�o p�de ler do arquivo de controle: %m"
 
-#: access/transam/xlog.c:3217
+#: access/transam/xlog.c:3256
 #, c-format
 msgid ""
 "The database cluster was initialized with PG_CONTROL_VERSION %d, but the "
@@ -5302,15 +5097,15 @@ msgstr ""
 "O agrupamento de banco de dados foi inicializado com PG_CONTROL_VERSION %d, "
 "mas o servidor foi compilado com PG_CONTROL_VERSION %d."
 
-#: access/transam/xlog.c:3220 access/transam/xlog.c:3250
+#: access/transam/xlog.c:3259 access/transam/xlog.c:3289
 msgid "It looks like you need to initdb."
 msgstr "Parece que voc� precisa executar o initdb."
 
-#: access/transam/xlog.c:3230
+#: access/transam/xlog.c:3269
 msgid "incorrect checksum in control file"
 msgstr "soma de verifica��o incorreta em arquivo de controle"
 
-#: access/transam/xlog.c:3247
+#: access/transam/xlog.c:3286
 #, c-format
 msgid ""
 "The database cluster was initialized with CATALOG_VERSION_NO %d, but the "
@@ -5319,7 +5114,7 @@ msgstr ""
 "O agrupamento de banco de dados foi inicializado com CATALOG_VERSION_NO %d, "
 "mas o servidor foi compilado com CATALOG_VERSION_NO %d."
 
-#: access/transam/xlog.c:3254
+#: access/transam/xlog.c:3293
 #, c-format
 msgid ""
 "The database cluster was initialized with BLCKSZ %d, but the server was "
@@ -5328,14 +5123,14 @@ msgstr ""
 "O agrupamento de banco de dados foi inicializado com BLCSZ %d, mas o "
 "servidor foi compilado com BLCSZ %d."
 
-#: access/transam/xlog.c:3257 access/transam/xlog.c:3264
-#: access/transam/xlog.c:3271 access/transam/xlog.c:3278
-#: access/transam/xlog.c:3285 access/transam/xlog.c:3293
-#: access/transam/xlog.c:3300 access/transam/xlog.c:3309
+#: access/transam/xlog.c:3296 access/transam/xlog.c:3303
+#: access/transam/xlog.c:3310 access/transam/xlog.c:3317
+#: access/transam/xlog.c:3324 access/transam/xlog.c:3332
+#: access/transam/xlog.c:3339 access/transam/xlog.c:3348
 msgid "It looks like you need to recompile or initdb."
 msgstr "Parece que voc� precisa recompilar ou executar o initdb."
 
-#: access/transam/xlog.c:3261
+#: access/transam/xlog.c:3300
 #, c-format
 msgid ""
 "The database cluster was initialized with RELSEG_SIZE %d, but the server was "
@@ -5344,7 +5139,7 @@ msgstr ""
 "O agrupamento de banco de dados foi inicializado com RELSEG_SIZE %d, mas o "
 "servidor foi compilado com RELSEG_SIZE %d."
 
-#: access/transam/xlog.c:3268
+#: access/transam/xlog.c:3307
 #, c-format
 msgid ""
 "The database cluster was initialized with XLOG_SEG_SIZE %d, but the server "
@@ -5353,7 +5148,7 @@ msgstr ""
 "O agrupamento de banco de dados foi inicializado com XLOG_SEG_SIZE %d, mas o "
 "servidor foi compilado com XLOG_SEG_SIZE %d."
 
-#: access/transam/xlog.c:3275
+#: access/transam/xlog.c:3314
 #, c-format
 msgid ""
 "The database cluster was initialized with NAMEDATALEN %d, but the server was "
@@ -5362,16 +5157,16 @@ msgstr ""
 "O agrupamento de banco de dados foi inicializado com NAMEDATALEN %d, mas o "
 "servidor foi compilado com NAMEDATALEN %d."
 
-#: access/transam/xlog.c:3282
+#: access/transam/xlog.c:3321
 #, c-format
 msgid ""
-"The database cluster was initialized with FUNC_MAX_ARGS %d, but the server "
-"was compiled with FUNC_MAX_ARGS %d."
+"The database cluster was initialized with INDEX_MAX_KEYS %d, but the server "
+"was compiled with INDEX_MAX_KEYS %d."
 msgstr ""
-"O agrupamento de banco de dados foi inicializado com FUNC_MAX_ARGS %d, mas o "
-"servidor foi compilado com FUNC_MAX_ARGS %d."
+"O agrupamento de banco de dados foi inicializado com INDEX_MAX_KEYS %d, mas "
+"o servidor foi compilado com INDEX_MAX_KEYS %d."
 
-#: access/transam/xlog.c:3291
+#: access/transam/xlog.c:3330
 msgid ""
 "The database cluster was initialized without HAVE_INT64_TIMESTAMP but the "
 "server was compiled with HAVE_INT64_TIMESTAMP."
@@ -5379,7 +5174,7 @@ msgstr ""
 "O agrupamento de banco de dados foi inicializado sem HAVE_INT64_TIMESTAMP "
 "mas o servidor foi compilado com HAVE_INT64_TIMESTAMP."
 
-#: access/transam/xlog.c:3298
+#: access/transam/xlog.c:3337
 msgid ""
 "The database cluster was initialized with HAVE_INT64_TIMESTAMP but the "
 "server was compiled without HAVE_INT64_TIMESTAMP."
@@ -5387,7 +5182,7 @@ msgstr ""
 "O agrupamento de banco de dados foi inicializado com HAVE_INT64_TIMESTAMP "
 "mas o servidor foi compilado sem HAVE_INT64_TIMESTAMP."
 
-#: access/transam/xlog.c:3306
+#: access/transam/xlog.c:3345
 #, c-format
 msgid ""
 "The database cluster was initialized with LOCALE_NAME_BUFLEN %d, but the "
@@ -5396,11 +5191,11 @@ msgstr ""
 "O agrupamento de banco de dados foi inicializado com LOCALE_NAME_BUFLEN %d, "
 "mas o servidor foi compilado com LOCALE_NAME_BUFLEN %d."
 
-#: access/transam/xlog.c:3312 access/transam/xlog.c:3319
+#: access/transam/xlog.c:3351 access/transam/xlog.c:3358
 msgid "database files are incompatible with operating system"
 msgstr "arquivos do banco de dados s�o incompat�veis com o sistema operacional"
 
-#: access/transam/xlog.c:3313
+#: access/transam/xlog.c:3352
 #, c-format
 msgid ""
 "The database cluster was initialized with LC_COLLATE \"%s\", which is not "
@@ -5409,12 +5204,12 @@ msgstr ""
 "O agrupamento de banco de dados foi inicializado com LC_COLLATE \"%s\", que "
 "n�o � reconhecido pelo setlocale()."
 
-#: access/transam/xlog.c:3316 access/transam/xlog.c:3323
+#: access/transam/xlog.c:3355 access/transam/xlog.c:3362
 msgid "It looks like you need to initdb or install locale support."
 msgstr ""
 "Parece que voc� precisa executar o initdb ou instalar o suporte a localidade."
 
-#: access/transam/xlog.c:3320
+#: access/transam/xlog.c:3359
 #, c-format
 msgid ""
 "The database cluster was initialized with LC_CTYPE \"%s\", which is not "
@@ -5423,140 +5218,140 @@ msgstr ""
 "O agrupamento de banco de dados foi inicializado com LC_CTYPE \"%s\", que "
 "n�o � reconhecido pelo setlocale()."
 
-#: access/transam/xlog.c:3546
+#: access/transam/xlog.c:3587
 #, c-format
 msgid "could not write bootstrap transaction log file: %m"
 msgstr "n�o p�de escrever no arquivo inicial de log de transa��o: %m"
 
-#: access/transam/xlog.c:3552
+#: access/transam/xlog.c:3593
 #, c-format
 msgid "could not fsync bootstrap transaction log file: %m"
 msgstr "n�o p�de executar fsync no arquivo inicial de log de transa��o: %m"
 
-#: access/transam/xlog.c:3557
+#: access/transam/xlog.c:3598
 #, c-format
 msgid "could not close bootstrap transaction log file: %m"
 msgstr "n�o p�de fechar arquivo inicial de log de transa��o: %m"
 
-#: access/transam/xlog.c:3619
+#: access/transam/xlog.c:3661
 #, c-format
 msgid "could not open recovery command file \"%s\": %m"
-msgstr "n�o p�de abrir arquivo de comando de recupera��o \"%s\": %m"
+msgstr "n�o p�de abrir arquivo com comandos para recupera��o \"%s\": %m"
 
-#: access/transam/xlog.c:3624
+#: access/transam/xlog.c:3666
 msgid "starting archive recovery"
 msgstr "iniciando recupera��o do arquivador"
 
-#: access/transam/xlog.c:3669
+#: access/transam/xlog.c:3711
 #, c-format
 msgid "restore_command = \"%s\""
 msgstr "restore_command = \"%s\""
 
-#: access/transam/xlog.c:3683
+#: access/transam/xlog.c:3725
 #, c-format
 msgid "recovery_target_timeline is not a valid number: \"%s\""
 msgstr "recovery_target_timeline n�o � um n�mero v�lido: \"%s\""
 
-#: access/transam/xlog.c:3688
+#: access/transam/xlog.c:3730
 #, c-format
 msgid "recovery_target_timeline = %u"
 msgstr "recovery_target_timeline = %u"
 
-#: access/transam/xlog.c:3691
+#: access/transam/xlog.c:3733
 msgid "recovery_target_timeline = latest"
 msgstr "recovery_target_timeline = latest"
 
-#: access/transam/xlog.c:3699
+#: access/transam/xlog.c:3741
 #, c-format
 msgid "recovery_target_xid is not a valid number: \"%s\""
 msgstr "recovery_target_xid n�o � um n�mero v�lido: \"%s\""
 
-#: access/transam/xlog.c:3702
+#: access/transam/xlog.c:3744
 #, c-format
 msgid "recovery_target_xid = %u"
 msgstr "recovery_target_xid = %u"
 
-#: access/transam/xlog.c:3727
+#: access/transam/xlog.c:3769
 #, c-format
 msgid "recovery_target_time = %s"
 msgstr "recovery_target_time = %s"
 
-#: access/transam/xlog.c:3744
+#: access/transam/xlog.c:3786
 #, c-format
 msgid "recovery_target_inclusive = %s"
 msgstr "recovery_target_inclusive = %s"
 
-#: access/transam/xlog.c:3748
+#: access/transam/xlog.c:3790
 #, c-format
 msgid "unrecognized recovery parameter \"%s\""
 msgstr "par�metro de recupera��o desconhecido \"%s\""
 
-#: access/transam/xlog.c:3756
+#: access/transam/xlog.c:3798
 #, c-format
 msgid "syntax error in recovery command file: %s"
-msgstr "erro de sintaxe no arquivo de comando de recupera��o: %s"
+msgstr "erro de sintaxe no arquivo com comandos para recupera��o: %s"
 
-#: access/transam/xlog.c:3758
+#: access/transam/xlog.c:3800
 msgid "Lines should have the format parameter = 'value'."
 msgstr "Linhas devem ter o formato par�metro = 'valor'."
 
-#: access/transam/xlog.c:3763
+#: access/transam/xlog.c:3805
 #, c-format
 msgid "recovery command file \"%s\" did not specify restore_command"
 msgstr ""
-"arquivo de comando de recupera��o \"%s\" n�o especificou restore_command"
+"arquivo com comandos para recupera��o \"%s\" n�o especificou restore_command"
 
-#: access/transam/xlog.c:3782
+#: access/transam/xlog.c:3824
 #, c-format
 msgid "recovery_target_timeline %u does not exist"
 msgstr "recovery_target_timeline %u n�o existe"
 
-#: access/transam/xlog.c:3894
+#: access/transam/xlog.c:3936
 msgid "archive recovery complete"
 msgstr "recupera��o do archive est� completa"
 
-#: access/transam/xlog.c:3978
+#: access/transam/xlog.c:4020
 #, c-format
 msgid "recovery stopping after commit of transaction %u, time %s"
 msgstr "recupera��o parada ap�s efetiva��o da transa��o %u, tempo %s"
 
-#: access/transam/xlog.c:3982
+#: access/transam/xlog.c:4024
 #, c-format
 msgid "recovery stopping before commit of transaction %u, time %s"
 msgstr "recupera��o parada antes da efetiva��o da transa��o %u, tempo %s"
 
-#: access/transam/xlog.c:3989
+#: access/transam/xlog.c:4031
 #, c-format
 msgid "recovery stopping after abort of transaction %u, time %s"
 msgstr "recupera��o parada ap�s interrup��o da transa��o %u, tempo %s"
 
-#: access/transam/xlog.c:3993
+#: access/transam/xlog.c:4035
 #, c-format
 msgid "recovery stopping before abort of transaction %u, time %s"
-msgstr "recupera��o parada antes interrup��o da transa��o %u, tempo %s"
+msgstr "recupera��o parada antes da interrup��o da transa��o %u, tempo %s"
 
-#: access/transam/xlog.c:4035
+#: access/transam/xlog.c:4077
 msgid "control file contains invalid data"
 msgstr "arquivo de controle cont�m dados inv�lidos"
 
-#: access/transam/xlog.c:4039
+#: access/transam/xlog.c:4081
 #, c-format
 msgid "database system was shut down at %s"
 msgstr "sistema de banco de dados foi desligado em %s"
 
-#: access/transam/xlog.c:4043
+#: access/transam/xlog.c:4085
 #, c-format
 msgid "database system shutdown was interrupted at %s"
 msgstr "sistema de banco de dados foi interrompido em %s"
 
-#: access/transam/xlog.c:4047
+#: access/transam/xlog.c:4089
 #, c-format
 msgid "database system was interrupted while in recovery at %s"
 msgstr ""
 "sistema de banco de dados foi interrompido enquanto estava sendo recuperado "
 "em %s"
 
-#: access/transam/xlog.c:4049
+#: access/transam/xlog.c:4091
 msgid ""
 "This probably means that some data is corrupted and you will have to use the "
 "last backup for recovery."
@@ -5564,28 +5359,28 @@ msgstr ""
 "Isso provavelmente significa que algum dado foi corrompido e voc� ter� que "
 "utilizar o �ltimo backup para recupera��o."
 
-#: access/transam/xlog.c:4053
+#: access/transam/xlog.c:4095
 #, c-format
 msgid "database system was interrupted at %s"
 msgstr "sistema de banco de dados foi interrompido em %s"
 
-#: access/transam/xlog.c:4085
+#: access/transam/xlog.c:4127
 #, c-format
 msgid "requested timeline %u is not a child of database system timeline %u"
 msgstr ""
 "linha de tempo solicitada %u n�o � descendente da linha de tempo %u do "
 "sistema de banco de dados"
 
-#: access/transam/xlog.c:4100 access/transam/xlog.c:4122
+#: access/transam/xlog.c:4142 access/transam/xlog.c:4164
 #, c-format
 msgid "checkpoint record is at %X/%X"
 msgstr "registro do ponto de controle est� em %X/%X"
 
-#: access/transam/xlog.c:4107
+#: access/transam/xlog.c:4149
 msgid "could not locate required checkpoint record"
 msgstr "n�o p�de localizar registro do ponto de controle requerido"
 
-#: access/transam/xlog.c:4108
+#: access/transam/xlog.c:4150
 #, c-format
 msgid ""
 "If you are not restoring from a backup, try removing the file \"%s/"
@@ -5594,235 +5389,235 @@ msgstr ""
 "Se voc� n�o est� restaurando uma c�pia de seguran�a, tente remover o arquivo "
 "\"%s/backup_label\"."
 
-#: access/transam/xlog.c:4132
+#: access/transam/xlog.c:4174
 #, c-format
 msgid "using previous checkpoint record at %X/%X"
 msgstr "utilizando registro do ponto de controle anterior em %X/%X"
 
-#: access/transam/xlog.c:4139
+#: access/transam/xlog.c:4181
 msgid "could not locate a valid checkpoint record"
 msgstr "n�o p�de localizar registro do ponto de controle v�lido"
 
-#: access/transam/xlog.c:4148
+#: access/transam/xlog.c:4190
 #, c-format
 msgid "redo record is at %X/%X; undo record is at %X/%X; shutdown %s"
 msgstr ""
 "registro de redo est� em %X/%X; registro de undo est� em %X/%X; desligamento "
 "%s"
 
-#: access/transam/xlog.c:4153
+#: access/transam/xlog.c:4195
 #, c-format
-msgid "next transaction ID: %u; next OID: %u"
-msgstr "pr�ximo ID de transa��o: %u; pr�ximo OID: %u"
+msgid "next transaction ID: %u; next OID: %u; next MultiXactId: %u"
+msgstr "pr�ximo ID de transa��o: %u; pr�ximo OID: %u; pr�ximo MultiXactId: %u"
 
-#: access/transam/xlog.c:4157
+#: access/transam/xlog.c:4199
 msgid "invalid next transaction ID"
 msgstr "pr�ximo ID de transa��o inv�lido"
 
-#: access/transam/xlog.c:4174
+#: access/transam/xlog.c:4217
 msgid "invalid redo in checkpoint record"
 msgstr "redo � inv�lido no registro do ponto de controle"
 
-#: access/transam/xlog.c:4188
+#: access/transam/xlog.c:4231
 msgid "invalid redo/undo record in shutdown checkpoint"
 msgstr "registro de redo/undo � inv�lido no ponto de controle de desligamento"
 
-#: access/transam/xlog.c:4206
+#: access/transam/xlog.c:4249
 msgid "automatic recovery in progress"
 msgstr "recupera��o autom�tica est� em andamento"
 
-#: access/transam/xlog.c:4209
+#: access/transam/xlog.c:4252
 msgid ""
 "database system was not properly shut down; automatic recovery in progress"
 msgstr ""
 "sistema de banco de dados n�o foi desligado corretamente; recupera��o "
 "autom�tica est� em andamento"
 
-#: access/transam/xlog.c:4246
+#: access/transam/xlog.c:4289
 #, c-format
 msgid "redo starts at %X/%X"
 msgstr "redo inicia em %X/%X"
 
-#: access/transam/xlog.c:4304
+#: access/transam/xlog.c:4347
 #, c-format
 msgid "redo done at %X/%X"
 msgstr "redo pronto em %X/%X"
 
-#: access/transam/xlog.c:4312
+#: access/transam/xlog.c:4355
 msgid "redo is not required"
 msgstr "redo n�o � requerido"
 
-#: access/transam/xlog.c:4332
+#: access/transam/xlog.c:4375
 msgid "requested recovery stop point is before end time of backup dump"
 msgstr ""
 "ponto de parada de recupera��o solicitado est� antes do tempo final da c�pia "
 "de seguran�a"
 
-#: access/transam/xlog.c:4336
+#: access/transam/xlog.c:4379
 msgid "WAL ends before end time of backup dump"
 msgstr "WAL acabou antes do tempo final da c�pia de seguran�a"
 
-#: access/transam/xlog.c:4351
+#: access/transam/xlog.c:4394
 #, c-format
 msgid "selected new timeline ID: %u"
-msgstr "novo ID de linha de tempo selecionado: %u"
+msgstr "novo ID de linha do tempo selecionado: %u"
 
-#: access/transam/xlog.c:4433
+#: access/transam/xlog.c:4476
 #, c-format
 msgid "undo starts at %X/%X"
 msgstr "undo inicia em %X/%X"
 
-#: access/transam/xlog.c:4444
+#: access/transam/xlog.c:4487
 #, c-format
 msgid "undo done at %X/%X"
 msgstr "undo pronto em %X/%X"
 
-#: access/transam/xlog.c:4449
+#: access/transam/xlog.c:4492
 msgid "undo is not required"
 msgstr "undo n�o � requerido"
 
-#: access/transam/xlog.c:4517
+#: access/transam/xlog.c:4569
 msgid "database system is ready"
 msgstr "sistema de banco de dados est� pronto"
 
-#: access/transam/xlog.c:4556
+#: access/transam/xlog.c:4608
 msgid "invalid primary checkpoint link in control file"
 msgstr "v�nculo de ponto de controle prim�rio inv�lido no arquivo de controle"
 
-#: access/transam/xlog.c:4560
+#: access/transam/xlog.c:4612
 msgid "invalid secondary checkpoint link in control file"
 msgstr ""
 "v�nculo de ponto de controle secund�rio inv�lido no arquivo de controle"
 
-#: access/transam/xlog.c:4564
+#: access/transam/xlog.c:4616
 msgid "invalid checkpoint link in backup_label file"
 msgstr "v�nculo de ponto de controle inv�lido no arquivo backup_label"
 
-#: access/transam/xlog.c:4578
+#: access/transam/xlog.c:4630
 msgid "invalid primary checkpoint record"
 msgstr "registro do ponto de controle prim�rio inv�lido"
 
-#: access/transam/xlog.c:4582
+#: access/transam/xlog.c:4634
 msgid "invalid secondary checkpoint record"
 msgstr "registro do ponto de controle secund�rio inv�lido"
 
-#: access/transam/xlog.c:4586
+#: access/transam/xlog.c:4638
 msgid "invalid checkpoint record"
 msgstr "registro do ponto de controle inv�lido"
 
-#: access/transam/xlog.c:4597
+#: access/transam/xlog.c:4649
 msgid "invalid resource manager ID in primary checkpoint record"
 msgstr ""
 "ID do gerenciador de recursos inv�lido no registro do ponto de controle "
 "prim�rio"
 
-#: access/transam/xlog.c:4601
+#: access/transam/xlog.c:4653
 msgid "invalid resource manager ID in secondary checkpoint record"
 msgstr ""
 "ID do gerenciador de recursos inv�lido no registro do ponto de controle "
 "secund�rio"
 
-#: access/transam/xlog.c:4605
+#: access/transam/xlog.c:4657
 msgid "invalid resource manager ID in checkpoint record"
 msgstr ""
 "ID do gerenciador de recursos inv�lido no registro do ponto de controle"
 
-#: access/transam/xlog.c:4617
+#: access/transam/xlog.c:4669
 msgid "invalid xl_info in primary checkpoint record"
 msgstr "xl_info inv�lido no registro do ponto de controle prim�rio"
 
-#: access/transam/xlog.c:4621
+#: access/transam/xlog.c:4673
 msgid "invalid xl_info in secondary checkpoint record"
 msgstr "xl_info inv�lido no registro do ponto de controle secund�rio"
 
-#: access/transam/xlog.c:4625
+#: access/transam/xlog.c:4677
 msgid "invalid xl_info in checkpoint record"
 msgstr "xl_info inv�lido no registro do ponto de contrle"
 
-#: access/transam/xlog.c:4636
+#: access/transam/xlog.c:4688
 msgid "invalid length of primary checkpoint record"
 msgstr "tamanho do registro do ponto de controle prim�rio inv�lido"
 
-#: access/transam/xlog.c:4640
+#: access/transam/xlog.c:4692
 msgid "invalid length of secondary checkpoint record"
 msgstr "tamanho do registro do ponto de controle secund�rio inv�lido"
 
-#: access/transam/xlog.c:4644
+#: access/transam/xlog.c:4696
 msgid "invalid length of checkpoint record"
 msgstr "tamanho do registro do ponto de controle inv�lido"
 
-#: access/transam/xlog.c:4697
+#: access/transam/xlog.c:4749
 msgid "shutting down"
 msgstr "desligando"
 
-#: access/transam/xlog.c:4706
+#: access/transam/xlog.c:4759
 msgid "database system is shut down"
 msgstr "sistema de banco de dados est� desligado"
 
-#: access/transam/xlog.c:4897
+#: access/transam/xlog.c:4955
 msgid "checkpoint starting"
 msgstr "iniciando ponto de controle"
 
-#: access/transam/xlog.c:4926
+#: access/transam/xlog.c:4985
 msgid ""
 "concurrent transaction log activity while database system is shutting down"
 msgstr ""
 "atividade concorrente no log de transa��o enquanto o sistema de banco de "
 "dados est� sendo desligado"
 
-#: access/transam/xlog.c:4998
+#: access/transam/xlog.c:5057
 #, c-format
 msgid ""
 "checkpoint complete; %d transaction log file(s) added, %d removed, %d "
 "recycled"
 msgstr ""
-"ponto de controle completo; %d arquivo(s) de log de transa��o adicionado(s), "
+"ponto de controle completo; %d arquivo(s) do log de transa��o adicionado(s), "
 "%d removido(s), %d reciclado(s)"
 
-#: access/transam/xlog.c:5058
+#: access/transam/xlog.c:5153
 #, c-format
 msgid "unexpected timeline ID %u (after %u) in checkpoint record"
 msgstr ""
-"ID de linha de tempo %u inesperado (depois %u) no registro do ponto de "
+"ID de linha do tempo %u inesperado (depois %u) no registro do ponto de "
 "controle"
 
-#: access/transam/xlog.c:5081
+#: access/transam/xlog.c:5177
 #, c-format
 msgid "unexpected timeline ID %u (should be %u) in checkpoint record"
 msgstr ""
-"ID de linha de tempo %u inesperado (deve ser %u) no registro do ponto de "
+"ID de linha do tempo %u inesperado (deve ser %u) no registro do ponto de "
 "controle"
 
-#: access/transam/xlog.c:5202 access/transam/xlog.c:5234
+#: access/transam/xlog.c:5311 access/transam/xlog.c:5343
 #, c-format
 msgid "could not fsync log file %u, segment %u: %m"
 msgstr "n�o p�de executar fsync no arquivo de log %u, segmento %u: %m"
 
-#: access/transam/xlog.c:5242
+#: access/transam/xlog.c:5351
 #, c-format
 msgid "could not fdatasync log file %u, segment %u: %m"
 msgstr "n�o p�de executar fdatasync no arquivo de log %u, segmento %u: %m"
 
-#: access/transam/xlog.c:5285 access/transam/xlog.c:5412
+#: access/transam/xlog.c:5394 access/transam/xlog.c:5521
 msgid "must be superuser to run a backup"
 msgstr "deve ser super-usu�rio para fazer uma c�pia de seguran�a"
 
-#: access/transam/xlog.c:5290
+#: access/transam/xlog.c:5399
 msgid "WAL archiving is not active"
 msgstr "arquivamento do WAL n�o est� ativo"
 
-#: access/transam/xlog.c:5291
+#: access/transam/xlog.c:5400
 msgid ""
 "archive_command must be defined before online backups can be made safely."
 msgstr ""
 "archive_command deve ser definido antes que c�pias de seguran�a online "
 "possam ser feitas de maneira segura."
 
-#: access/transam/xlog.c:5346
+#: access/transam/xlog.c:5455
 msgid "a backup is already in progress"
 msgstr "uma c�pia de seguran�a est� em andamento"
 
-#: access/transam/xlog.c:5347
+#: access/transam/xlog.c:5456
 #, c-format
 msgid ""
 "If you're sure there is no backup in progress, remove file \"%s\" and try "
@@ -5831,28 +5626,62 @@ msgstr ""
 "Se voc� tem certeza que n�o h� c�pia de seguran�a em andamento, remova o "
 "arquivo \"%s\" e tente novamente."
 
-#: access/transam/xlog.c:5368 access/transam/xlog.c:5488
+#: access/transam/xlog.c:5477 access/transam/xlog.c:5597
 #, c-format
 msgid "could not write file \"%s\": %m"
 msgstr "n�o p�de escrever no arquivo \"%s\": %m"
 
-#: access/transam/xlog.c:5450
+#: access/transam/xlog.c:5559
 msgid "a backup is not in progress"
 msgstr "n�o h� uma c�pia de seguran�a em andamento"
 
-#: access/transam/xlog.c:5463 access/transam/xlog.c:5584
-#: access/transam/xlog.c:5590 access/transam/xlog.c:5621
-#: access/transam/xlog.c:5627
+#: access/transam/xlog.c:5572 access/transam/xlog.c:5693
+#: access/transam/xlog.c:5699 access/transam/xlog.c:5730
+#: access/transam/xlog.c:5736
 #, c-format
 msgid "invalid data in file \"%s\""
 msgstr "dado inv�lido no arquivo \"%s\""
 
-#: access/nbtree/nbtinsert.c:254
+#: access/transam/varsup.c:69
+#, c-format
+msgid "database is shut down to avoid wraparound data loss in database \"%s\""
+msgstr ""
+"banco de dados est� desligado para evitar perda de dados por reciclagem no "
+"banco de dados \"%s\""
+
+#: access/transam/varsup.c:71
+#, c-format
+msgid "Stop the postmaster and use a standalone backend to VACUUM in \"%s\"."
+msgstr ""
+"Pare o postmaster e utilize um servidor aut�nomo para executar o VACUUM em "
+"\"%s\"."
+
+#: access/transam/varsup.c:75 access/transam/varsup.c:243
+#: commands/vacuum.c:865
+#, c-format
+msgid "database \"%s\" must be vacuumed within %u transactions"
+msgstr "banco de dados \"%s\" deve ser faxinado em %u transa��es"
+
+#: access/transam/varsup.c:78 access/transam/varsup.c:246
+#: commands/vacuum.c:868
+#, c-format
+msgid "To avoid a database shutdown, execute a full-database VACUUM in \"%s\"."
+msgstr ""
+"Para evitar que o banco de dados seja desligado, execute um VACUUM completo "
+"no banco de dados \"%s\"."
+
+#: access/transam/varsup.c:238
+#, c-format
+msgid "transaction ID wrap limit is %u, limited by database \"%s\""
+msgstr ""
+"limite de reciclagem de transa��o � %u, limitado pelo banco de dados \"%s\""
+
+#: access/nbtree/nbtinsert.c:250
 #, c-format
 msgid "duplicate key violates unique constraint \"%s\""
 msgstr "duplicar chave viola a restri��o de unicidade \"%s\""
 
-#: access/nbtree/nbtinsert.c:398 access/nbtree/nbtsort.c:499
+#: access/nbtree/nbtinsert.c:393 access/nbtree/nbtsort.c:499
 #, c-format
 msgid "index row size %lu exceeds btree maximum, %lu"
 msgstr ""
@@ -5870,18 +5699,18 @@ msgstr ""
 "vers�o n�o corresponde no �ndice \"%s\": vers�o do arquivo %d, vers�o do "
 "c�digo %d"
 
-#: storage/ipc/sinval.c:105 storage/lmgr/proc.c:246
-#: postmaster/postmaster.c:1565
+#: storage/ipc/sinval.c:105 storage/lmgr/proc.c:245
+#: postmaster/postmaster.c:1575
 msgid "sorry, too many clients already"
 msgstr "desculpe, muitos clientes conectados"
 
-#: storage/ipc/shmem.c:185 storage/ipc/shmem.c:246 storage/ipc/shmem.c:386
-#: storage/lmgr/lock.c:558 storage/lmgr/lock.c:621 storage/lmgr/proc.c:179
-#: storage/buffer/buf_table.c:93 storage/freespace/freespace.c:1014
+#: storage/ipc/shmem.c:180 storage/ipc/shmem.c:241 storage/ipc/shmem.c:377
+#: storage/lmgr/lock.c:538 storage/lmgr/lock.c:601 storage/lmgr/proc.c:178
+#: storage/buffer/buf_table.c:116 storage/freespace/freespace.c:1042
 msgid "out of shared memory"
 msgstr "sem mem�ria compartilhada"
 
-#: storage/ipc/shmem.c:420
+#: storage/ipc/shmem.c:411
 #, c-format
 msgid "could not allocate shared memory segment \"%s\""
 msgstr "n�o p�de alocar segmento de mem�ria compartilhada \"%s\""
@@ -5902,45 +5731,32 @@ msgstr "Sistema permite %d, n
 msgid "out of file descriptors: %m; release and retry"
 msgstr "sem descritores de arquivo: %m; libere e tente novamente"
 
-#: storage/lmgr/lock.c:559 storage/lmgr/lock.c:622
+#: storage/lmgr/lock.c:539 storage/lmgr/lock.c:602
 msgid "You may need to increase max_locks_per_transaction."
 msgstr "Voc� precisa aumentar max_locks_per_transaction."
 
-#: storage/lmgr/deadlock.c:867
-#, c-format
-msgid "Process %d waits for %s on transaction %u; blocked by process %d."
-msgstr "Processo %d espera por %s na transa��o %u; bloqueado pelo processo %d."
-
-#: storage/lmgr/deadlock.c:877
-#, c-format
-msgid ""
-"Process %d waits for %s on relation %u of database %u; blocked by process %d."
-msgstr ""
-"Processo %d espera por %s na rela��o %u do banco de dados %u; bloqueado pelo "
-"processo %d."
-
-#: storage/lmgr/deadlock.c:887
+#: storage/lmgr/deadlock.c:944
 msgid "deadlock detected"
 msgstr "impasse detectado"
 
-#: storage/page/bufpage.c:135 storage/page/bufpage.c:334
-#: storage/page/bufpage.c:472
+#: storage/page/bufpage.c:135 storage/page/bufpage.c:336
+#: storage/page/bufpage.c:474 storage/page/bufpage.c:603
 #, c-format
 msgid "corrupted page pointers: lower = %u, upper = %u, special = %u"
 msgstr ""
 "ponteiros de p�gina corrompidos: inferior = %u, superior = %u, especial = %u"
 
-#: storage/page/bufpage.c:377
+#: storage/page/bufpage.c:379
 #, c-format
 msgid "corrupted item pointer: %u"
 msgstr "ponteiro de item corrompido: %u"
 
-#: storage/page/bufpage.c:392
+#: storage/page/bufpage.c:394 storage/page/bufpage.c:654
 #, c-format
 msgid "corrupted item lengths: total %u, available space %u"
 msgstr "tamanhos de itens corrompidos: total %u, espa�o livre %u"
 
-#: storage/page/bufpage.c:490
+#: storage/page/bufpage.c:492 storage/page/bufpage.c:627
 #, c-format
 msgid "corrupted item pointer: offset = %u, size = %u"
 msgstr "ponteiro de item corrompido: deslocamento = %u, tamanho = %u"
@@ -5978,7 +5794,7 @@ msgstr "n
 #: storage/smgr/smgr.c:506
 #, c-format
 msgid "could not extend relation %u/%u/%u: %m"
-msgstr "n�o p�de extender rela��o %u/%u/%u: %m"
+msgstr "n�o p�de estender rela��o %u/%u/%u: %m"
 
 #: storage/smgr/smgr.c:510
 msgid "Check free disk space."
@@ -5999,179 +5815,210 @@ msgstr "n
 msgid "could not count blocks of relation %u/%u/%u: %m"
 msgstr "n�o p�de contar blocos da rela��o %u/%u/%u: %m"
 
-#: storage/smgr/smgr.c:615 storage/smgr/smgr.c:899
+#: storage/smgr/smgr.c:621 storage/smgr/smgr.c:905
 #, c-format
 msgid "could not truncate relation %u/%u/%u to %u blocks: %m"
 msgstr "n�o p�de truncar rela��o %u/%u/%u para %u blocos: %m"
 
-#: storage/smgr/smgr.c:672
+#: storage/smgr/smgr.c:678
 #, c-format
 msgid "could not sync relation %u/%u/%u: %m"
 msgstr "n�o p�de sincronizar rela��o %u/%u/%u: %m"
 
-#: storage/buffer/localbuf.c:103
+#: storage/buffer/localbuf.c:139
 msgid "no empty local buffer available"
 msgstr "nenhum buffer local vazio dispon�vel"
 
-#: storage/buffer/bufmgr.c:216
+#: storage/buffer/bufmgr.c:212
 #, c-format
 msgid "invalid page header in block %u of relation \"%s\"; zeroing out page"
 msgstr ""
 "cabe�alho de p�gina inv�lido no bloco %u da rela��o \"%s\"; zerando p�gina"
 
-#: storage/buffer/bufmgr.c:223
+#: storage/buffer/bufmgr.c:219
 #, c-format
 msgid "invalid page header in block %u of relation \"%s\""
 msgstr "cabe�alho de p�gina inv�lido no bloco %u da rela��o \"%s\""
 
-#: storage/buffer/bufmgr.c:2013
+#: storage/buffer/bufmgr.c:2030
 #, c-format
 msgid "could not write block %u of %u/%u/%u"
 msgstr "n�o p�de escrever bloco %u de %u/%u/%u"
 
-#: storage/buffer/bufmgr.c:2018
+#: storage/buffer/bufmgr.c:2035
 msgid "Multiple failures --- write error may be permanent."
 msgstr "Falhas m�ltiplas --- erro de escrita pode ser permanente."
 
-#: storage/buffer/bufmgr.c:2036
+#: storage/buffer/bufmgr.c:2052
 #, c-format
 msgid "writing block %u of relation %u/%u/%u"
 msgstr "escrevendo bloco %u da rela��o %u/%u/%u"
 
-#: storage/freespace/freespace.c:276 storage/freespace/freespace.c:294
-#: storage/freespace/freespace.c:313
+#: storage/freespace/freespace.c:278 storage/freespace/freespace.c:296
+#: storage/freespace/freespace.c:315
 msgid "insufficient shared memory for free space map"
 msgstr "mem�ria compartilhada insuficiente para mapeamento de espa�o livre"
 
-#: storage/freespace/freespace.c:306
+#: storage/freespace/freespace.c:308
 #, c-format
 msgid "max_fsm_pages must exceed max_fsm_relations * %d"
 msgstr "max_fsm_pages deve exceder max_fsm_relations * %d"
 
-#: storage/freespace/freespace.c:341
+#: storage/freespace/freespace.c:343
 msgid "max_fsm_pages is too large"
 msgstr "max_fsm_pages � muito grande"
 
-#: storage/freespace/freespace.c:709
+#: storage/freespace/freespace.c:712
+#, c-format
+msgid "free space map contains %d pages in %d relations"
+msgstr "mapeamento de espa�o livre cont�m %d p�ginas em %d rela��es"
+
+#: storage/freespace/freespace.c:714
+#, c-format
+msgid ""
+"A total of %.0f page slots are in use (including overhead).\n"
+"%.0f page slots are required to track all free space.\n"
+"Current limits are:  %d page slots, %d relations, using %.0f KB."
+msgstr ""
+"Um total de %.0f lacunas de p�gina est�o em uso (incluindo cabe�alho).\n"
+"%.0f lacunas de p�gina s�o requeridas para descobrir todo espa�o livre.\n"
+"Limites atuais s�o:  %d lacunas de p�gina, %d rela��es, utilizando %.0f KB."
+
+#: storage/freespace/freespace.c:731
+#, c-format
+msgid "max_fsm_relations(%d) equals the number of relations checked"
+msgstr "max_fsm_relations(%d) iguala o n�mero de rela��es verificadas"
+
+#: storage/freespace/freespace.c:733
 #, c-format
-msgid "free space map: %d relations, %d pages stored; %.0f total pages needed"
+msgid ""
+"You have >= %d relations.\n"
+"Consider increasing the configuration parameter \"max_fsm_relations\"."
 msgstr ""
-"mapeamento de espa�o livre: %d rela��es, %d p�ginas armazenadas; %.0f "
-"p�ginas exigidas"
+"Voc� tem >= %d rela��es.\n"
+"Considere aumentar o par�metro de configura��o \"max_fsm_relations\"."
 
-#: storage/freespace/freespace.c:711
+#: storage/freespace/freespace.c:738
 #, c-format
-msgid "Allocated FSM size: %d relations + %d pages = %.0f kB shared memory."
+msgid "the number of page slots needed (%.0f) exceeds max_fsm_pages (%d)"
 msgstr ""
-"Tamanho de FSM alocado: %d rela��es + %d p�ginas = %.0f kB mem�ria "
-"compartilhada."
+"o n�mero de lacunas de p�gina necess�rias (%.0f) excede max_fsm_pages (%d)"
+
+#: storage/freespace/freespace.c:740
+#, c-format
+msgid ""
+"Consider increasing the configuration parameter \"max_fsm_relations\"\n"
+"to a value over %.0f."
+msgstr ""
+"Considere aumentar o par�metro de configura��o \"max_fsm_relations\"\n"
+"para um valor superior a %.0f."
 
-#: storage/large_object/inv_api.c:197 storage/large_object/inv_api.c:312
-#: commands/comment.c:1151 catalog/pg_largeobject.c:107
+#: storage/large_object/inv_api.c:196 storage/large_object/inv_api.c:306
+#: commands/comment.c:1127 catalog/pg_largeobject.c:106
 #, c-format
 msgid "large object %u does not exist"
 msgstr "objeto grande %u n�o existe"
 
-#: commands/tablespace.c:150 commands/tablespace.c:158
-#: commands/tablespace.c:164 ../port/copydir.c:47
+#: commands/tablespace.c:149 commands/tablespace.c:157
+#: commands/tablespace.c:163 ../port/copydir.c:47
 #, c-format
 msgid "could not create directory \"%s\": %m"
 msgstr "n�o p�de criar diret�rio \"%s\": %m"
 
-#: commands/tablespace.c:177
+#: commands/tablespace.c:176
 #, c-format
 msgid "could not stat directory \"%s\": %m"
 msgstr "n�o p�de executar stat no diret�rio \"%s\": %m"
 
-#: commands/tablespace.c:186
+#: commands/tablespace.c:185
 #, c-format
 msgid "\"%s\" exists but is not a directory"
 msgstr "\"%s\" existe mas n�o � um diret�rio"
 
-#: commands/tablespace.c:223
+#: commands/tablespace.c:222
 #, c-format
 msgid "permission denied to create tablespace \"%s\""
 msgstr "permiss�o negada ao criar tablespace \"%s\""
 
-#: commands/tablespace.c:225
+#: commands/tablespace.c:224
 msgid "Must be superuser to create a tablespace."
 msgstr "Deve ser super-usu�rio para criar uma tablespace."
 
-#: commands/tablespace.c:244
+#: commands/tablespace.c:243
 msgid "tablespace location may not contain single quotes"
 msgstr "local da tablespace n�o pode conter aspas simples"
 
-#: commands/tablespace.c:254
+#: commands/tablespace.c:253
 msgid "tablespace location must be an absolute path"
 msgstr "local da tablespace deve ser um caminho absoluto"
 
-#: commands/tablespace.c:264
+#: commands/tablespace.c:263
 #, c-format
 msgid "tablespace location \"%s\" is too long"
 msgstr "local da tablespace \"%s\" � muito longo"
 
-#: commands/tablespace.c:274 commands/tablespace.c:766
+#: commands/tablespace.c:273 commands/tablespace.c:763
 #, c-format
 msgid "unacceptable tablespace name \"%s\""
 msgstr "nome de tablespace \"%s\" inaceit�vel"
 
-#: commands/tablespace.c:276 commands/tablespace.c:767
+#: commands/tablespace.c:275 commands/tablespace.c:764
 msgid "The prefix \"pg_\" is reserved for system tablespaces."
 msgstr "O prefixo \"pg_\" � reservado para tablespaces do sistema."
 
-#: commands/tablespace.c:286 commands/tablespace.c:779
+#: commands/tablespace.c:285 commands/tablespace.c:776
 #, c-format
 msgid "tablespace \"%s\" already exists"
 msgstr "tablespace \"%s\" j� existe"
 
-#: commands/tablespace.c:321 commands/tablespace.c:1033
+#: commands/tablespace.c:320 commands/tablespace.c:1030
 #, c-format
 msgid "could not set permissions on directory \"%s\": %m"
 msgstr "n�o p�de definir permiss�es do diret�rio \"%s\": %m"
 
-#: commands/tablespace.c:330
+#: commands/tablespace.c:329
 #, c-format
 msgid "directory \"%s\" is not empty"
 msgstr "diret�rio \"%s\" n�o est� vazio"
 
-#: commands/tablespace.c:351 commands/tablespace.c:1048
+#: commands/tablespace.c:349 commands/tablespace.c:1044
 #, c-format
 msgid "could not create symbolic link \"%s\": %m"
 msgstr "n�o p�de criar link simb�lico \"%s\": %m"
 
-#: commands/tablespace.c:382 commands/tablespace.c:479
+#: commands/tablespace.c:380 commands/tablespace.c:477
 msgid "tablespaces are not supported on this platform"
-msgstr "tablespaces n�o s�o suportados nessa plataforma"
+msgstr "tablespaces n�o s�o suportadas nessa plataforma"
 
-#: commands/tablespace.c:456
+#: commands/tablespace.c:454
 #, c-format
 msgid "tablespace \"%s\" is not empty"
 msgstr "tablespace \"%s\" n�o est� vazia"
 
-#: commands/tablespace.c:555
+#: commands/tablespace.c:552
 #, c-format
 msgid "could not delete directory \"%s\": %m"
 msgstr "n�o p�de apagar diret�rio \"%s\": %m"
 
-#: commands/tablespace.c:606
+#: commands/tablespace.c:603
 #, c-format
 msgid "could not remove directory \"%s\": %m"
 msgstr "n�o p�de remover diret�rio \"%s\": %m"
 
-#: commands/tablespace.c:614
+#: commands/tablespace.c:611
 #, c-format
 msgid "could not remove symbolic link \"%s\": %m"
 msgstr "n�o p�de remover link simb�lico \"%s\": %m"
 
-#: commands/tablespace.c:839 commands/functioncmds.c:773
-#: commands/dbcommands.c:890 commands/conversioncmds.c:213
-#: commands/typecmds.c:2103 commands/opclasscmds.c:954
-#: commands/operatorcmds.c:303 commands/tablecmds.c:5228
-#: commands/aggregatecmds.c:335 commands/schemacmds.c:319
+#: commands/tablespace.c:836 commands/functioncmds.c:899
+#: commands/dbcommands.c:897 commands/conversioncmds.c:212
+#: commands/typecmds.c:2072 commands/opclasscmds.c:954
+#: commands/operatorcmds.c:302 commands/tablecmds.c:5312
+#: commands/aggregatecmds.c:338 commands/schemacmds.c:318
 msgid "must be superuser to change owner"
 msgstr "deve ser super-usu�rio para mudar dono"
 
-#: commands/tablespace.c:1061
+#: commands/tablespace.c:1057
 #, c-format
 msgid "tablespace %u is not empty"
 msgstr "tablespace %u n�o est� vazia"
@@ -6186,8 +6033,8 @@ msgid "DECLARE CURSOR may not specify INTO"
 msgstr "DECLARE CURSOR n�o pode especificar INTO"
 
 #: commands/portalcmds.c:93
-msgid "DECLARE CURSOR ... FOR UPDATE is not supported"
-msgstr "DECLARE CURSOR ... FOR UPDATE n�o � suportado"
+msgid "DECLARE CURSOR ... FOR UPDATE/SHARE is not supported"
+msgstr "DECLARE CURSOR ... FOR UPDATE/SHARE n�o � suportado"
 
 #: commands/portalcmds.c:94
 msgid "Cursors must be READ ONLY."
@@ -6198,7 +6045,7 @@ msgstr "Cursores devem ser SOMENTE LEITURA."
 msgid "cursor \"%s\" does not exist"
 msgstr "cursor \"%s\" n�o existe"
 
-#: commands/portalcmds.c:404
+#: commands/portalcmds.c:407
 msgid "could not reposition held cursor"
 msgstr "n�o p�de reposicionar cursor aberto"
 
@@ -6219,105 +6066,105 @@ msgstr "especifica
 msgid "invalid interval value for time zone: month not allowed"
 msgstr "valor de intervalo inv�lido para zona hor�ria: m�s n�o � permitido"
 
-#: commands/variable.c:403
+#: commands/variable.c:342
 #, c-format
 msgid "unrecognized time zone name: \"%s\""
 msgstr "nome da zona hor�ria desconhecido: \"%s\""
 
-#: commands/variable.c:411
+#: commands/variable.c:351
 #, c-format
 msgid "time zone \"%s\" appears to use leap seconds"
 msgstr "zona hor�ria \"%s\" parece utilizar segundos intercalados"
 
-#: commands/variable.c:413
+#: commands/variable.c:353
 msgid "PostgreSQL does not support leap seconds."
 msgstr "PostgreSQL n�o suporta segundos intercalados."
 
-#: commands/variable.c:483
+#: commands/variable.c:429
 msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query"
 msgstr ""
 "SET TRANSACTION ISOLATION LEVEL deve ser chamado antes de qualquer consulta"
 
-#: commands/variable.c:493
+#: commands/variable.c:439
 msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction"
 msgstr ""
 "SET TRANSACTION ISOLATION LEVEL n�o deve ser chamado em uma subtransa��o"
 
-#: commands/trigger.c:134
+#: commands/trigger.c:137
 #, c-format
 msgid "could not determine referenced table for constraint \"%s\""
 msgstr "n�o p�de determinar tabela referenciada na restri��o \"%s\""
 
-#: commands/trigger.c:219
+#: commands/trigger.c:222
 msgid "multiple INSERT events specified"
 msgstr "m�ltiplos eventos INSERT especificados"
 
-#: commands/trigger.c:226
+#: commands/trigger.c:229
 msgid "multiple DELETE events specified"
 msgstr "m�ltiplos eventos DELETE especificados"
 
-#: commands/trigger.c:233
+#: commands/trigger.c:236
 msgid "multiple UPDATE events specified"
 msgstr "m�ltiplos eventos UPDATE especificados"
 
-#: commands/trigger.c:266 commands/trigger.c:654
+#: commands/trigger.c:269 commands/trigger.c:657
 #, c-format
 msgid "trigger \"%s\" for relation \"%s\" already exists"
 msgstr "gatilho \"%s\" para rela��o \"%s\" j� existe"
 
-#: commands/trigger.c:287
+#: commands/trigger.c:289
 #, c-format
 msgid "changing return type of function %s from \"opaque\" to \"trigger\""
 msgstr "alterando tipo retornado pela fun��o %s de \"opaque\" para \"trigger\""
 
-#: commands/trigger.c:294
+#: commands/trigger.c:296
 #, c-format
 msgid "function %s must return type \"trigger\""
 msgstr "fun��o %s deve retornar tipo \"trigger\""
 
-#: commands/trigger.c:483 commands/trigger.c:697 commands/comment.c:836
+#: commands/trigger.c:486 commands/trigger.c:700 commands/comment.c:826
 #, c-format
 msgid "trigger \"%s\" for table \"%s\" does not exist"
 msgstr "gatilho \"%s\" na tabela \"%s\" n�o existe"
 
-#: commands/trigger.c:1160
+#: commands/trigger.c:1195
 #, c-format
 msgid "trigger function %u returned null value"
 msgstr "fun��o de gatilho %u retornou valor nulo"
 
-#: commands/trigger.c:1214 commands/trigger.c:1331 commands/trigger.c:1464
+#: commands/trigger.c:1253 commands/trigger.c:1364 commands/trigger.c:1491
 msgid "BEFORE STATEMENT trigger cannot return a value"
 msgstr "gatilho BEFORE STATEMENT n�o pode retornar um valor"
 
-#: commands/trigger.c:1593 executor/execMain.c:1151 executor/execMain.c:1457
-#: executor/execMain.c:1598
+#: commands/trigger.c:1617 executor/execMain.c:1183 executor/execMain.c:1480
+#: executor/execMain.c:1622
 msgid "could not serialize access due to concurrent update"
 msgstr "n�o p�de serializar acesso devido a uma atualiza��o concorrente"
 
-#: commands/trigger.c:2731
+#: commands/trigger.c:2820
 msgid "unnamed constraints cannot be set explicitly"
 msgstr "restri��es sem nome n�o podem ser definidas explicitamente"
 
-#: commands/trigger.c:2770
+#: commands/trigger.c:2859
 #, c-format
 msgid "constraint \"%s\" is not deferrable"
 msgstr "restri��o \"%s\" n�o � posterg�vel"
 
-#: commands/trigger.c:2785 commands/tablecmds.c:4574
+#: commands/trigger.c:2874 commands/tablecmds.c:4659
 #, c-format
 msgid "constraint \"%s\" does not exist"
 msgstr "restri��o \"%s\" n�o existe"
 
-#: commands/comment.c:435
+#: commands/comment.c:440
 msgid "database name may not be qualified"
 msgstr "nome de banco de dados n�o pode ser qualificado"
 
-#: commands/comment.c:468
+#: commands/comment.c:473
 msgid "database comments may only be applied to the current database"
 msgstr ""
 "coment�rios no banco de dados s� podem ser aplicados ao banco de dados atual"
 
-#: commands/comment.c:500 commands/schemacmds.c:172
+#: commands/comment.c:504 commands/schemacmds.c:171
 msgid "schema name may not be qualified"
 msgstr "nome do esquema n�o pode ser qualificado"
 
@@ -6335,67 +6182,67 @@ msgstr "h
 msgid "Specify a relation name as well as a rule name."
 msgstr "Especifique um nome de rela��o bem como um nome de regra."
 
-#: commands/comment.c:916
+#: commands/comment.c:905
 #, c-format
 msgid "table \"%s\" has multiple constraints named \"%s\""
 msgstr "tabela \"%s\" tem m�ltiplas restri��es com nome \"%s\""
 
-#: commands/comment.c:928
+#: commands/comment.c:917
 #, c-format
 msgid "constraint \"%s\" for table \"%s\" does not exist"
 msgstr "restri��o \"%s\" na tabela \"%s\" n�o existe"
 
-#: commands/comment.c:958 commands/conversioncmds.c:109
-#: commands/conversioncmds.c:133 commands/conversioncmds.c:192
-#: catalog/pg_conversion.c:307
+#: commands/comment.c:946 commands/conversioncmds.c:108
+#: commands/conversioncmds.c:132 commands/conversioncmds.c:191
+#: catalog/pg_conversion.c:306
 #, c-format
 msgid "conversion \"%s\" does not exist"
 msgstr "convers�o \"%s\" n�o existe"
 
-#: commands/comment.c:992
+#: commands/comment.c:976
 msgid "language name may not be qualified"
 msgstr "nome de linguagem n�o pode ser qualificado"
 
-#: commands/comment.c:1007
+#: commands/comment.c:991
 msgid "must be superuser to comment on procedural language"
 msgstr ""
 "deve ser super-usu�rio para adicionar coment�rio sobre linguagem procedural"
 
-#: commands/comment.c:1048 commands/opclasscmds.c:108
+#: commands/comment.c:1028 commands/opclasscmds.c:108
 #: commands/opclasscmds.c:648 commands/opclasscmds.c:800
-#: commands/opclasscmds.c:900 commands/indexcmds.c:230
+#: commands/opclasscmds.c:900 commands/indexcmds.c:233
 #, c-format
 msgid "access method \"%s\" does not exist"
 msgstr "m�todo de acesso \"%s\" n�o existe"
 
-#: commands/comment.c:1077 commands/comment.c:1087 commands/opclasscmds.c:677
+#: commands/comment.c:1057 commands/comment.c:1067 commands/opclasscmds.c:677
 #: commands/opclasscmds.c:687 commands/opclasscmds.c:822
 #: commands/opclasscmds.c:833 commands/opclasscmds.c:922
-#: commands/opclasscmds.c:932 commands/indexcmds.c:614
-#: commands/indexcmds.c:624
+#: commands/opclasscmds.c:932 commands/indexcmds.c:617
+#: commands/indexcmds.c:627
 #, c-format
 msgid "operator class \"%s\" does not exist for access method \"%s\""
 msgstr "classe de operadores \"%s\" n�o existe para m�todo de acesso \"%s\""
 
-#: commands/comment.c:1192 commands/functioncmds.c:908
-#: commands/functioncmds.c:1156
+#: commands/comment.c:1164 commands/functioncmds.c:1101
+#: commands/functioncmds.c:1349
 #, c-format
 msgid "source data type %s does not exist"
 msgstr "tipo de dado fonte %s n�o existe"
 
-#: commands/comment.c:1199 commands/functioncmds.c:915
-#: commands/functioncmds.c:1163
+#: commands/comment.c:1171 commands/functioncmds.c:1108
+#: commands/functioncmds.c:1356
 #, c-format
 msgid "target data type %s does not exist"
 msgstr "tipo de dado alvo %s n�o existe"
 
-#: commands/comment.c:1209 commands/functioncmds.c:1173
+#: commands/comment.c:1181 commands/functioncmds.c:1366
 #, c-format
 msgid "cast from type %s to type %s does not exist"
 msgstr "convers�o do tipo %s para tipo %s n�o existe"
 
-#: commands/comment.c:1221 commands/functioncmds.c:948
-#: commands/functioncmds.c:1182
+#: commands/comment.c:1193 commands/functioncmds.c:1141
+#: commands/functioncmds.c:1375
 #, c-format
 msgid "must be owner of type %s or type %s"
 msgstr "deve ser dono do tipo %s ou tipo %s"
@@ -6419,229 +6266,232 @@ msgstr "tipo \"%s\" ainda n
 msgid "Creating a shell type definition."
 msgstr "Criando uma defini��o de tipo indefinido."
 
-#: commands/functioncmds.c:154 parser/parse_func.c:1388 catalog/pg_proc.c:100
-#, c-format
-msgid "functions cannot have more than %d arguments"
-msgstr "fun��es n�o podem ter mais do que %d argumentos"
-
-#: commands/functioncmds.c:166
+#: commands/functioncmds.c:181
 #, c-format
 msgid "SQL function cannot accept shell type %s"
 msgstr "fun��o SQL n�o pode aceitar tipo indefinido %s"
 
-#: commands/functioncmds.c:171
+#: commands/functioncmds.c:186
 #, c-format
 msgid "argument type %s is only a shell"
 msgstr "tipo de argumento %s � indefinido"
 
-#: commands/functioncmds.c:179 parser/parse_oper.c:113 parser/parse_oper.c:124
+#: commands/functioncmds.c:194 parser/parse_oper.c:113 parser/parse_oper.c:124
 #, c-format
 msgid "type %s does not exist"
 msgstr "tipo %s n�o existe"
 
-#: commands/functioncmds.c:186
+#: commands/functioncmds.c:201
 msgid "functions cannot accept set arguments"
 msgstr "fun��es n�o podem aceitar conjunto de argumentos"
 
-#: commands/functioncmds.c:228 commands/functioncmds.c:236
-#: commands/functioncmds.c:244 commands/functioncmds.c:252
-#: commands/functioncmds.c:260 commands/dbcommands.c:108
-#: commands/dbcommands.c:116 commands/dbcommands.c:124
-#: commands/dbcommands.c:132 commands/copy.c:721 commands/copy.c:729
+#: commands/functioncmds.c:306 commands/functioncmds.c:356
+#: commands/functioncmds.c:364 commands/dbcommands.c:116
+#: commands/dbcommands.c:124 commands/dbcommands.c:132
+#: commands/dbcommands.c:140 commands/copy.c:721 commands/copy.c:729
 #: commands/copy.c:737 commands/copy.c:745 commands/copy.c:753
 #: commands/copy.c:761 commands/copy.c:769 commands/copy.c:777
-#: commands/copy.c:785 commands/user.c:576 commands/user.c:588
-#: commands/user.c:596 commands/user.c:604 commands/user.c:612
-#: commands/user.c:620 commands/user.c:826 commands/user.c:838
-#: commands/user.c:846 commands/user.c:854 commands/user.c:1356
-#: commands/user.c:1364 commands/sequence.c:896 commands/sequence.c:909
-#: commands/sequence.c:917 commands/sequence.c:925 commands/sequence.c:933
-#: commands/sequence.c:941
+#: commands/copy.c:785 commands/copy.c:793 commands/user.c:89
+#: commands/user.c:101 commands/user.c:109 commands/user.c:117
+#: commands/user.c:125 commands/user.c:133 commands/user.c:339
+#: commands/user.c:351 commands/user.c:359 commands/user.c:367
+#: commands/user.c:871 commands/user.c:879 commands/sequence.c:896
+#: commands/sequence.c:909 commands/sequence.c:917 commands/sequence.c:925
+#: commands/sequence.c:933 commands/sequence.c:941
 msgid "conflicting or redundant options"
 msgstr "op��es conflitantes ou redundantes"
 
-#: commands/functioncmds.c:273
+#: commands/functioncmds.c:386
 msgid "no function body specified"
 msgstr "corpo da fun��o n�o foi especificado"
 
-#: commands/functioncmds.c:280
+#: commands/functioncmds.c:393
 msgid "no language specified"
 msgstr "nenhuma linguagem foi especificada"
 
-#: commands/functioncmds.c:342
+#: commands/functioncmds.c:439
 #, c-format
 msgid "unrecognized function attribute \"%s\" ignored"
 msgstr "atributo de fun��o desconhecido \"%s\" foi ignorado"
 
-#: commands/functioncmds.c:386
+#: commands/functioncmds.c:481
 #, c-format
 msgid "only one AS item needed for language \"%s\""
 msgstr "somente um item AS � necess�rio para linguagem \"%s\""
 
-#: commands/functioncmds.c:458
+#: commands/functioncmds.c:555
 msgid "You need to use \"createlang\" to load the language into the database."
 msgstr ""
 "Voc� precisa usar \"createlang\" para carregar uma linguagem no banco de "
 "dados."
 
-#: commands/functioncmds.c:578 commands/functioncmds.c:684
-#: commands/functioncmds.c:751
+#: commands/functioncmds.c:601
+#, c-format
+msgid "function result type must be %s because of OUT parameters"
+msgstr "tipo de resultado da fun��o deve ser %s por causa dos par�metros OUT"
+
+#: commands/functioncmds.c:614
+msgid "function result type must be specified"
+msgstr "tipo de resultado da fun��o deve ser especificado"
+
+#: commands/functioncmds.c:704 commands/functioncmds.c:810
+#: commands/functioncmds.c:877 commands/functioncmds.c:973
 #, c-format
 msgid "\"%s\" is an aggregate function"
 msgstr "\"%s\" � uma fun��o de agrega��o"
 
-#: commands/functioncmds.c:580
+#: commands/functioncmds.c:706
 msgid "Use DROP AGGREGATE to drop aggregate functions."
 msgstr "Utilize DROP AGGREGATE para remover fun��es de agrega��o."
 
-#: commands/functioncmds.c:587
+#: commands/functioncmds.c:713
 #, c-format
 msgid "removing built-in function \"%s\""
 msgstr "removendo fun��o embutida \"%s\""
 
-#: commands/functioncmds.c:686
+#: commands/functioncmds.c:812
 msgid "Use ALTER AGGREGATE to rename aggregate functions."
 msgstr "Utilize ALTER AGGREGATE para renomear fun��es de agrega��o."
 
-#: commands/functioncmds.c:699 commands/aggregatecmds.c:264
+#: commands/functioncmds.c:825 commands/aggregatecmds.c:267
 #, c-format
 msgid "function %s already exists in schema \"%s\""
 msgstr "fun��o %s j� existe no esquema \"%s\""
 
-#: commands/functioncmds.c:753
+#: commands/functioncmds.c:879
 msgid "Use ALTER AGGREGATE to change owner of aggregate functions."
 msgstr "Utilize ALTER AGGREGATE para mudar o dono das fun��es de agrega��o."
 
-#: commands/functioncmds.c:922
+#: commands/functioncmds.c:1115
 #, c-format
 msgid "source data type %s is only a shell"
 msgstr "tipo de dado fonte %s � indefinido"
 
-#: commands/functioncmds.c:928
+#: commands/functioncmds.c:1121
 #, c-format
 msgid "target data type %s is only a shell"
 msgstr "tipo de dado alvo %s � indefinido"
 
-#: commands/functioncmds.c:934
+#: commands/functioncmds.c:1127
 #, c-format
 msgid "source data type %s is a pseudo-type"
 msgstr "tipo de dado fonte %s � um pseudo-tipo"
 
-#: commands/functioncmds.c:940
+#: commands/functioncmds.c:1133
 #, c-format
 msgid "target data type %s is a pseudo-type"
 msgstr "tipo de dado alvo %s � um pseudo-tipo"
 
-#: commands/functioncmds.c:971
+#: commands/functioncmds.c:1164
 msgid "cast function must take one to three arguments"
 msgstr "fun��o de convers�o deve ter de um a tr�s argumentos"
 
-#: commands/functioncmds.c:975
+#: commands/functioncmds.c:1168
 msgid "argument of cast function must match source data type"
 msgstr ""
 "argumento da fun��o de convers�o deve corresponder com tipo de dado fonte"
 
-#: commands/functioncmds.c:979
+#: commands/functioncmds.c:1172
 msgid "second argument of cast function must be type integer"
 msgstr "segundo argumento da fun��o de convers�o deve ter tipo integer"
 
-#: commands/functioncmds.c:983
+#: commands/functioncmds.c:1176
 msgid "third argument of cast function must be type boolean"
 msgstr "terceiro argumento da fun��o de convers�o deve ter tipo boolean"
 
-#: commands/functioncmds.c:987
+#: commands/functioncmds.c:1180
 msgid "return data type of cast function must match target data type"
 msgstr ""
 "tipo de dado de retorno da fun��o de convers�o deve corresponder com tipo de "
 "dado alvo"
 
-#: commands/functioncmds.c:998
+#: commands/functioncmds.c:1191
 msgid "cast function must not be volatile"
 msgstr "fun��o de convers�o n�o deve ser vol�til"
 
-#: commands/functioncmds.c:1003
+#: commands/functioncmds.c:1196
 msgid "cast function must not be an aggregate function"
 msgstr "fun��o de convers�o n�o deve ser uma fun��o de agrega��o"
 
-#: commands/functioncmds.c:1007
+#: commands/functioncmds.c:1200
 msgid "cast function must not return a set"
 msgstr "fun��o de convers�o n�o deve retornar um conjunto"
 
-#: commands/functioncmds.c:1031
+#: commands/functioncmds.c:1224
 msgid "must be superuser to create a cast WITHOUT FUNCTION"
 msgstr "deve ser super-usu�rio para criar uma convers�o WITHOUT FUNCTION"
 
-#: commands/functioncmds.c:1046
+#: commands/functioncmds.c:1239
 msgid "source and target data types are not physically compatible"
 msgstr "tipos de dado fonte e alvo n�o s�o fisicamente compat�veis"
 
-#: commands/functioncmds.c:1056
+#: commands/functioncmds.c:1249
 msgid "source data type and target data type are the same"
 msgstr "tipo de dado fonte e tipo de dado alvo s�o o mesmo"
 
-#: commands/functioncmds.c:1090
+#: commands/functioncmds.c:1283
 #, c-format
 msgid "cast from type %s to type %s already exists"
 msgstr "convers�o do tipo %s para tipo %s j� existe"
 
-#: commands/dbcommands.c:139
+#: commands/dbcommands.c:147
 msgid "LOCATION is not supported anymore"
 msgstr "LOCATION n�o � mais suportado"
 
-#: commands/dbcommands.c:140
+#: commands/dbcommands.c:148
 msgid "Consider using tablespaces instead."
 msgstr "Considere utilizar tablespaces."
 
-#: commands/dbcommands.c:163
+#: commands/dbcommands.c:171
 #, c-format
 msgid "%d is not a valid encoding code"
 msgstr "%d n�o � um c�digo de codifica��o v�lido"
 
-#: commands/dbcommands.c:172
+#: commands/dbcommands.c:180
 #, c-format
 msgid "%s is not a valid encoding name"
 msgstr "%s n�o � um nome de codifica��o v�lido"
 
-#: commands/dbcommands.c:193
+#: commands/dbcommands.c:201
 msgid "permission denied to create database"
 msgstr "permiss�o negada ao criar banco de dados"
 
-#: commands/dbcommands.c:202
+#: commands/dbcommands.c:210
 msgid "must be superuser to create database for another user"
 msgstr "deve ser super-usu�rio para criar banco de dados para outro usu�rio"
 
-#: commands/dbcommands.c:216 commands/dbcommands.c:458
-#: commands/dbcommands.c:712
+#: commands/dbcommands.c:225 commands/dbcommands.c:472
+#: commands/dbcommands.c:724
 #, c-format
 msgid "database \"%s\" already exists"
 msgstr "banco de dados \"%s\" j� existe"
 
-#: commands/dbcommands.c:229
+#: commands/dbcommands.c:238
 #, c-format
 msgid "template database \"%s\" does not exist"
 msgstr "banco de dados modelo \"%s\" n�o existe"
 
-#: commands/dbcommands.c:240
+#: commands/dbcommands.c:249
 #, c-format
 msgid "permission denied to copy database \"%s\""
 msgstr "permiss�o negada ao copiar banco de dados \"%s\"'"
 
-#: commands/dbcommands.c:253
+#: commands/dbcommands.c:262
 #, c-format
 msgid "source database \"%s\" is being accessed by other users"
 msgstr "banco de dados fonte \"%s\" est� sendo acessado por outros usu�rios"
 
-#: commands/dbcommands.c:264
+#: commands/dbcommands.c:273
 #, c-format
 msgid "invalid server encoding %d"
 msgstr "codifica��o do servidor %d inv�lida"
 
-#: commands/dbcommands.c:310
+#: commands/dbcommands.c:319
 #, c-format
 msgid "cannot assign new default tablespace \"%s\""
 msgstr "n�o pode atribuir nova tablespace padr�o \"%s\""
 
-#: commands/dbcommands.c:312
+#: commands/dbcommands.c:321
 #, c-format
 msgid ""
 "There is a conflict because database \"%s\" already has some tables in this "
@@ -6650,65 +6500,69 @@ msgstr ""
 "H� um conflito porque o banco de dados \"%s\" j� tem algumas tabelas nesta "
 "tablespace."
 
-#: commands/dbcommands.c:382 commands/dbcommands.c:404
-#: commands/dbcommands.c:414 commands/dbcommands.c:1226
-#: commands/dbcommands.c:1234
+#: commands/dbcommands.c:401 commands/dbcommands.c:423
+#: commands/dbcommands.c:433 commands/dbcommands.c:1230
+#: commands/dbcommands.c:1238 commands/dbcommands.c:1306
+#: commands/dbcommands.c:1314
 msgid "could not initialize database directory"
 msgstr "n�o p�de inicializar diret�rio do banco de dados"
 
-#: commands/dbcommands.c:383
+#: commands/dbcommands.c:402
 #, c-format
 msgid "Directory \"%s\" already exists."
 msgstr "Diret�rio \"%s\" j� existe."
 
-#: commands/dbcommands.c:405 commands/dbcommands.c:1227
+#: commands/dbcommands.c:424 commands/dbcommands.c:1231
+#: commands/dbcommands.c:1307
 #, c-format
 msgid "Failing system command was: %s"
 msgstr "Comando do sistema que falhou foi: %s"
 
-#: commands/dbcommands.c:406 commands/dbcommands.c:1228
+#: commands/dbcommands.c:425 commands/dbcommands.c:1232
+#: commands/dbcommands.c:1308
 msgid "Look in the postmaster's stderr log for more information."
 msgstr ""
 "Veja no log da sa�da de erro padr�o do postmaster para obter mais informa��o."
 
-#: commands/dbcommands.c:533
+#: commands/dbcommands.c:545
 msgid "cannot drop the currently open database"
 msgstr "n�o pode remover banco de dados que se encontra aberto"
 
-#: commands/dbcommands.c:564
+#: commands/dbcommands.c:579
 msgid "cannot drop a template database"
 msgstr "n�o pode remover banco de dados modelo"
 
-#: commands/dbcommands.c:572 commands/dbcommands.c:699
+#: commands/dbcommands.c:587 commands/dbcommands.c:711
 #, c-format
 msgid "database \"%s\" is being accessed by other users"
 msgstr "banco de dados \"%s\" est� sendo acessado por outros usu�rios"
 
-#: commands/dbcommands.c:690
+#: commands/dbcommands.c:702
 msgid "current database may not be renamed"
 msgstr "banco de dados atual n�o pode ser renomeado"
 
-#: commands/dbcommands.c:724
+#: commands/dbcommands.c:736
 msgid "permission denied to rename database"
 msgstr "permiss�o negada ao renomear banco de dados"
 
-#: commands/dbcommands.c:1063 commands/dbcommands.c:1200
-#: commands/dbcommands.c:1250
+#: commands/dbcommands.c:1066 commands/dbcommands.c:1204
+#: commands/dbcommands.c:1257 commands/dbcommands.c:1280
+#: commands/dbcommands.c:1330
 #, c-format
 msgid "could not remove database directory \"%s\""
 msgstr "n�o p�de remover diret�rio do banco de dados \"%s\""
 
-#: commands/conversioncmds.c:66
+#: commands/conversioncmds.c:65
 #, c-format
 msgid "source encoding \"%s\" does not exist"
 msgstr "codifica��o de origem \"%s\" n�o existe"
 
-#: commands/conversioncmds.c:73
+#: commands/conversioncmds.c:72
 #, c-format
 msgid "destination encoding \"%s\" does not exist"
 msgstr "codifica��o de destino \"%s\" n�o existe"
 
-#: commands/conversioncmds.c:151
+#: commands/conversioncmds.c:150
 #, c-format
 msgid "conversion \"%s\" already exists in schema \"%s\""
 msgstr "convers�o \"%s\" j� existe no esquema \"%s\""
@@ -6735,80 +6589,84 @@ msgstr "comando preparado \"%s\" j
 msgid "prepared statement \"%s\" does not exist"
 msgstr "comando preparado \"%s\" n�o existe"
 
-#: commands/copy.c:205 commands/copy.c:217 commands/copy.c:250
-#: commands/copy.c:260
+#: commands/copy.c:204 commands/copy.c:216 commands/copy.c:249
+#: commands/copy.c:259
 msgid "COPY BINARY is not supported to stdout or from stdin"
 msgstr "COPY BINARY n�o � suportado para sa�da padr�o ou da entrada padr�o"
 
-#: commands/copy.c:313
+#: commands/copy.c:312
 #, c-format
 msgid "could not write to COPY file: %m"
 msgstr "n�o p�de escrever em arquivo COPY: %m"
 
-#: commands/copy.c:321
+#: commands/copy.c:320
 msgid "connection lost during COPY to stdout"
 msgstr "conex�o perdida durante COPY para sa�da padr�o"
 
-#: commands/copy.c:438
+#: commands/copy.c:437
 #, c-format
 msgid "COPY from stdin failed: %s"
 msgstr "COPY da entrada padr�o falhou: %s"
 
-#: commands/copy.c:454
+#: commands/copy.c:453
 #, c-format
 msgid "unexpected message type 0x%02X during COPY from stdin"
 msgstr "tipo de mensagem inesperada 0x%02X durante COPY da entrada padr�o"
 
-#: commands/copy.c:796
+#: commands/copy.c:804
 msgid "cannot specify DELIMITER in BINARY mode"
 msgstr "n�o pode especificar DELIMITER no modo BINARY"
 
-#: commands/copy.c:801
+#: commands/copy.c:809
 msgid "cannot specify CSV in BINARY mode"
 msgstr "n�o pode especificar CSV no modo BINARY"
 
-#: commands/copy.c:806
+#: commands/copy.c:814
 msgid "cannot specify NULL in BINARY mode"
 msgstr "n�o pode especificar NULL no modo BINARY"
 
-#: commands/copy.c:829
+#: commands/copy.c:835
 msgid "COPY delimiter must be a single character"
 msgstr "delimitador do COPY deve ter um caracter"
 
-#: commands/copy.c:837
+#: commands/copy.c:841
+msgid "COPY HEADER available only in CSV mode"
+msgstr "COPY HEADER s� est� dispon�vel no modo CSV"
+
+#: commands/copy.c:847
 msgid "COPY quote available only in CSV mode"
 msgstr "delimitador de dados do COPY s� est� dispon�vel no modo CSV"
 
-#: commands/copy.c:842
+#: commands/copy.c:852
 msgid "COPY quote must be a single character"
 msgstr "delimitador de dados do COPY deve ter um caracter"
 
-#: commands/copy.c:850
+#: commands/copy.c:858
 msgid "COPY escape available only in CSV mode"
 msgstr "escape do COPY s� est� dispon�vel no modo CSV"
 
-#: commands/copy.c:855
+#: commands/copy.c:863
 msgid "COPY escape must be a single character"
 msgstr "escape do COPY deve ter um caracter"
 
-#: commands/copy.c:863
+#: commands/copy.c:869
 msgid "COPY force quote available only in CSV mode"
 msgstr "op��o force quote do COPY somente est� dispon�vel no modo CSV"
 
-#: commands/copy.c:867
+#: commands/copy.c:873
 msgid "COPY force quote only available using COPY TO"
 msgstr "op��o force quote do COPY somente est� dispon�vel ao utilizar COPY TO"
 
-#: commands/copy.c:875
+#: commands/copy.c:879
 msgid "COPY force not null available only in CSV mode"
 msgstr "op��o force not null do COPY somente est� dispon�vel no modo CSV"
 
-#: commands/copy.c:879
+#: commands/copy.c:883
 msgid "COPY force not null only available using COPY FROM"
 msgstr ""
 "op��o force not null do COPY somente est� dispon�vel ao utilizar COPY FROM"
 
-#: commands/copy.c:887
+#: commands/copy.c:889
 msgid "COPY delimiter must not appear in the NULL specification"
 msgstr "delimitador do COPY n�o deve aparecer em uma especifica��o NULL"
 
@@ -6817,12 +6675,12 @@ msgid "CSV quote character must not appear in the NULL specification"
 msgstr ""
 "caracter delimitador de dados do CSV n�o deve aparecer na especifica��o NULL"
 
-#: commands/copy.c:917
+#: commands/copy.c:915
 msgid "must be superuser to COPY to or from a file"
 msgstr ""
 "deve ser super-usu�rio para utilizar COPY para ou a partir de um arquivo"
 
-#: commands/copy.c:918
+#: commands/copy.c:916
 msgid ""
 "Anyone can COPY to stdout or from stdin. psql's \\copy command also works "
 "for anyone."
@@ -6830,86 +6688,86 @@ msgstr ""
 "Qualquer um pode utilizar COPY para sa�da padr�o ou da entrada padr�o. "
 "comando \\copy do psql tamb�m funciona para qualquer um."
 
-#: commands/copy.c:927
+#: commands/copy.c:923
 #, c-format
 msgid "table \"%s\" does not have OIDs"
 msgstr "tabela \"%s\" n�o tem OIDs"
 
-#: commands/copy.c:953
+#: commands/copy.c:945
 #, c-format
 msgid "FORCE QUOTE column \"%s\" not referenced by COPY"
 msgstr "coluna do tipo FORCE QUOTE \"%s\" n�o referenciada pelo COPY"
 
-#: commands/copy.c:976
+#: commands/copy.c:966
 #, c-format
 msgid "FORCE NOT NULL column \"%s\" not referenced by COPY"
 msgstr "coluna do tipo FORCE NOT NULL \"%s\" n�o referenciada pelo COPY"
 
-#: commands/copy.c:1003
+#: commands/copy.c:991
 #, c-format
 msgid "cannot copy to view \"%s\""
 msgstr "n�o pode copiar para vis�o \"%s\""
 
-#: commands/copy.c:1008
+#: commands/copy.c:996
 #, c-format
 msgid "cannot copy to sequence \"%s\""
 msgstr "n�o pode copiar para sequ�ncia \"%s\""
 
-#: commands/copy.c:1013
+#: commands/copy.c:1001
 #, c-format
 msgid "cannot copy to non-table relation \"%s\""
 msgstr "n�o pode copiar para rela��o \"%s\" que n�o � uma tabela"
 
-#: commands/copy.c:1032
+#: commands/copy.c:1020
 #, c-format
 msgid "could not open file \"%s\" for reading: %m"
 msgstr "n�o p�de abrir arquivo \"%s\" para leitura: %m"
 
-#: commands/copy.c:1041 commands/copy.c:1104
+#: commands/copy.c:1029 commands/copy.c:1092
 #, c-format
 msgid "\"%s\" is a directory"
 msgstr "\"%s\" � um diret�rio"
 
-#: commands/copy.c:1054
+#: commands/copy.c:1042
 #, c-format
 msgid "cannot copy from view \"%s\""
 msgstr "n�o pode copiar vis�o \"%s\""
 
-#: commands/copy.c:1059
+#: commands/copy.c:1047
 #, c-format
 msgid "cannot copy from sequence \"%s\""
 msgstr "n�o pode copiar sequ�ncia \"%s\""
 
-#: commands/copy.c:1064
+#: commands/copy.c:1052
 #, c-format
 msgid "cannot copy from non-table relation \"%s\""
 msgstr "n�o pode copiar rela��o \"%s\" que n�o � uma tabela"
 
-#: commands/copy.c:1086
+#: commands/copy.c:1074
 msgid "relative path not allowed for COPY to file"
 msgstr "caminho relativo para arquivo n�o � permitido pelo COPY"
 
-#: commands/copy.c:1095
+#: commands/copy.c:1083
 #, c-format
 msgid "could not open file \"%s\" for writing: %m"
 msgstr "n�o p�de abrir arquivo \"%s\" para escrita: %m"
 
-#: commands/copy.c:1388
+#: commands/copy.c:1389
 #, c-format
 msgid "COPY %s, line %d, column %s"
 msgstr "COPY %s, linha %d, coluna %s"
 
-#: commands/copy.c:1391 commands/copy.c:1424
+#: commands/copy.c:1392 commands/copy.c:1425
 #, c-format
 msgid "COPY %s, line %d"
 msgstr "COPY %s, linha %d"
 
-#: commands/copy.c:1399
+#: commands/copy.c:1400
 #, c-format
 msgid "COPY %s, line %d, column %s: \"%s\""
 msgstr "COPY %s, linha %d, coluna %s: \"%s\""
 
-#: commands/copy.c:1410
+#: commands/copy.c:1411
 #, c-format
 msgid "COPY %s, line %d: \"%s\""
 msgstr "COPY %s, linha %d: \"%s\""
@@ -6934,85 +6792,105 @@ msgstr "cabe
 msgid "invalid COPY file header (wrong length)"
 msgstr "cabe�alho de arquivo COPY inv�lido (tamanho incorreto)"
 
-#: commands/copy.c:1741
+#: commands/copy.c:1749
 msgid "null OID in COPY data"
 msgstr "OID nulo em dados do COPY"
 
-#: commands/copy.c:1750 commands/copy.c:1847
+#: commands/copy.c:1758 commands/copy.c:1853
 msgid "invalid OID in COPY data"
 msgstr "OID inv�lido em dados do COPY"
 
-#: commands/copy.c:1770
+#: commands/copy.c:1776
 #, c-format
 msgid "missing data for column \"%s\""
 msgstr "faltando dados da coluna \"%s\""
 
-#: commands/copy.c:1780
+#: commands/copy.c:1786
 msgid "unterminated CSV quoted field"
 msgstr "campo entre aspas do CSV n�o foi terminado"
 
-#: commands/copy.c:1815
+#: commands/copy.c:1821
 msgid "extra data after last expected column"
 msgstr "dado extra ap�s �ltima coluna esperada"
 
-#: commands/copy.c:1833
+#: commands/copy.c:1839
 #, c-format
 msgid "row field count is %d, expected %d"
 msgstr "quantidade de campos � %d, esperado %d"
 
-#: commands/copy.c:2055 commands/copy.c:2073
+#: commands/copy.c:2097 commands/copy.c:2123
 msgid "literal carriage return found in data"
 msgstr "retorno de carro encontrado em dados"
 
-#: commands/copy.c:2056 commands/copy.c:2074
+#: commands/copy.c:2098 commands/copy.c:2124
 msgid "Use \"\\r\" to represent carriage return."
 msgstr "Utilize \"\\r\" para representar retorno de carro."
 
-#: commands/copy.c:2091
+#: commands/copy.c:2102
+msgid "unquoted carriage return found in CSV data"
+msgstr "retorno de carro sem aspas encontrado em dados no formato CSV"
+
+#: commands/copy.c:2103 commands/copy.c:2129
+msgid "Use quoted CSV field to represent carriage return."
+msgstr "Utilize campo CSV entre aspas para representar retorno de carro."
+
+#: commands/copy.c:2128
+msgid "unquoted carriage return found in data"
+msgstr "retorno de carro sem aspas encontrado em dados"
+
+#: commands/copy.c:2150
 msgid "literal newline found in data"
 msgstr "nova linha encontrada em dados"
 
-#: commands/copy.c:2092
+#: commands/copy.c:2151
 msgid "Use \"\\n\" to represent newline."
 msgstr "Utilize \"\\n\" para representar nova linha."
 
-#: commands/copy.c:2112 commands/copy.c:2128
+#: commands/copy.c:2155
+msgid "unquoted newline found in data"
+msgstr "nova linha sem aspas encontrada em dados"
+
+#: commands/copy.c:2156
+msgid "Use quoted CSV field to represent newline."
+msgstr "Utilize campo CSV entre aspas para representar nova linha."
+
+#: commands/copy.c:2190 commands/copy.c:2206
 msgid "end-of-copy marker does not match previous newline style"
 msgstr ""
 "marcador de fim-de-c�pia n�o corresponde com estilo de nova linha anterior"
 
-#: commands/copy.c:2116 commands/copy.c:2122
+#: commands/copy.c:2194 commands/copy.c:2200
 msgid "end-of-copy marker corrupt"
 msgstr "marcador de fim-de-c�pia corrompido"
 
-#: commands/copy.c:2487 commands/copy.c:2509
+#: commands/copy.c:2533 commands/copy.c:2555
 msgid "unexpected EOF in COPY data"
 msgstr "EOF inesperado em dados do COPY"
 
-#: commands/copy.c:2496
+#: commands/copy.c:2542
 msgid "invalid field size"
 msgstr "tamanho de campo inv�lido"
 
-#: commands/copy.c:2523
+#: commands/copy.c:2569
 msgid "incorrect binary data format"
 msgstr "formato de dado bin�rio incorreto"
 
-#: commands/copy.c:2728 parser/parse_target.c:655 parser/parse_target.c:665
+#: commands/copy.c:2755 parser/parse_target.c:646 parser/parse_target.c:656
 #, c-format
 msgid "column \"%s\" specified more than once"
 msgstr "coluna \"%s\" especificada mais de uma vez"
 
-#: commands/vacuumlazy.c:221 commands/vacuum.c:1181
+#: commands/vacuumlazy.c:217 commands/vacuum.c:1190
 #, c-format
 msgid "vacuuming \"%s.%s\""
 msgstr "faxinando \"%s.%s\""
 
-#: commands/vacuumlazy.c:293 commands/vacuum.c:1229
+#: commands/vacuumlazy.c:311 commands/vacuum.c:1238
 #, c-format
 msgid "relation \"%s\" page %u is uninitialized --- fixing"
 msgstr "p�gina %2$u da rela��o \"%1$s\" n�o foi inicializada --- consertando"
 
-#: commands/vacuumlazy.c:456 commands/vacuum.c:1518
+#: commands/vacuumlazy.c:474 commands/vacuum.c:1527
 #, c-format
 msgid ""
 "\"%s\": found %.0f removable, %.0f nonremovable row versions in %u pages"
@@ -7020,7 +6898,7 @@ msgstr ""
 "\"%s\": encontrados %.0f vers�es de registros remov�veis e %.0f n�o-"
 "remov�veis em %u p�ginas"
 
-#: commands/vacuumlazy.c:459
+#: commands/vacuumlazy.c:477
 #, c-format
 msgid ""
 "%.0f dead row versions cannot be removed yet.\n"
@@ -7033,18 +6911,18 @@ msgstr ""
 "%u p�ginas est�o completamente vazias.\n"
 "%s"
 
-#: commands/vacuumlazy.c:514
+#: commands/vacuumlazy.c:532
 #, c-format
 msgid "\"%s\": removed %d row versions in %d pages"
 msgstr "\"%s\": %d vers�es de registro removidas em %d p�ginas"
 
-#: commands/vacuumlazy.c:630 commands/vacuumlazy.c:705 commands/vacuum.c:2902
-#: commands/vacuum.c:2969
+#: commands/vacuumlazy.c:649 commands/vacuumlazy.c:725 commands/vacuum.c:2899
+#: commands/vacuum.c:2966
 #, c-format
 msgid "index \"%s\" now contains %.0f row versions in %u pages"
 msgstr "�ndice \"%s\" agora cont�m %.0f vers�es de registros em %u p�ginas"
 
-#: commands/vacuumlazy.c:634 commands/vacuum.c:2906
+#: commands/vacuumlazy.c:653 commands/vacuum.c:2903
 #, c-format
 msgid ""
 "%u index pages have been deleted, %u are currently reusable.\n"
@@ -7053,18 +6931,18 @@ msgstr ""
 "%u p�ginas de �ndices foram apagadas, %u s�o reutiliz�veis.\n"
 "%s"
 
-#: commands/vacuumlazy.c:709 commands/vacuum.c:2973
+#: commands/vacuumlazy.c:729 commands/vacuum.c:2970
 #, c-format
 msgid ""
 "%.0f index row versions were removed.\n"
 "%u index pages have been deleted, %u are currently reusable.\n"
 "%s"
 msgstr ""
-"%.0f vers�es de registros de �ndices foram apagadas.\n"
-"%u p�ginas de �ndice foram removidas, %u s�o reutiliz�veis.\n"
+"%.0f vers�es de registros de �ndices foram removidas.\n"
+"%u p�ginas de �ndice foram apagadas, %u s�o reutiliz�veis.\n"
 "%s"
 
-#: commands/vacuumlazy.c:817 commands/vacuum.c:2812
+#: commands/vacuumlazy.c:827 commands/vacuum.c:2810
 #, c-format
 msgid "\"%s\": truncated %u to %u pages"
 msgstr "\"%s\": truncadas %u em %u p�ginas"
@@ -7179,7 +7057,7 @@ msgstr "nomes de dom
 msgid "\"%s\" is not a valid base type for a domain"
 msgstr "\"%s\" n�o � um tipo base v�lido para um dom�nio"
 
-#: commands/typecmds.c:617 commands/typecmds.c:1504
+#: commands/typecmds.c:617 commands/typecmds.c:1470
 msgid "foreign key constraints not possible for domains"
 msgstr "restri��es de chave estrangeira n�o s�o poss�veis para dom�nios"
 
@@ -7191,82 +7069,83 @@ msgstr "m
 msgid "conflicting NULL/NOT NULL constraints"
 msgstr "restri��es NULL/NOT NULL conflitantes"
 
-#: commands/typecmds.c:695 commands/typecmds.c:1522
+#: commands/typecmds.c:695 commands/typecmds.c:1488
 msgid "unique constraints not possible for domains"
 msgstr "restri��es de unicidade n�o s�o poss�veis para dom�nios"
 
-#: commands/typecmds.c:701 commands/typecmds.c:1528
+#: commands/typecmds.c:701 commands/typecmds.c:1494
 msgid "primary key constraints not possible for domains"
 msgstr "restri��es de chave prim�ria n�o s�o poss�veis para dom�nios"
 
-#: commands/typecmds.c:710 commands/typecmds.c:1537
+#: commands/typecmds.c:710 commands/typecmds.c:1503
 msgid "specifying constraint deferrability not supported for domains"
 msgstr ""
 "especifica��o de posterga��o de restri��o n�o � suportada para dom�nios"
 
-#: commands/typecmds.c:831 commands/typecmds.c:1780
+#: commands/typecmds.c:831 commands/typecmds.c:1746
 #, c-format
 msgid "\"%s\" is not a domain"
 msgstr "\"%s\" n�o � um dom�nio"
 
-#: commands/typecmds.c:901
+#: commands/typecmds.c:897
 #, c-format
 msgid "changing argument type of function %s from \"opaque\" to \"cstring\""
 msgstr ""
 "alterando tipo de argumento da fun��o %s de \"opaque\" para \"cstring\""
 
-#: commands/typecmds.c:919 commands/typecmds.c:989 commands/typecmds.c:1021
-#: commands/typecmds.c:1053 commands/typecmds.c:1077 parser/parse_func.c:203
-#: parser/parse_func.c:1364 catalog/pg_aggregate.c:281
+#: commands/typecmds.c:915 commands/typecmds.c:967 commands/typecmds.c:997
+#: commands/typecmds.c:1020 commands/typecmds.c:1042 parser/parse_func.c:197
+#: parser/parse_func.c:1175 catalog/pg_aggregate.c:302
 #, c-format
 msgid "function %s does not exist"
 msgstr "fun��o %s n�o existe"
 
-#: commands/typecmds.c:971
+#: commands/typecmds.c:949
 #, c-format
 msgid "changing argument type of function %s from \"opaque\" to %s"
 msgstr "alterando tipo de argumento da fun��o %s de \"opaque\" para %s"
 
-#: commands/typecmds.c:1083
+#: commands/typecmds.c:1048
 #, c-format
 msgid "type analyze function %s must return type \"boolean\""
 msgstr "fun��o de an�lise do tipo %s deve retornar tipo \"boolean\""
 
-#: commands/typecmds.c:1112
+#: commands/typecmds.c:1077
 msgid "composite type must have at least one attribute"
 msgstr "tipo composto deve ter pelo menos um atributo"
 
-#: commands/typecmds.c:1341
+#: commands/typecmds.c:1307
 #, c-format
 msgid "column \"%s\" of table \"%s\" contains null values"
 msgstr "coluna \"%s\" da tabela \"%s\" cont�m valores nulos"
 
-#: commands/typecmds.c:1608
+#: commands/typecmds.c:1574
 #, c-format
 msgid ""
 "column \"%s\" of table \"%s\" contains values that violate the new constraint"
 msgstr ""
 "coluna \"%s\" da tabela \"%s\" cont�m valores que violam a nova restri��o"
 
-#: commands/typecmds.c:1814
+#: commands/typecmds.c:1780
 #, c-format
 msgid "constraint \"%s\" for domain \"%s\" already exists"
 msgstr "restri��o \"%s\" para dom�nio \"%s\" j� existe"
 
-#: commands/typecmds.c:1855 commands/typecmds.c:1864
+#: commands/typecmds.c:1821 commands/typecmds.c:1830
 msgid "cannot use table references in domain check constraint"
 msgstr ""
-"n�o pode utilizar refer�ncias a tabela em restri��o de verifica��o do dom�nio"
+"n�o pode utilizar refer�ncias a tabelas em restri��o de verifica��o do "
+"dom�nio"
 
-#: commands/typecmds.c:1872 catalog/heap.c:1593
+#: commands/typecmds.c:1838 catalog/heap.c:1552
 msgid "cannot use subquery in check constraint"
 msgstr "n�o pode utilizar subconsulta na restri��o de verifica��o"
 
-#: commands/typecmds.c:1876
+#: commands/typecmds.c:1842
 msgid "cannot use aggregate in check constraint"
 msgstr "n�o pode utilizar agrega��o em restri��o de verifica��o"
 
-#: commands/typecmds.c:2090
+#: commands/typecmds.c:2059
 #, c-format
 msgid "\"%s\" is a table's row type"
 msgstr "\"%s\" � um tipo de registro de tabela"
@@ -7318,7 +7197,7 @@ msgstr "operadores de 
 
 #: commands/opclasscmds.c:434
 msgid "btree operators must return boolean"
-msgstr "operadors de �rvore B devem retornar booleano"
+msgstr "operadores de �rvore B devem retornar booleano"
 
 #: commands/opclasscmds.c:438
 msgid "btree operators must have index type as left input"
@@ -7357,16 +7236,16 @@ msgstr ""
 "classe de operadores \"%s\" para m�todo de acesso \"%s\" j� existe no "
 "esquema \"%s\""
 
-#: commands/operatorcmds.c:107 commands/operatorcmds.c:115
+#: commands/operatorcmds.c:106 commands/operatorcmds.c:114
 msgid "setof type not allowed for operator argument"
 msgstr "tipo setof n�o � permitido como argumento de operador"
 
-#: commands/operatorcmds.c:142
+#: commands/operatorcmds.c:141
 #, c-format
 msgid "operator attribute \"%s\" not recognized"
 msgstr "atributo de operador \"%s\" desconhecido"
 
-#: commands/operatorcmds.c:152
+#: commands/operatorcmds.c:151
 msgid "operator procedure must be specified"
 msgstr "procedimento de operador deve ser especificado"
 
@@ -7375,7 +7254,7 @@ msgstr "procedimento de operador deve ser especificado"
 msgid "there is no previously clustered index for table \"%s\""
 msgstr "n�o h� nenhum �ndice previamente agrupado na tabela \"%s\""
 
-#: commands/cluster.c:147 commands/tablecmds.c:5377
+#: commands/cluster.c:147 commands/tablecmds.c:5463
 #, c-format
 msgid "index \"%s\" for table \"%s\" does not exist"
 msgstr "�ndice \"%s\" na tabela \"%s\" n�o existe"
@@ -7416,88 +7295,88 @@ msgstr "\"%s\" 
 msgid "cannot cluster temporary tables of other sessions"
 msgstr "n�o pode agrupar tabelas tempor�rias de outras sess�es"
 
-#: commands/indexcmds.c:120
+#: commands/indexcmds.c:123
 msgid "must specify at least one column"
 msgstr "deve especificar pelo menos uma coluna"
 
-#: commands/indexcmds.c:124
+#: commands/indexcmds.c:127
 #, c-format
 msgid "cannot use more than %d columns in an index"
 msgstr "n�o pode utilizar mais do que %d colunas em um �ndice"
 
-#: commands/indexcmds.c:238
+#: commands/indexcmds.c:241
 #, c-format
 msgid "access method \"%s\" does not support unique indexes"
 msgstr "m�todo de acesso \"%s\" n�o suporta �ndices �nicos"
 
-#: commands/indexcmds.c:243
+#: commands/indexcmds.c:246
 #, c-format
 msgid "access method \"%s\" does not support multicolumn indexes"
 msgstr "m�todo de acesso \"%s\" n�o suporta �ndices de m�ltiplas colunas"
 
-#: commands/indexcmds.c:257
+#: commands/indexcmds.c:260
 msgid ""
 "index expressions and predicates may refer only to the table being indexed"
 msgstr ""
 "express�es e predicados de �ndice s� podem ser referenciados a tabelas "
 "indexadas"
 
-#: commands/indexcmds.c:285 parser/analyze.c:1197
+#: commands/indexcmds.c:288 parser/analyze.c:1202
 #, c-format
 msgid "multiple primary keys for table \"%s\" are not allowed"
 msgstr "chaves prim�rias m�ltiplas na tabela \"%s\" n�o s�o permitidas"
 
-#: commands/indexcmds.c:302
+#: commands/indexcmds.c:305
 msgid "primary keys cannot be expressions"
 msgstr "chaves prim�rias n�o podem ser express�es"
 
-#: commands/indexcmds.c:332 commands/indexcmds.c:470 parser/analyze.c:1311
+#: commands/indexcmds.c:335 commands/indexcmds.c:473 parser/analyze.c:1316
 #, c-format
 msgid "column \"%s\" named in key does not exist"
 msgstr "coluna \"%s\" indicada na chave n�o existe"
 
-#: commands/indexcmds.c:377
+#: commands/indexcmds.c:380
 #, c-format
 msgid "%s %s will create implicit index \"%s\" for table \"%s\""
 msgstr "%s %s criar� �ndice impl�cito \"%s\" na tabela \"%s\""
 
-#: commands/indexcmds.c:420
+#: commands/indexcmds.c:423
 msgid "cannot use subquery in index predicate"
 msgstr "n�o pode utilizar subconsulta em predicado de �ndice"
 
-#: commands/indexcmds.c:424
+#: commands/indexcmds.c:427
 msgid "cannot use aggregate in index predicate"
 msgstr "n�o pode utilizar agrega��o em predicado de �ndice"
 
-#: commands/indexcmds.c:433
+#: commands/indexcmds.c:436
 msgid "functions in index predicate must be marked IMMUTABLE"
 msgstr "fun��es em predicado de �ndice devem ser IMMUTABLE"
 
-#: commands/indexcmds.c:475 commands/tablecmds.c:1329 parser/parse_expr.c:1098
+#: commands/indexcmds.c:478 commands/tablecmds.c:1356 parser/parse_expr.c:390
 #, c-format
 msgid "column \"%s\" does not exist"
 msgstr "coluna \"%s\" n�o existe"
 
-#: commands/indexcmds.c:508
+#: commands/indexcmds.c:511
 msgid "cannot use subquery in index expression"
 msgstr "n�o pode utilizar subconsulta em express�o de �ndice"
 
-#: commands/indexcmds.c:512
+#: commands/indexcmds.c:515
 msgid "cannot use aggregate function in index expression"
 msgstr "n�o pode utilizar fun��o de agrega��o em express�o de �ndice"
 
-#: commands/indexcmds.c:523
+#: commands/indexcmds.c:526
 msgid "functions in index expression must be marked IMMUTABLE"
 msgstr "fun��es em express�o de �ndice devem ser IMMUTABLE"
 
-#: commands/indexcmds.c:582
+#: commands/indexcmds.c:585
 #, c-format
 msgid "data type %s has no default operator class for access method \"%s\""
 msgstr ""
 "tipo de dado %s n�o tem classe de operadores padr�o para m�todo de acesso \"%"
 "s\""
 
-#: commands/indexcmds.c:584
+#: commands/indexcmds.c:587
 msgid ""
 "You must specify an operator class for the index or define a default "
 "operator class for the data type."
@@ -7505,293 +7384,293 @@ msgstr ""
 "Voc� deve especificar uma classe de operadores para o �ndice ou definir uma "
 "classe de operadores padr�o para o tipo de dado."
 
-#: commands/indexcmds.c:637
+#: commands/indexcmds.c:640
 #, c-format
 msgid "operator class \"%s\" does not accept data type %s"
 msgstr "classe de operadores \"%s\" n�o aceita tipo de dado %s"
 
-#: commands/indexcmds.c:963
+#: commands/indexcmds.c:966
 #, c-format
 msgid "shared table \"%s\" can only be reindexed in stand-alone mode"
 msgstr "tabela compartilhada \"%s\" s� pode ser reindexada no modo aut�nomo"
 
-#: commands/indexcmds.c:970
+#: commands/indexcmds.c:973
 #, c-format
 msgid "table \"%s\" has no indexes"
 msgstr "tabela \"%s\" n�o tem �ndices"
 
-#: commands/indexcmds.c:998
+#: commands/indexcmds.c:1001
 msgid "can only reindex the currently open database"
 msgstr "s� pode reindexar o banco de dados atualmente aberto"
 
-#: commands/indexcmds.c:1081
+#: commands/indexcmds.c:1084
 #, c-format
 msgid "table \"%s\" was reindexed"
 msgstr "tabela \"%s\" foi reindexada"
 
-#: commands/tablecmds.c:294
+#: commands/tablecmds.c:295
 msgid "ON COMMIT can only be used on temporary tables"
 msgstr "ON COMMIT s� pode ser utilizado em tabelas tempor�rias"
 
-#: commands/tablecmds.c:399
+#: commands/tablecmds.c:400
 #, c-format
 msgid "duplicate check constraint name \"%s\""
 msgstr "nome de restri��o de verifica��o \"%s\" duplicado"
 
-#: commands/tablecmds.c:566
+#: commands/tablecmds.c:579
 #, c-format
 msgid "cannot truncate system relation \"%s\""
 msgstr "n�o pode truncar rela��o do sistema \"%s\""
 
-#: commands/tablecmds.c:576
+#: commands/tablecmds.c:589
 msgid "cannot truncate temporary tables of other sessions"
 msgstr "n�o pode truncar tabelas tempor�rias de outras sess�es"
 
-#: commands/tablecmds.c:697 commands/tablecmds.c:1007
-#: commands/tablecmds.c:2927 catalog/heap.c:382
+#: commands/tablecmds.c:724 commands/tablecmds.c:1034
+#: commands/tablecmds.c:2965 catalog/heap.c:346
 #, c-format
 msgid "tables can have at most %d columns"
 msgstr "tabelas podem ter no m�ximo %d colunas"
 
-#: commands/tablecmds.c:719
+#: commands/tablecmds.c:746
 #, c-format
 msgid "column \"%s\" duplicated"
 msgstr "coluna \"%s\" duplicada"
 
-#: commands/tablecmds.c:744 parser/analyze.c:1067 parser/analyze.c:1273
+#: commands/tablecmds.c:771 parser/analyze.c:1072 parser/analyze.c:1278
 #, c-format
 msgid "inherited relation \"%s\" is not a table"
 msgstr "rela��o herdada \"%s\" n�o � uma tabela"
 
-#: commands/tablecmds.c:750
+#: commands/tablecmds.c:777
 #, c-format
 msgid "cannot inherit from temporary relation \"%s\""
-msgstr "n�o pode herdar de uma tabela tempor�ria \"%s\""
+msgstr "n�o pode herdar de uma rela��o tempor�ria \"%s\""
 
-#: commands/tablecmds.c:767
+#: commands/tablecmds.c:794
 #, c-format
 msgid "inherited relation \"%s\" duplicated"
 msgstr "rela��o herdada \"%s\" duplicada"
 
-#: commands/tablecmds.c:821
+#: commands/tablecmds.c:848
 #, c-format
 msgid "merging multiple inherited definitions of column \"%s\""
 msgstr "juntando m�ltiplas defini��es herdadas da coluna \"%s\""
 
-#: commands/tablecmds.c:828
+#: commands/tablecmds.c:855
 #, c-format
 msgid "inherited column \"%s\" has a type conflict"
 msgstr "coluna herdada \"%s\" tem um conflito de tipo"
 
-#: commands/tablecmds.c:830 commands/tablecmds.c:975 parser/parse_coerce.c:239
-#: parser/parse_coerce.c:1130 parser/parse_coerce.c:1147
-#: parser/parse_coerce.c:1193
+#: commands/tablecmds.c:857 commands/tablecmds.c:1002
+#: parser/parse_coerce.c:239 parser/parse_coerce.c:1144
+#: parser/parse_coerce.c:1161 parser/parse_coerce.c:1207
 #, c-format
 msgid "%s versus %s"
 msgstr "%s versus %s"
 
-#: commands/tablecmds.c:966
+#: commands/tablecmds.c:993
 #, c-format
 msgid "merging column \"%s\" with inherited definition"
 msgstr "juntando coluna \"%s\" com defini��o herdada"
 
-#: commands/tablecmds.c:973
+#: commands/tablecmds.c:1000
 #, c-format
 msgid "column \"%s\" has a type conflict"
 msgstr "coluna \"%s\" tem um conflito de tipo"
 
-#: commands/tablecmds.c:1024
+#: commands/tablecmds.c:1051
 #, c-format
 msgid "column \"%s\" inherits conflicting default values"
 msgstr "coluna \"%s\" herdou valores padr�o conflitantes"
 
-#: commands/tablecmds.c:1026
+#: commands/tablecmds.c:1053
 msgid "To resolve the conflict, specify a default explicitly."
 msgstr "Para resolver o conflito, especifique um padr�o explicitamente."
 
-#: commands/tablecmds.c:1319
+#: commands/tablecmds.c:1346
 #, c-format
 msgid "inherited column \"%s\" must be renamed in child tables too"
 msgstr ""
 "coluna herdada \"%s\" deve ser renomeada nas tabelas descendentes tamb�m"
 
-#: commands/tablecmds.c:1337
+#: commands/tablecmds.c:1364
 #, c-format
 msgid "cannot rename system column \"%s\""
 msgstr "n�o pode renomear coluna do sistema \"%s\""
 
-#: commands/tablecmds.c:1347
+#: commands/tablecmds.c:1374
 #, c-format
 msgid "cannot rename inherited column \"%s\""
 msgstr "n�o pode renomear coluna herdada \"%s\""
 
-#: commands/tablecmds.c:1358 commands/tablecmds.c:2919
+#: commands/tablecmds.c:1385 commands/tablecmds.c:2957
 #, c-format
 msgid "column \"%s\" of relation \"%s\" already exists"
 msgstr "coluna \"%s\" da rela��o \"%s\" j� existe"
 
-#: commands/tablecmds.c:1501 catalog/heap.c:732 catalog/index.c:514
+#: commands/tablecmds.c:1528 catalog/heap.c:697 catalog/index.c:516
 #, c-format
 msgid "relation \"%s\" already exists"
 msgstr "rela��o \"%s\" j� existe"
 
-#: commands/tablecmds.c:2219
+#: commands/tablecmds.c:2247
 #, c-format
 msgid "cannot rewrite system relation \"%s\""
 msgstr "n�o pode reescrever rela��o do sistema \"%s\""
 
-#: commands/tablecmds.c:2229
+#: commands/tablecmds.c:2257
 msgid "cannot rewrite temporary tables of other sessions"
 msgstr "n�o pode reescrever tabelas tempor�rias de outras sess�es"
 
-#: commands/tablecmds.c:2520
+#: commands/tablecmds.c:2560
 #, c-format
 msgid "check constraint \"%s\" is violated by some row"
 msgstr "restri��o de verifica��o \"%s\" foi violada por algum registro"
 
-#: commands/tablecmds.c:2533
+#: commands/tablecmds.c:2573
 #, c-format
 msgid "column \"%s\" contains null values"
 msgstr "coluna \"%s\" cont�m valores nulos"
 
-#: commands/tablecmds.c:2618
+#: commands/tablecmds.c:2655
 #, c-format
 msgid "\"%s\" is not a table or view"
 msgstr "\"%s\" n�o � uma tabela ou vis�o"
 
-#: commands/tablecmds.c:2771
+#: commands/tablecmds.c:2808
 #, c-format
 msgid "cannot alter table \"%s\" because column \"%s\".\"%s\" uses its rowtype"
 msgstr ""
 "n�o pode alterar tabela \"%s\" porque coluna \"%s\".\"%s\" utiliza seu tipo"
 
-#: commands/tablecmds.c:2837
+#: commands/tablecmds.c:2874
 msgid "column must be added to child tables too"
 msgstr "coluna deve ser adicionada as tabelas descendentes tamb�m"
 
-#: commands/tablecmds.c:2880
+#: commands/tablecmds.c:2918
 #, c-format
 msgid "child table \"%s\" has different type for column \"%s\""
 msgstr "tabela descendente \"%s\" tem tipo diferente da coluna \"%s\""
 
-#: commands/tablecmds.c:2892
+#: commands/tablecmds.c:2930
 #, c-format
 msgid "merging definition of column \"%s\" for child \"%s\""
 msgstr "juntando defini��o da coluna \"%s\" para tabela descendente \"%s\""
 
-#: commands/tablecmds.c:3109 commands/tablecmds.c:3202
-#: commands/tablecmds.c:3252 commands/tablecmds.c:3348
-#: commands/tablecmds.c:3409 commands/tablecmds.c:4617
+#: commands/tablecmds.c:3174 commands/tablecmds.c:3267
+#: commands/tablecmds.c:3317 commands/tablecmds.c:3413
+#: commands/tablecmds.c:3474 commands/tablecmds.c:4702
 #, c-format
 msgid "cannot alter system column \"%s\""
 msgstr "n�o pode alterar coluna do sistema \"%s\""
 
-#: commands/tablecmds.c:3145
+#: commands/tablecmds.c:3210
 #, c-format
 msgid "column \"%s\" is in a primary key"
 msgstr "coluna \"%s\" est� em uma chave prim�ria"
 
-#: commands/tablecmds.c:3295 commands/tablecmds.c:5416
+#: commands/tablecmds.c:3360 commands/tablecmds.c:5502
 #, c-format
 msgid "\"%s\" is not a table or index"
 msgstr "\"%s\" n�o � uma tabela ou �ndice"
 
-#: commands/tablecmds.c:3322
+#: commands/tablecmds.c:3387
 #, c-format
 msgid "statistics target %d is too low"
 msgstr "valor da estat�stica %d � muito pequeno"
 
-#: commands/tablecmds.c:3330
+#: commands/tablecmds.c:3395
 #, c-format
 msgid "lowering statistics target to %d"
 msgstr "diminuindo valor da estat�stica para %d"
 
-#: commands/tablecmds.c:3390
+#: commands/tablecmds.c:3455
 #, c-format
 msgid "invalid storage type \"%s\""
 msgstr "tipo de armazenamento \"%s\" inv�lido"
 
-#: commands/tablecmds.c:3421
+#: commands/tablecmds.c:3486
 #, c-format
 msgid "column data type %s can only have storage PLAIN"
 msgstr "tipo de dado da coluna %s s� pode ter armazenamento PLAIN"
 
-#: commands/tablecmds.c:3478
+#: commands/tablecmds.c:3543
 #, c-format
 msgid "cannot drop system column \"%s\""
 msgstr "n�o pode remover coluna do sistema \"%s\""
 
-#: commands/tablecmds.c:3485
+#: commands/tablecmds.c:3550
 #, c-format
 msgid "cannot drop inherited column \"%s\""
 msgstr "n�o pode remover coluna herdada \"%s\""
 
-#: commands/tablecmds.c:3722 catalog/heap.c:1614
+#: commands/tablecmds.c:3788 catalog/heap.c:1573
 #, c-format
 msgid "constraint \"%s\" for relation \"%s\" already exists"
 msgstr "restri��o \"%s\" para rela��o \"%s\" j� existe"
 
-#: commands/tablecmds.c:3786
+#: commands/tablecmds.c:3852
 #, c-format
 msgid "referenced relation \"%s\" is not a table"
 msgstr "rela��o referenciada \"%s\" n�o � uma tabela"
 
-#: commands/tablecmds.c:3820
+#: commands/tablecmds.c:3886
 msgid "cannot reference temporary table from permanent table constraint"
 msgstr ""
 "n�o pode referenciar tabela tempor�ria a partir de uma restri��o em uma "
 "tabela permanente"
 
-#: commands/tablecmds.c:3827
+#: commands/tablecmds.c:3893
 msgid "cannot reference permanent table from temporary table constraint"
 msgstr ""
 "n�o pode referenciar tabela permanente a partir de uma restri��o em uma "
 "tabela tempor�ria"
 
-#: commands/tablecmds.c:3872 commands/tablecmds.c:4362
+#: commands/tablecmds.c:3938 commands/tablecmds.c:4447
 msgid "number of referencing and referenced columns for foreign key disagree"
 msgstr ""
 "n�mero de colunas que referenciam e s�o referenciadas em um chave "
 "estrangeira n�o correspondem"
 
-#: commands/tablecmds.c:3893
+#: commands/tablecmds.c:3959
 #, c-format
 msgid "foreign key constraint \"%s\" cannot be implemented"
 msgstr "restri��o de chave estrangeira \"%s\" n�o pode ser implementada"
 
-#: commands/tablecmds.c:3896
+#: commands/tablecmds.c:3962
 #, c-format
 msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s."
 msgstr "Colunas chave \"%s\" e \"%s\" s�o de tipos incompat�veis: %s e %s."
 
-#: commands/tablecmds.c:3910
+#: commands/tablecmds.c:3976
 #, c-format
 msgid "foreign key constraint \"%s\" will require costly sequential scans"
 msgstr ""
 "restri��o de chave estrangeira \"%s\" requerir� buscas sequenciais com custo"
 
-#: commands/tablecmds.c:3913
+#: commands/tablecmds.c:3979
 #, c-format
 msgid "Key columns \"%s\" and \"%s\" are of different types: %s and %s."
 msgstr "Colunas chave \"%s\" e \"%s\" s�o de tipos diferentes: %s e %s."
 
-#: commands/tablecmds.c:3998
+#: commands/tablecmds.c:4064
 #, c-format
 msgid "column \"%s\" referenced in foreign key constraint does not exist"
 msgstr ""
 "coluna \"%s\" referenciada na restri��o de chave estrangeira n�o existe"
 
-#: commands/tablecmds.c:4003
+#: commands/tablecmds.c:4069
 #, c-format
 msgid "cannot have more than %d keys in a foreign key"
 msgstr "n�o pode ter mais do que %d chaves em uma chave estrangeira"
 
-#: commands/tablecmds.c:4072
+#: commands/tablecmds.c:4141
 #, c-format
 msgid "there is no primary key for referenced table \"%s\""
 msgstr "n�o h� chave prim�ria na tabela referenciada \"%s\""
 
-#: commands/tablecmds.c:4190
+#: commands/tablecmds.c:4275
 #, c-format
 msgid ""
 "there is no unique constraint matching given keys for referenced table \"%s\""
@@ -7799,90 +7678,90 @@ msgstr ""
 "n�o h� restri��o de unicidade que corresponde com as colunas informadas na "
 "tabela referenciada \"%s\""
 
-#: commands/tablecmds.c:4579
+#: commands/tablecmds.c:4664
 #, c-format
 msgid "multiple constraints named \"%s\" were dropped"
 msgstr "restri��es m�ltiplas chamadas \"%s\" foram removidas"
 
-#: commands/tablecmds.c:4624
+#: commands/tablecmds.c:4709
 #, c-format
 msgid "cannot alter inherited column \"%s\""
 msgstr "n�o pode alterar coluna herdada \"%s\""
 
-#: commands/tablecmds.c:4664
+#: commands/tablecmds.c:4749
 msgid "transform expression must not return a set"
 msgstr "express�o de transforma��o n�o deve retornar um conjunto"
 
-#: commands/tablecmds.c:4670
+#: commands/tablecmds.c:4755
 msgid "cannot use subquery in transform expression"
 msgstr "n�o pode utilizar subconsulta em express�o de transforma��o"
 
-#: commands/tablecmds.c:4674
+#: commands/tablecmds.c:4759
 msgid "cannot use aggregate function in transform expression"
 msgstr "n�o pode utilizar fun��o de agrega��o em express�o de transforma��o"
 
-#: commands/tablecmds.c:4691
+#: commands/tablecmds.c:4776
 #, c-format
 msgid "column \"%s\" cannot be cast to type \"%s\""
 msgstr "coluna \"%s\" n�o pode ser convertida para tipo \"%s\""
 
-#: commands/tablecmds.c:4717
+#: commands/tablecmds.c:4802
 #, c-format
 msgid "type of inherited column \"%s\" must be changed in child tables too"
 msgstr ""
 "tipo de coluna herdada \"%s\" deve ser alterado nas tabelas descendentes "
 "tamb�m"
 
-#: commands/tablecmds.c:4755
+#: commands/tablecmds.c:4840
 #, c-format
 msgid "cannot alter type of column \"%s\" twice"
 msgstr "n�o pode alterar tipo de coluna \"%s\" duas vezes"
 
-#: commands/tablecmds.c:4789
+#: commands/tablecmds.c:4874
 #, c-format
 msgid "default for column \"%s\" cannot be cast to type \"%s\""
 msgstr ""
 "valor padr�o para coluna \"%s\" n�o pode ser convertido para tipo \"%s\""
 
-#: commands/tablecmds.c:4889
+#: commands/tablecmds.c:4974
 msgid "cannot alter type of a column used by a view or rule"
 msgstr "n�o pode alterar tipo de uma coluna utilizada por uma vis�o ou regra"
 
-#: commands/tablecmds.c:4890
+#: commands/tablecmds.c:4975
 #, c-format
 msgid "%s depends on column \"%s\""
 msgstr "%s depende da coluna \"%s\""
 
-#: commands/tablecmds.c:5206
+#: commands/tablecmds.c:5290
 #, c-format
 msgid "\"%s\" is not a table, TOAST table, index, view, or sequence"
 msgstr "\"%s\" n�o � uma tabela, tabela TOAST, �ndice, vis�o ou sequ�ncia"
 
-#: commands/tablecmds.c:5446
+#: commands/tablecmds.c:5532
 msgid "cannot have multiple SET TABLESPACE subcommands"
 msgstr "n�o pode ter m�ltiplos subcomandos SET TABLESPACE"
 
-#: commands/tablecmds.c:5476
+#: commands/tablecmds.c:5562
 #, c-format
 msgid "cannot move system relation \"%s\""
 msgstr "n�o pode mover rela��o do sistema \"%s\""
 
-#: commands/tablecmds.c:5486
+#: commands/tablecmds.c:5572
 msgid "cannot move temporary tables of other sessions"
 msgstr "n�o pode mover tabelas tempor�rias de outras sess�es"
 
-#: commands/tablecmds.c:5694
+#: commands/tablecmds.c:5779
 msgid "shared tables cannot be toasted after initdb"
 msgstr ""
 "n�o se pode criar tabelas toast a partir de tabelas compartilhadas depois da "
 "execu��o do initdb"
 
-#: commands/tablecmds.c:5709
+#: commands/tablecmds.c:5794
 #, c-format
 msgid "table \"%s\" already has a TOAST table"
 msgstr "tabela \"%s\" j� tem uma tabela TOAST"
 
-#: commands/tablecmds.c:5726
+#: commands/tablecmds.c:5811
 #, c-format
 msgid "table \"%s\" does not need a TOAST table"
 msgstr "tabela \"%s\" n�o precisa de uma tabela TOAST"
@@ -7902,192 +7781,176 @@ msgstr ""
 "ignorando \"%s\" --- n�o pode analisar �ndices, vis�es ou tabelas especiais "
 "do sistema"
 
-#: commands/analyze.c:198
+#: commands/analyze.c:197
 #, c-format
 msgid "analyzing \"%s.%s\""
 msgstr "analisando \"%s.%s\""
 
-#: commands/analyze.c:912
+#: commands/analyze.c:904
 #, c-format
 msgid ""
 "\"%s\": scanned %d of %u pages, containing %.0f live rows and %.0f dead "
 "rows; %d rows in sample, %.0f estimated total rows"
 msgstr ""
-"\"%s\": processados %d de %u p�ginas, contendo %.0f registros vigentes e "
-"%.0f registros n�o vigentes; %d registros amostrados, %.0f registros totais "
+"\"%s\": buscadas %d de %u p�ginas, contendo %.0f registros vigentes e %.0f "
+"registros n�o vigentes; %d registros amostrados, %.0f registros totais "
 "estimados"
 
-#: commands/user.c:174 commands/user.c:272 commands/user.c:321
-#: commands/user.c:402
-#, c-format
-msgid "could not write to temporary file \"%s\": %m"
-msgstr "n�o p�de escrever no arquivo tempor�rio \"%s\": %m"
-
-#: commands/user.c:209
-#, c-format
-msgid "invalid group name \"%s\""
-msgstr "nome de grupo \"%s\" � inv�lido"
-
-#: commands/user.c:240 commands/user.c:371
-#, c-format
-msgid "invalid user name \"%s\""
-msgstr "nome do usu�rio \"%s\" � inv�lido"
-
-#: commands/user.c:378
-#, c-format
-msgid "invalid user password \"%s\""
-msgstr "senha de usu�rio \"%s\" � inv�lida"
-
-#: commands/user.c:638
+#: commands/user.c:151
 msgid "user ID must be positive"
 msgstr "ID de usu�rio deve ser positivo"
 
-#: commands/user.c:655
+#: commands/user.c:168
 msgid "must be superuser to create users"
 msgstr "deve ser super-usu�rio para criar usu�rios"
 
-#: commands/user.c:660
+#: commands/user.c:173
 #, c-format
 msgid "user name \"%s\" is reserved"
 msgstr "nome de usu�rio \"%s\" � reservado"
 
-#: commands/user.c:697 commands/user.c:1252
+#: commands/user.c:210 commands/user.c:764
 #, c-format
 msgid "user \"%s\" already exists"
 msgstr "usu�rio \"%s\" j� existe"
 
-#: commands/user.c:702
+#: commands/user.c:215
 #, c-format
 msgid "user ID %d is already assigned"
 msgstr "ID de usu�rio %d j� foi atribu�do"
 
-#: commands/user.c:883 commands/user.c:1018 commands/schemacmds.c:84
+#: commands/user.c:396 commands/user.c:531 commands/schemacmds.c:83
 msgid "permission denied"
 msgstr "permiss�o negada"
 
-#: commands/user.c:1077
+#: commands/user.c:589
 msgid "must be superuser to drop users"
 msgstr "deve ser super-usu�rio para remover usu�rios"
 
-#: commands/user.c:1111
+#: commands/user.c:623
 msgid "current user cannot be dropped"
 msgstr "usu�rio atual n�o pode ser removido"
 
-#: commands/user.c:1115
+#: commands/user.c:627
 msgid "session user cannot be dropped"
-msgstr "usu�rio numa sess�o n�o pode ser removido"
+msgstr "usu�rio da sess�o n�o pode ser removido"
 
-#: commands/user.c:1142
+#: commands/user.c:654
 #, c-format
 msgid "user \"%s\" cannot be dropped"
 msgstr "usu�rio \"%s\" n�o pode ser removido"
 
-#: commands/user.c:1143
+#: commands/user.c:655
 #, c-format
 msgid "The user owns database \"%s\"."
 msgstr "O usu�rio � dono do banco de dados \"%s\"."
 
-#: commands/user.c:1244
+#: commands/user.c:756
 msgid "session user may not be renamed"
-msgstr "usu�rio numa sess�o n�o pode ser renomeado"
+msgstr "usu�rio da sess�o n�o pode ser renomeado"
 
-#: commands/user.c:1258
+#: commands/user.c:770
 msgid "must be superuser to rename users"
 msgstr "deve ser super-usu�rio para renomear usu�rios"
 
-#: commands/user.c:1277
+#: commands/user.c:789
 msgid "MD5 password cleared because of user rename"
 msgstr "senha MD5 foi limpada porque usu�rio foi renomeado"
 
-#: commands/user.c:1311
+#: commands/user.c:826
 #, c-format
 msgid "before using passwords you must revoke privileges on %s"
 msgstr "antes de utilizar senhas voc� deve revogar privil�gios em %s"
 
-#: commands/user.c:1313
+#: commands/user.c:828
 msgid ""
 "This restriction is to prevent unprivileged users from reading the passwords."
 msgstr ""
 "Essa restri��o � para previnir que usu�rios sem privil�gios leiam as senhas."
 
-#: commands/user.c:1314
+#: commands/user.c:829
 #, c-format
 msgid "Try REVOKE ALL ON \"%s\" FROM PUBLIC."
 msgstr "Tente REVOKE ALL ON \"%s\" FROM PUBLIC."
 
-#: commands/user.c:1378
+#: commands/user.c:893
 msgid "group ID must be positive"
 msgstr "ID de grupo deve ser positivo"
 
-#: commands/user.c:1391
+#: commands/user.c:906
 msgid "must be superuser to create groups"
 msgstr "deve ser super-usu�rio para criar grupos"
 
-#: commands/user.c:1396
+#: commands/user.c:911
 #, c-format
 msgid "group name \"%s\" is reserved"
 msgstr "nome de grupo \"%s\" � reservado"
 
-#: commands/user.c:1433 commands/user.c:1815
+#: commands/user.c:948 commands/user.c:1330
 #, c-format
 msgid "group \"%s\" already exists"
 msgstr "grupo \"%s\" j� existe"
 
-#: commands/user.c:1438
+#: commands/user.c:953
 #, c-format
 msgid "group ID %d is already assigned"
 msgstr "ID de grupo %d j� est� atribu�do"
 
-#: commands/user.c:1518
+#: commands/user.c:1033
 msgid "must be superuser to alter groups"
 msgstr "deve ser super-usu�rio para alterar grupos"
 
-#: commands/user.c:1597
+#: commands/user.c:1112
 #, c-format
 msgid "group \"%s\" does not have any members"
 msgstr "grupo \"%s\" n�o tem nenhum membro"
 
-#: commands/user.c:1625
+#: commands/user.c:1140
 #, c-format
 msgid "user \"%s\" is not in group \"%s\""
 msgstr "usu�rio \"%s\" n�o est� no grupo \"%s\""
 
-#: commands/user.c:1757
+#: commands/user.c:1272
 msgid "must be superuser to drop groups"
 msgstr "deve ser super-usu�rio para remover grupos"
 
-#: commands/user.c:1821
+#: commands/user.c:1336
 msgid "must be superuser to rename groups"
 msgstr "deve ser super-usu�rio para renomear grupos"
 
-#: commands/view.c:89
+#: commands/view.c:138
 msgid "view must have at least one column"
 msgstr "vis�o deve ter pelo menos uma coluna"
 
-#: commands/view.c:170 commands/view.c:182
+#: commands/view.c:226 commands/view.c:238
 msgid "cannot change number of columns in view"
 msgstr "n�o pode mudar n�mero de colunas na vis�o"
 
-#: commands/view.c:187
+#: commands/view.c:243
 #, c-format
 msgid "cannot change name of view column \"%s\""
 msgstr "n�o pode mudar nome de coluna da vis�o \"%s\""
 
-#: commands/view.c:194
+#: commands/view.c:250
 #, c-format
 msgid "cannot change data type of view column \"%s\""
 msgstr "n�o pode mudar tipo de dado de coluna da vis�o \"%s\""
 
-#: commands/proclang.c:64
+#: commands/view.c:404
+#, c-format
+msgid "view \"%s\" will be a temporary view"
+msgstr "vis�o \"%s\" ser� uma vis�o tempor�ria"
+
+#: commands/proclang.c:63
 msgid "must be superuser to create procedural language"
 msgstr "deve ser super-usu�rio para criar linguagem procedural"
 
-#: commands/proclang.c:77 commands/proclang.c:265
+#: commands/proclang.c:76 commands/proclang.c:263
 #, c-format
 msgid "language \"%s\" already exists"
 msgstr "linguagem \"%s\" j� existe"
 
-#: commands/proclang.c:97
+#: commands/proclang.c:95
 #, c-format
 msgid ""
 "changing return type of function %s from \"opaque\" to \"language_handler\""
@@ -8095,81 +7958,67 @@ msgstr ""
 "alterando tipo de retorno da fun��o %s de \"opaque\" para \"language_handler"
 "\""
 
-#: commands/proclang.c:104
+#: commands/proclang.c:102
 #, c-format
 msgid "function %s must return type \"language_handler\""
 msgstr "fun��o %s deve retornar tipo \"language_handler\""
 
-#: commands/proclang.c:188
+#: commands/proclang.c:186
 msgid "must be superuser to drop procedural language"
 msgstr "deve ser super-usu�rio para remover linguagem procedural"
 
-#: commands/proclang.c:271
+#: commands/proclang.c:269
 msgid "must be superuser to rename procedural language"
 msgstr "deve ser super-usu�rio para renomear linguagem procedural"
 
-#: commands/vacuum.c:286
+#: commands/vacuum.c:283
 msgid "VACUUM FULL FREEZE is not supported"
 msgstr "VACUUM FULL FREEZE n�o � suportado"
 
-#: commands/vacuum.c:287
+#: commands/vacuum.c:284
 msgid "Use VACUUM FULL, then VACUUM FREEZE."
 msgstr "Utilize VACUUM FULL, depois VACUUM FREEZE."
 
-#: commands/vacuum.c:607
+#: commands/vacuum.c:604
 msgid "oldest xmin is far in the past"
 msgstr "xmin mais velho � muito antigo"
 
-#: commands/vacuum.c:608
+#: commands/vacuum.c:605
 msgid "Close open transactions soon to avoid wraparound problems."
 msgstr ""
 "Feche transa��es abertas imediatamente para evitar problemas de reciclagem "
 "de transa��es."
 
-#: commands/vacuum.c:825
+#: commands/vacuum.c:838
 msgid "some databases have not been vacuumed in over 2 billion transactions"
 msgstr ""
 "alguns bancos de dados n�o foram faxinados a mais de 2 bilh�es de transa��es"
 
-#: commands/vacuum.c:826
+#: commands/vacuum.c:839
 msgid "You may have already suffered transaction-wraparound data loss."
 msgstr ""
 "Voc� j� pode ter sofrido problemas de perda de dados devido a reciclagem de "
 "transa��es."
 
-#: commands/vacuum.c:837
+#: commands/vacuum.c:853
 msgid "some databases have not been vacuumed in over 1 billion transactions"
 msgstr ""
 "alguns bancos de dados n�o foram faxinados a mais de 1 bilh�o de transa��es"
 
-#: commands/vacuum.c:838
+#: commands/vacuum.c:854
 msgid "Better vacuum them soon, or you may have a wraparound failure."
 msgstr ""
 "Melhor faxin�-los logo, ou voc� pode ter uma falha por causa da reciclagem "
 "de transa��es."
 
-#: commands/vacuum.c:845
-#, c-format
-msgid "some databases have not been vacuumed in %d transactions"
-msgstr "alguns bancos de dados n�o foram faxinados em %d transa��es"
-
-#: commands/vacuum.c:847
-#, c-format
-msgid ""
-"Better vacuum them within %d transactions, or you may have a wraparound "
-"failure."
-msgstr ""
-"Melhor faxin�-los ap�s %d transa��es, ou voc� pode ter uma falha por causa "
-"da reciclagem de transa��es."
-
-#: commands/vacuum.c:943
+#: commands/vacuum.c:962
 #, c-format
 msgid "skipping \"%s\" --- only table or database owner can vacuum it"
 msgstr ""
 "ignorando \"%s\" --- somente dono de tabela ou de banco de dados pode faxin�-"
 "la(o)"
 
-#: commands/vacuum.c:958
+#: commands/vacuum.c:977
 #, c-format
 msgid ""
 "skipping \"%s\" --- cannot vacuum indexes, views, or special system tables"
@@ -8177,7 +8026,7 @@ msgstr ""
 "ignorando \"%s\" --- n�o pode faxinar �ndices, vis�es ou tabelas especiais "
 "do sistema"
 
-#: commands/vacuum.c:1352
+#: commands/vacuum.c:1361
 #, c-format
 msgid ""
 "relation \"%s\" TID %u/%u: InsertTransactionInProgress %u --- can't shrink "
@@ -8186,7 +8035,7 @@ msgstr ""
 "rela��o \"%s\" TID %u/%u: InsertTransactionInProgress %u --- n�o pode "
 "reduzir rela��o"
 
-#: commands/vacuum.c:1365
+#: commands/vacuum.c:1374
 #, c-format
 msgid ""
 "relation \"%s\" TID %u/%u: DeleteTransactionInProgress %u --- can't shrink "
@@ -8195,7 +8044,7 @@ msgstr ""
 "rela��o \"%s\" TID %u/%u: DeleteTransactionInProgress %u --- n�o pode "
 "reduzir rela��o"
 
-#: commands/vacuum.c:1521
+#: commands/vacuum.c:1530
 #, c-format
 msgid ""
 "%.0f dead row versions cannot be removed yet.\n"
@@ -8215,12 +8064,12 @@ msgstr ""
 "%u p�ginas contendo %.0f bytes livres s�o destinos potenciais.\n"
 "%s"
 
-#: commands/vacuum.c:2270
+#: commands/vacuum.c:2285
 #, c-format
 msgid "\"%s\": moved %u row versions, truncated %u to %u pages"
 msgstr "\"%s\": movidas %u vers�es de registros, truncadas %u em %u p�ginas"
 
-#: commands/vacuum.c:2920 commands/vacuum.c:2989
+#: commands/vacuum.c:2917 commands/vacuum.c:2986
 #, c-format
 msgid ""
 "index \"%s\" contains %.0f row versions, but table contains %.0f row versions"
@@ -8228,7 +8077,7 @@ msgstr ""
 "�ndice \"%s\" cont�m %.0f vers�es de registros, mas tabela cont�m %.0f "
 "vers�es de registros"
 
-#: commands/vacuum.c:2923 commands/vacuum.c:2992
+#: commands/vacuum.c:2920 commands/vacuum.c:2989
 msgid "Rebuild the index with REINDEX."
 msgstr "Reconstrua o �ndice com REINDEX."
 
@@ -8281,73 +8130,73 @@ msgstr "valor de START (%s) n
 msgid "CACHE (%s) must be greater than zero"
 msgstr "CACHE (%s) deve ser maior do que zero"
 
-#: commands/aggregatecmds.c:97
+#: commands/aggregatecmds.c:99
 #, c-format
 msgid "aggregate attribute \"%s\" not recognized"
 msgstr "atributo da agrega��o \"%s\" desconhecido"
 
-#: commands/aggregatecmds.c:107
+#: commands/aggregatecmds.c:109
 msgid "aggregate basetype must be specified"
 msgstr "tipo base (basetype) da agrega��o deve ser especificado"
 
-#: commands/aggregatecmds.c:111
+#: commands/aggregatecmds.c:113
 msgid "aggregate stype must be specified"
 msgstr "tipo de transi��o (stype) da agrega��o deve ser especificado"
 
-#: commands/aggregatecmds.c:115
+#: commands/aggregatecmds.c:117
 msgid "aggregate sfunc must be specified"
 msgstr "fun��o de transi��o (sfunc) da agrega��o deve ser especificado"
 
-#: commands/aggregatecmds.c:138
+#: commands/aggregatecmds.c:140
 #, c-format
 msgid "aggregate transition data type cannot be %s"
 msgstr "tipo de dado de transi��o da agrega��o n�o pode ser %s"
 
-#: commands/aggregatecmds.c:258
+#: commands/aggregatecmds.c:261
 #, c-format
 msgid "function %s(*) already exists in schema \"%s\""
 msgstr "fun��o %s(*) j� existe no esquema \"%s\""
 
-#: commands/schemacmds.c:85
+#: commands/schemacmds.c:84
 #, c-format
 msgid "\"%s\" is not a superuser, so cannot create a schema for \"%s\""
 msgstr ""
 "\"%s\" n�o � um super-usu�rio, ent�o n�o pode criar um esquema para \"%s\""
 
-#: commands/schemacmds.c:100 commands/schemacmds.c:268
+#: commands/schemacmds.c:99 commands/schemacmds.c:267
 #, c-format
 msgid "unacceptable schema name \"%s\""
 msgstr "nome de esquema \"%s\" � inaceit�vel"
 
-#: commands/schemacmds.c:101 commands/schemacmds.c:269
+#: commands/schemacmds.c:100 commands/schemacmds.c:268
 msgid "The prefix \"pg_\" is reserved for system schemas."
 msgstr "O prefixo \"pg_\" � reservado para esquemas do sistema."
 
-#: commands/schemacmds.c:252 catalog/pg_namespace.c:51
+#: commands/schemacmds.c:251 catalog/pg_namespace.c:50
 #, c-format
 msgid "schema \"%s\" already exists"
 msgstr "esquema \"%s\" j� existe"
 
-#: parser/parse_clause.c:363
+#: parser/parse_clause.c:364
 #, c-format
 msgid "JOIN/ON clause refers to \"%s\", which is not part of JOIN"
 msgstr "cl�usula JOIN/ON referencia \"%s\", que n�o faz parte do JOIN"
 
-#: parser/parse_clause.c:423 gram.y:5161
+#: parser/parse_clause.c:424 gram.y:5262
 msgid "subquery in FROM must have an alias"
 msgstr "subconsulta no FROM deve ter um alias"
 
-#: parser/parse_clause.c:446
+#: parser/parse_clause.c:447
 msgid "subquery in FROM may not have SELECT INTO"
 msgstr "subconsulta no FROM n�o deve ter SELECT INTO"
 
-#: parser/parse_clause.c:468
+#: parser/parse_clause.c:469
 msgid "subquery in FROM may not refer to other relations of same query level"
 msgstr ""
 "subconsulta no FROM n�o pode referenciar outras rela��es do mesmo n�vel da "
 "consulta"
 
-#: parser/parse_clause.c:527
+#: parser/parse_clause.c:528
 msgid ""
 "function expression in FROM may not refer to other relations of same query "
 "level"
@@ -8355,56 +8204,56 @@ msgstr ""
 "express�o da fun��o no FROM n�o pode referenciar outras rela��es do mesmo "
 "n�vel da consulta"
 
-#: parser/parse_clause.c:539
+#: parser/parse_clause.c:540
 msgid "cannot use aggregate function in function expression in FROM"
 msgstr "n�o pode utilizar fun��o de agrega��o na express�o da fun��o no FROM"
 
-#: parser/parse_clause.c:759
+#: parser/parse_clause.c:760
 #, c-format
 msgid "column name \"%s\" appears more than once in USING clause"
 msgstr "nome da coluna \"%s\" aparece mais de uma vez na cl�usula USING"
 
-#: parser/parse_clause.c:774
+#: parser/parse_clause.c:775
 #, c-format
 msgid "common column name \"%s\" appears more than once in left table"
 msgstr "coluna comum \"%s\" aparece mais de uma vez na tabela � esquerda"
 
-#: parser/parse_clause.c:783
+#: parser/parse_clause.c:784
 #, c-format
 msgid "column \"%s\" specified in USING clause does not exist in left table"
 msgstr ""
 "coluna \"%s\" especificada na cl�usula USING n�o existe na tabela � esquerda"
 
-#: parser/parse_clause.c:797
+#: parser/parse_clause.c:798
 #, c-format
 msgid "common column name \"%s\" appears more than once in right table"
 msgstr "coluna comum \"%s\" aparece mais de uma vez na tabela � direita"
 
-#: parser/parse_clause.c:806
+#: parser/parse_clause.c:807
 #, c-format
 msgid "column \"%s\" specified in USING clause does not exist in right table"
 msgstr ""
 "coluna \"%s\" especificada na cl�usula USING n�o existe na tabela � direita"
 
-#: parser/parse_clause.c:858
+#: parser/parse_clause.c:859
 #, c-format
 msgid "column alias list for \"%s\" has too many entries"
 msgstr "lista de aliases de coluna para \"%s\" tem muitas entradas"
 
 #. translator: %s is name of a SQL construct, eg LIMIT
-#: parser/parse_clause.c:1051
+#: parser/parse_clause.c:1052
 #, c-format
 msgid "argument of %s must not contain variables"
 msgstr "argumento do %s n�o deve conter vari�veis"
 
 #. translator: %s is name of a SQL construct, eg LIMIT
-#: parser/parse_clause.c:1059
+#: parser/parse_clause.c:1060
 #, c-format
 msgid "argument of %s must not contain aggregates"
 msgstr "argumento do %s n�o deve conter agrega��es"
 
 #. translator: %s is name of a SQL construct, eg LIMIT
-#: parser/parse_clause.c:1067
+#: parser/parse_clause.c:1068
 #, c-format
 msgid "argument of %s must not contain subqueries"
 msgstr "argumento do %s n�o deve conter subconsultas"
@@ -8421,23 +8270,23 @@ msgid "non-integer constant in %s"
 msgstr "constante n�o-inteira em %s"
 
 #. translator: %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1218
+#: parser/parse_clause.c:1217
 #, c-format
 msgid "%s position %d is not in select list"
 msgstr "posi��o do %s %d n�o est� na lista do select"
 
-#: parser/parse_clause.c:1411
+#: parser/parse_clause.c:1409
 msgid "for SELECT DISTINCT, ORDER BY expressions must appear in select list"
 msgstr ""
 "para SELECT DISTINCT, express�es ORDER BY devem aparecer na lista do select"
 
-#: parser/parse_clause.c:1451
+#: parser/parse_clause.c:1449
 msgid "SELECT DISTINCT ON expressions must match initial ORDER BY expressions"
 msgstr ""
 "express�es SELECT DISTINCT ON devem corresponder com express�es iniciais do "
 "ORDER BY"
 
-#: parser/parse_agg.c:74 optimizer/util/clauses.c:428 executor/execQual.c:2877
+#: parser/parse_agg.c:74 optimizer/util/clauses.c:473 executor/execQual.c:2849
 msgid "aggregate function calls may not be nested"
 msgstr "chamadas de fun��es de agrega��o n�o podem ser aninhadas"
 
@@ -8472,78 +8321,83 @@ msgstr "subconsulta utiliza coluna desagrupada \"%s.%s\" na consulta externa"
 msgid "identifier \"%s\" will be truncated to \"%.*s\""
 msgstr "identificador \"%s\" ser� truncado para \"%.*s\""
 
-#: parser/parse_relation.c:174 parser/parse_relation.c:189
+#: parser/parse_relation.c:177 parser/parse_relation.c:192
 #, c-format
 msgid "table reference \"%s\" is ambiguous"
 msgstr "refer�ncia a tabela \"%s\" � amb�gua"
 
-#: parser/parse_relation.c:249 parser/parse_relation.c:264
+#: parser/parse_relation.c:252 parser/parse_relation.c:267
 #, c-format
 msgid "table reference %u is ambiguous"
 msgstr "refer�ncia a tabela %u � amb�gua"
 
-#: parser/parse_relation.c:356 parser/parse_relation.c:368
+#: parser/parse_relation.c:359 parser/parse_relation.c:371
 #, c-format
 msgid "table name \"%s\" specified more than once"
 msgstr "nome da tabela \"%s\" foi especificado mais de uma vez"
 
-#: parser/parse_relation.c:510 parser/parse_relation.c:609
+#: parser/parse_relation.c:513 parser/parse_relation.c:613
 #, c-format
 msgid "column reference \"%s\" is ambiguous"
 msgstr "refer�ncia � coluna \"%s\" � amb�gua"
 
-#: parser/parse_relation.c:726 parser/parse_relation.c:925
+#: parser/parse_relation.c:730 parser/parse_relation.c:909
 #, c-format
 msgid "table \"%s\" has %d columns available but %d columns specified"
 msgstr "tabela \"%s\" tem %d colunas dispon�veis mas %d colunas especificadas"
 
-#: parser/parse_relation.c:997
+#: parser/parse_relation.c:985
 msgid ""
 "a column definition list is only allowed for functions returning \"record\""
 msgstr ""
 "uma lista de defini��o de colunas somente � permitida para fun��es que "
 "retornam \"record\""
 
-#: parser/parse_relation.c:1008
+#: parser/parse_relation.c:992
 msgid "a column definition list is required for functions returning \"record\""
 msgstr ""
 "uma lista de defini��o de colunas � requerida para fun��es que retornam "
 "\"record\""
 
-#: parser/parse_relation.c:1047
+#: parser/parse_relation.c:1011
 #, c-format
 msgid "too many column aliases specified for function %s"
 msgstr "muitos aliases de coluna especificados para fun��o %s"
 
-#: parser/parse_relation.c:1071
+#: parser/parse_relation.c:1035
 #, c-format
 msgid "function \"%s\" in FROM has unsupported return type %s"
 msgstr "fun��o \"%s\" no FROM tem tipo de retorno que n�o � suportado %s"
 
-#: parser/parse_relation.c:2003
+#: parser/parse_relation.c:1651
+#, c-format
+msgid "column %d of relation \"%s\" does not exist"
+msgstr "coluna %d da rela��o \"%s\" n�o existe"
+
+#: parser/parse_relation.c:1961
 #, c-format
 msgid "missing FROM-clause entry in subquery for table \"%s\""
 msgstr "faltando entrada para tabela \"%s\" na cl�usula FROM da subconsulta"
 
-#: parser/parse_relation.c:2008
+#: parser/parse_relation.c:1966
 #, c-format
 msgid "missing FROM-clause entry for table \"%s\""
 msgstr "faltando entrada para tabela \"%s\" na cl�usula FROM"
 
-#: parser/parse_relation.c:2027
+#: parser/parse_relation.c:1975
 #, c-format
 msgid "adding missing FROM-clause entry in subquery for table \"%s\""
 msgstr ""
 "adicionando entrada para tabela \"%s\" que faltava na cl�usula FROM da "
 "subconsulta"
 
-#: parser/parse_relation.c:2032
+#: parser/parse_relation.c:1980
 #, c-format
 msgid "adding missing FROM-clause entry for table \"%s\""
 msgstr "adicionando entrada para tabela \"%s\" que faltava na cl�usula FROM"
 
-#: parser/parse_coerce.c:221 parser/analyze.c:3144 parser/parse_expr.c:116
-#: parser/parse_expr.c:122
+#: parser/parse_coerce.c:221 parser/analyze.c:3173 parser/parse_expr.c:516
+#: parser/parse_expr.c:522
 #, c-format
 msgid "there is no parameter $%d"
 msgstr "n�o h� par�metro $%d"
@@ -8553,71 +8407,71 @@ msgstr "n
 msgid "inconsistent types deduced for parameter $%d"
 msgstr "tipos inconsitentes deduzidos do par�metro $%d"
 
-#: parser/parse_coerce.c:696 parser/parse_coerce.c:723
-#: parser/parse_coerce.c:739 parser/parse_coerce.c:753
-#: parser/parse_expr.c:1671
+#: parser/parse_coerce.c:710 parser/parse_coerce.c:737
+#: parser/parse_coerce.c:753 parser/parse_coerce.c:767
+#: parser/parse_expr.c:1733
 #, c-format
 msgid "cannot cast type %s to %s"
 msgstr "n�o pode converter tipo %s para %s"
 
-#: parser/parse_coerce.c:726
+#: parser/parse_coerce.c:740
 msgid "Input has too few columns."
 msgstr "Entrada tem poucas colunas."
 
-#: parser/parse_coerce.c:742
+#: parser/parse_coerce.c:756
 #, c-format
 msgid "Cannot cast type %s to %s in column %d."
 msgstr "N�o pode converter tipo %s para %s na coluna %d."
 
-#: parser/parse_coerce.c:756
+#: parser/parse_coerce.c:770
 msgid "Input has too many columns."
 msgstr "Entrada tem muitas colunas."
 
 #. translator: first %s is name of a SQL construct, eg WHERE
-#: parser/parse_coerce.c:790
+#: parser/parse_coerce.c:804
 #, c-format
 msgid "argument of %s must be type boolean, not type %s"
 msgstr "argumento do %s deve ser do tipo boolean, e n�o do tipo %s"
 
 #. translator: %s is name of a SQL construct, eg WHERE
 #. translator: %s is name of a SQL construct, eg LIMIT
-#: parser/parse_coerce.c:798 parser/parse_coerce.c:837
+#: parser/parse_coerce.c:812 parser/parse_coerce.c:851
 #, c-format
 msgid "argument of %s must not return a set"
 msgstr "argumento do %s n�o deve retornar um conjunto"
 
 #. translator: first %s is name of a SQL construct, eg LIMIT
-#: parser/parse_coerce.c:829
+#: parser/parse_coerce.c:843
 #, c-format
 msgid "argument of %s must be type integer, not type %s"
 msgstr "argumento do %s deve ser do tipo integer, e n�o do tipo %s"
 
-#: parser/parse_coerce.c:891
+#: parser/parse_coerce.c:905
 #, c-format
 msgid "%s types %s and %s cannot be matched"
 msgstr "tipos no %s %s e %s n�o podem ser correspondidos"
 
 #. translator: first %s is name of a SQL construct, eg CASE
-#: parser/parse_coerce.c:953
+#: parser/parse_coerce.c:967
 #, c-format
 msgid "%s could not convert type %s to %s"
 msgstr "%s n�o p�de converter tipo %s para %s"
 
-#: parser/parse_coerce.c:1129
+#: parser/parse_coerce.c:1143
 msgid "arguments declared \"anyelement\" are not all alike"
 msgstr "argumentos declarados \"anyelement\" n�o s�o de tipos compat�veis"
 
-#: parser/parse_coerce.c:1146
+#: parser/parse_coerce.c:1160
 msgid "arguments declared \"anyarray\" are not all alike"
 msgstr "argumentos declarados \"anyarray\" n�o s�o de tipos compat�veis"
 
-#: parser/parse_coerce.c:1175 parser/parse_coerce.c:1287
-#: parser/parse_coerce.c:1314
+#: parser/parse_coerce.c:1189 parser/parse_coerce.c:1301
+#: parser/parse_coerce.c:1328
 #, c-format
 msgid "argument declared \"anyarray\" is not an array but type %s"
 msgstr "argumento declarado \"anyarray\" n�o � uma matriz mas do tipo %s"
 
-#: parser/parse_coerce.c:1192
+#: parser/parse_coerce.c:1206
 msgid ""
 "argument declared \"anyarray\" is not consistent with argument declared "
 "\"anyelement\""
@@ -8625,7 +8479,7 @@ msgstr ""
 "argumento declarado \"anyarray\" n�o est� consistente com argumento "
 "declarado \"anyelement\""
 
-#: parser/parse_coerce.c:1203
+#: parser/parse_coerce.c:1217
 msgid ""
 "could not determine anyarray/anyelement type because input has type \"unknown"
 "\""
@@ -8633,325 +8487,317 @@ msgstr ""
 "n�o p�de determinar tipo de anyarray/anyelement porque entrada tem tipo "
 "\"unknown\""
 
-#: parser/parse_coerce.c:1228 parser/parse_coerce.c:1245
-#: parser/parse_coerce.c:1299 parser/parse_expr.c:807 parser/parse_expr.c:1364
-#: parser/parse_expr.c:1403 parser/parse_oper.c:920
+#: parser/parse_coerce.c:1242 parser/parse_coerce.c:1259
+#: parser/parse_coerce.c:1313 parser/parse_expr.c:1159
+#: parser/parse_expr.c:1428 parser/parse_expr.c:1465 parser/parse_oper.c:920
 #, c-format
 msgid "could not find array type for data type %s"
 msgstr "n�o p�de encontrar tipo array para tipo de dado %s"
 
-#: y.tab.c:9499
+#: y.tab.c:9789
 msgid "syntax error: cannot back up"
 msgstr "erro de sintaxe: n�o pode voltar"
 
-#: gram.y:989 gram.y:1015
+#: gram.y:995 gram.y:1021
 msgid "time zone interval must be HOUR or HOUR TO MINUTE"
 msgstr "intervalo de zona hor�ria deve ser HOUR ou HOUR TO MINUTE"
 
-#: gram.y:1000 gram.y:5469 gram.y:7540
+#: gram.y:1006 gram.y:5570 gram.y:7641
 #, c-format
 msgid "INTERVAL(%d) precision must not be negative"
 msgstr "precis�o de INTERVAL(%d) n�o deve ser negativa"
 
-#: gram.y:1006 gram.y:5475 gram.y:7546
+#: gram.y:1012 gram.y:5576 gram.y:7647
 #, c-format
 msgid "INTERVAL(%d) precision reduced to maximum allowed, %d"
 msgstr "precis�o de INTERVAL(%d) reduzida ao m�ximo permitido, %d"
 
-#: gram.y:1976
+#: gram.y:1986
 msgid "CREATE TABLE AS may not specify INTO"
 msgstr "CREATE TABLE AS n�o pode especificar INTO"
 
-#: gram.y:2368 gram.y:2383 parser/analyze.c:2906 parser/analyze.c:2930
+#: gram.y:2378 gram.y:2393 parser/analyze.c:2935 parser/analyze.c:2959
 msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE"
 msgstr "restri��o declarada INITIALLY DEFERRED deve ser DEFERRABLE"
 
-#: gram.y:2435
+#: gram.y:2445
 msgid "CREATE ASSERTION is not yet implemented"
 msgstr "CREATE ASSERTION ainda n�o foi implementado"
 
-#: gram.y:2451
+#: gram.y:2461
 msgid "DROP ASSERTION is not yet implemented"
 msgstr "DROP ASSERTION ainda n�o foi implementado"
 
-#: gram.y:2515 gram.y:7425 parser/parse_expr.c:1197 parser/parse_target.c:741
-#: catalog/namespace.c:1201
+#: gram.y:2525 gram.y:7526 parser/parse_expr.c:489 parser/parse_target.c:733
+#: catalog/namespace.c:1200
 #, c-format
 msgid "improper qualified name (too many dotted names): %s"
 msgstr "nome qualificado � inv�lido (nomes com muitos pontos): %s"
 
-#: gram.y:3323
-msgid "CREATE FUNCTION / OUT parameters are not implemented"
-msgstr "par�metros OUT de CREATE FUNCTION n�o est�o implementados"
-
-#: gram.y:3330
-msgid "CREATE FUNCTION / INOUT parameters are not implemented"
-msgstr "par�metros INOUT de CREATE FUNCTION n�o est�o implementados"
-
-#: gram.y:4540
+#: gram.y:4634
 msgid "column name list not allowed in CREATE TABLE / AS EXECUTE"
 msgstr "lista de colunas n�o � permitida em CREATE TABLE / AS EXECUTE"
 
-#: gram.y:5011
+#: gram.y:5111
 msgid "LIMIT #,# syntax is not supported"
 msgstr "sintaxe LIMIT #,# n�o � suportada"
 
-#: gram.y:5012
+#: gram.y:5112
 msgid "Use separate LIMIT and OFFSET clauses."
 msgstr "Utilize cl�usulas LIMIT e OFFSET separadas."
 
-#: gram.y:5162
+#: gram.y:5263
 msgid "For example, FROM (SELECT ...) [AS] foo."
 msgstr "Por exemplo, FROM (SELECT ...) [AS] foo."
 
-#: gram.y:5572
+#: gram.y:5673
 msgid "precision for type float must be at least 1 bit"
 msgstr "precis�o para tipo float deve ser pelo menos 1 bit"
 
-#: gram.y:5580
+#: gram.y:5681
 msgid "precision for type float must be less than 54 bits"
 msgstr "precis�o para tipo float deve ser menor do que 54 bits"
 
-#: gram.y:5594 gram.y:5609
+#: gram.y:5695 gram.y:5710
 #, c-format
 msgid "NUMERIC precision %d must be between 1 and %d"
 msgstr "precis�o do NUMERIC %d deve ser entre 1 e %d"
 
-#: gram.y:5599
+#: gram.y:5700
 #, c-format
 msgid "NUMERIC scale %d must be between 0 and precision %d"
 msgstr "escala do NUMERIC %d deve ser entre 0 e precis�o %d"
 
-#: gram.y:5627 gram.y:5642
+#: gram.y:5728 gram.y:5743
 #, c-format
 msgid "DECIMAL precision %d must be between 1 and %d"
 msgstr "precis�o do DECIMAL %d deve ser entre 1 e %d"
 
-#: gram.y:5632
+#: gram.y:5733
 #, c-format
 msgid "DECIMAL scale %d must be between 0 and precision %d"
 msgstr "escala do DECIMAL %d deve ser entre 0 e precis�o %d"
 
-#: gram.y:5692 gram.y:5770
+#: gram.y:5793 gram.y:5871
 #, c-format
 msgid "length for type %s must be at least 1"
 msgstr "tamanho para tipo %s deve ser pelo menos 1"
 
-#: gram.y:5697 gram.y:5775
+#: gram.y:5798 gram.y:5876
 #, c-format
 msgid "length for type %s cannot exceed %d"
 msgstr "tamanho para tipo %s n�o pode exceder %d"
 
-#: gram.y:5848
+#: gram.y:5949
 #, c-format
 msgid "TIMESTAMP(%d)%s precision must not be negative"
 msgstr "precis�o do TIMESTAMP(%d)%s n�o deve ser negativa"
 
-#: gram.y:5854
+#: gram.y:5955
 #, c-format
 msgid "TIMESTAMP(%d)%s precision reduced to maximum allowed, %d"
 msgstr "precis�o do TIMESTAMP(%d)%s reduzida ao m�ximo permitido, %d"
 
-#: gram.y:5889
+#: gram.y:5990
 #, c-format
 msgid "TIME(%d)%s precision must not be negative"
 msgstr "precis�o do TIME(%d)%s n�o deve ser negativa"
 
-#: gram.y:5895
+#: gram.y:5996
 #, c-format
 msgid "TIME(%d)%s precision reduced to maximum allowed, %d"
 msgstr "precis�o do TIME(%d)%s reduzida ao m�ximo permitido, %d"
 
-#: gram.y:6349
+#: gram.y:6450
 msgid "UNIQUE predicate is not yet implemented"
 msgstr "predicado UNIQUE ainda n�o foi implementado"
 
-#: gram.y:6632
+#: gram.y:6733
 #, c-format
 msgid "CURRENT_TIME(%d) precision must not be negative"
-msgstr "precis�o CURRENT_TIME(%d) n�o deve ser negativa"
+msgstr "precis�o do CURRENT_TIME(%d) n�o deve ser negativa"
 
-#: gram.y:6638
+#: gram.y:6739
 #, c-format
 msgid "CURRENT_TIME(%d) precision reduced to maximum allowed, %d"
 msgstr "precis�o do CURRENT_TIME(%d) reduzida ao m�ximo permitido, %d"
 
-#: gram.y:6686
+#: gram.y:6787
 #, c-format
 msgid "CURRENT_TIMESTAMP(%d) precision must not be negative"
 msgstr "precis�o do CURRENT_TIMESTAMP(%d) n�o deve ser negativa"
 
-#: gram.y:6692
+#: gram.y:6793
 #, c-format
 msgid "CURRENT_TIMESTAMP(%d) precision reduced to maximum allowed, %d"
 msgstr "precis�o do CURRENT_TIMESTAMP(%d) reduzida ao m�ximo permitido, %d"
 
-#: gram.y:6739
+#: gram.y:6840
 #, c-format
 msgid "LOCALTIME(%d) precision must not be negative"
 msgstr "precis�o do LOCALTIME(%d) n�o deve ser negativa"
 
-#: gram.y:6745
+#: gram.y:6846
 #, c-format
 msgid "LOCALTIME(%d) precision reduced to maximum allowed, %d"
 msgstr "precis�o do LOCALTIME(%d) reduzida ao m�ximo permitido, %d"
 
-#: gram.y:6793
+#: gram.y:6894
 #, c-format
 msgid "LOCALTIMESTAMP(%d) precision must not be negative"
 msgstr "precis�o do LOCALTIMESTAMP(%d) n�o deve ser negativa"
 
-#: gram.y:6799
+#: gram.y:6900
 #, c-format
 msgid "LOCALTIMESTAMP(%d) precision reduced to maximum allowed, %d"
 msgstr "precis�o do LOCALTIMESTAMP(%d) reduzida ao m�ximo permitido, %d"
 
-#: gram.y:7987
+#: gram.y:8089
 msgid "OLD used in query that is not in a rule"
 msgstr "OLD utilizado em consulta que n�o � uma regra"
 
-#: gram.y:7996
+#: gram.y:8098
 msgid "NEW used in query that is not in a rule"
 msgstr "NEW utilizado em consulta que n�o � uma regra"
 
-#: y.tab.c:19078
+#: y.tab.c:19471
 msgid "syntax error; also virtual memory exhausted"
 msgstr "erro de sintaxe; mem�ria virtual tamb�m se esgotou"
 
-#: y.tab.c:19082 gram.y:8221 gram.y:8223 gram.y:8240 gram.y:8242
+#: y.tab.c:19475 gram.y:8323 gram.y:8325 gram.y:8342 gram.y:8344
 msgid "syntax error"
 msgstr "erro de sintaxe"
 
-#: y.tab.c:19196
+#: y.tab.c:19589
 msgid "parser stack overflow"
 msgstr "estouro de pilha no analisador de sintaxe"
 
-#: gram.y:8195
+#: gram.y:8297
 msgid "wrong number of parameters on left side of OVERLAPS expression"
 msgstr "n�mero incorreto de par�metros no lado esquerdo da express�o OVERLAPS"
 
-#: gram.y:8201
+#: gram.y:8303
 msgid "wrong number of parameters on right side of OVERLAPS expression"
 msgstr "n�mero incorreto de par�metros no lado direito da express�o OVERLAPS"
 
-#: gram.y:8299
+#: gram.y:8402
 msgid "multiple ORDER BY clauses not allowed"
 msgstr "m�ltiplas cl�usulas ORDER BY n�o s�o permitidas"
 
-#: gram.y:8307
-msgid "multiple FOR UPDATE clauses not allowed"
-msgstr "m�ltiplas cl�usulas FOR UPDATE n�o s�o permitidas"
+#: gram.y:8412
+msgid "multiple FOR UPDATE/FOR SHARE clauses not allowed"
+msgstr "m�ltiplas cl�usulas FOR UPDATE/FOR SHARE n�o s�o permitidas"
 
-#: gram.y:8315
+#: gram.y:8432
 msgid "multiple OFFSET clauses not allowed"
 msgstr "m�ltiplas cl�usulas OFFSET n�o s�o permitidas"
 
-#: gram.y:8323
+#: gram.y:8440
 msgid "multiple LIMIT clauses not allowed"
 msgstr "m�ltiplas cl�usulas LIMIT n�o s�o permitidas"
 
-#: scan.l:312
+#: scan.l:313
 msgid "unterminated /* comment"
 msgstr "coment�rio /* n�o foi terminado"
 
-#: scan.l:339
+#: scan.l:340
 msgid "unterminated bit string literal"
 msgstr "cadeia de bits n�o foi terminada"
 
-#: scan.l:358
+#: scan.l:359
 msgid "unterminated hexadecimal string literal"
 msgstr "cadeia de caracteres hexadecimal n�o foi terminada"
 
-#: scan.l:407
+#: scan.l:408
 msgid "unterminated quoted string"
 msgstr "cadeia de caracteres entre aspas n�o foi terminada"
 
-#: scan.l:441
+#: scan.l:442
 msgid "unterminated dollar-quoted string"
 msgstr "cadeia de caracteres entre d�lares n�o foi terminada"
 
-#: scan.l:453
+#: scan.l:454
 msgid "zero-length delimited identifier"
 msgstr "identificador delimitado tem tamanho zero"
 
-#: scan.l:466
+#: scan.l:467
 msgid "unterminated quoted identifier"
 msgstr "identificador entre aspas n�o foi terminado"
 
 #. translator: %s is typically "syntax error"
-#: scan.l:621
+#: scan.l:622
 #, c-format
 msgid "%s at end of input"
 msgstr "%s no fim da entrada"
 
 #. translator: first %s is typically "syntax error"
-#: scan.l:629
+#: scan.l:630
 #, c-format
 msgid "%s at or near \"%s\""
 msgstr "%s em ou pr�ximo a \"%s\""
 
-#: parser/analyze.c:408
+#: parser/analyze.c:407
 #, c-format
 msgid "target lists can have at most %d entries"
 msgstr "listas de alvo podem ter no m�ximo %d entradas"
 
-#: parser/analyze.c:458
+#: parser/analyze.c:454
 msgid "CREATE VIEW specifies more column names than columns"
 msgstr "CREATE VIEW especificou mais nomes de colunas do que colunas"
 
-#: parser/analyze.c:595
+#: parser/analyze.c:599
 msgid "INSERT ... SELECT may not specify INTO"
 msgstr "INSERT ... SELECT n�o pode especificar INTO"
 
-#: parser/analyze.c:683
+#: parser/analyze.c:688
 msgid "INSERT has more expressions than target columns"
 msgstr "INSERT tem mais express�es do que colunas alvo"
 
-#: parser/analyze.c:704
+#: parser/analyze.c:709
 msgid "INSERT has more target columns than expressions"
 msgstr "INSERT tem mais colunas alvo do que express�es"
 
-#: parser/analyze.c:877
+#: parser/analyze.c:882
 #, c-format
 msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\""
 msgstr "%s criar� sequ�ncia impl�cita \"%s\" para coluna serial \"%s.%s\""
 
-#: parser/analyze.c:960 parser/analyze.c:970
+#: parser/analyze.c:965 parser/analyze.c:975
 #, c-format
 msgid ""
 "conflicting NULL/NOT NULL declarations for column \"%s\" of table \"%s\""
 msgstr ""
 "declara��es NULL/NOT NULL conflitantes para coluna \"%s\" da tabela \"%s\""
 
-#: parser/analyze.c:980
+#: parser/analyze.c:985
 #, c-format
 msgid "multiple default values specified for column \"%s\" of table \"%s\""
 msgstr ""
 "valores padr�o m�ltiplos especificados para coluna \"%s\" da tabela \"%s\""
 
-#: parser/analyze.c:1323
+#: parser/analyze.c:1328
 #, c-format
 msgid "column \"%s\" appears twice in primary key constraint"
 msgstr "coluna \"%s\" aparece duas vezes na restri��o de chave prim�ria"
 
-#: parser/analyze.c:1328
+#: parser/analyze.c:1333
 #, c-format
 msgid "column \"%s\" appears twice in unique constraint"
 msgstr "coluna \"%s\" aparece duas vezes na restri��o de unicidade"
 
-#: parser/analyze.c:1511
+#: parser/analyze.c:1516
 msgid "index expression may not return a set"
 msgstr "express�o de �ndice n�o pode retornar um conjunto"
 
-#: parser/analyze.c:1603
+#: parser/analyze.c:1607
 msgid "rule WHERE condition may not contain references to other relations"
 msgstr "condi��o WHERE de regra n�o pode conter refer�ncias a outras rela��es"
 
-#: parser/analyze.c:1609
+#: parser/analyze.c:1613
 msgid "rule WHERE condition may not contain aggregate functions"
 msgstr "condi��o WHERE de regra n�o pode conter fun��es de agrega��o"
 
-#: parser/analyze.c:1680
+#: parser/analyze.c:1684
 msgid ""
 "rules with WHERE conditions may only have SELECT, INSERT, UPDATE, or DELETE "
 "actions"
@@ -8959,28 +8805,27 @@ msgstr ""
 "regras com condi��es WHERE s� podem ter a��es SELECT, INSERT, UPDATE ou "
 "DELETE"
 
-#: parser/analyze.c:1717
+#: parser/analyze.c:1721
 msgid "ON SELECT rule may not use OLD"
 msgstr "regra ON SELECT n�o pode utilizar OLD"
 
-#: parser/analyze.c:1721
+#: parser/analyze.c:1725
 msgid "ON SELECT rule may not use NEW"
 msgstr "regra ON SELECT n�o pode utilizar NEW"
 
-#: parser/analyze.c:1730
+#: parser/analyze.c:1734
 msgid "ON INSERT rule may not use OLD"
 msgstr "regra ON INSERT n�o pode utilizar OLD"
 
-#: parser/analyze.c:1736
+#: parser/analyze.c:1740
 msgid "ON DELETE rule may not use NEW"
 msgstr "regra ON DELETE n�o pode utilizar NEW"
 
-#: parser/analyze.c:1945 parser/analyze.c:2111 parser/analyze.c:2718
-#: optimizer/plan/planner.c:641
-msgid "SELECT FOR UPDATE is not allowed with UNION/INTERSECT/EXCEPT"
-msgstr "SELECT FOR UPDATE n�o � permitido com UNION/INTERSECT/EXCEPT"
+#: parser/analyze.c:1953 parser/analyze.c:2116 optimizer/plan/planner.c:644
+msgid "SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT"
+msgstr "SELECT FOR UPDATE/SHARE n�o � permitido com UNION/INTERSECT/EXCEPT"
 
-#: parser/analyze.c:2068
+#: parser/analyze.c:2073
 msgid ""
 "ORDER BY on a UNION/INTERSECT/EXCEPT result must be on one of the result "
 "columns"
@@ -8988,196 +8833,215 @@ msgstr ""
 "ORDER BY em um resultado UNION/INTERSECT/EXCEPT deve ser uma das colunas do "
 "resultado"
 
-#: parser/analyze.c:2106
+#: parser/analyze.c:2111
 msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT"
 msgstr "INTO s� � permitido no primeiro SELECT do UNION/INTERSECT/EXCEPT"
 
-#: parser/analyze.c:2167
+#: parser/analyze.c:2172
 msgid ""
 "UNION/INTERSECT/EXCEPT member statement may not refer to other relations of "
 "same query level"
 msgstr ""
-"senten�a membro do UNION/INTERSECT/EXCEPT n�o pode referenciar outras "
+"comando membro do UNION/INTERSECT/EXCEPT n�o pode referenciar outras "
 "rela��es do mesmo n�vel da consulta"
 
-#: parser/analyze.c:2222
+#: parser/analyze.c:2227
 #, c-format
 msgid "each %s query must have the same number of columns"
 msgstr "cada consulta %s deve ter o mesmo n�mero de colunas"
 
-#: parser/analyze.c:2294
+#: parser/analyze.c:2298
 msgid "CREATE TABLE AS specifies too many column names"
 msgstr "CREATE TABLE AS especificou muitos nomes de colunas"
 
-#: parser/analyze.c:2577
+#: parser/analyze.c:2580
 msgid "cannot specify both SCROLL and NO SCROLL"
 msgstr "n�o pode especificar SCROLL e NO SCROLL"
 
-#: parser/analyze.c:2664
+#: parser/analyze.c:2667
 #, c-format
 msgid "wrong number of parameters for prepared statement \"%s\""
 msgstr "n�mero incorreto de par�metros para comando preparado \"%s\""
 
-#: parser/analyze.c:2666
+#: parser/analyze.c:2669
 #, c-format
 msgid "Expected %d parameters but got %d."
 msgstr "Esperado %d par�metros mas recebeu %d."
 
-#: parser/analyze.c:2681
+#: parser/analyze.c:2684
 msgid "cannot use subquery in EXECUTE parameter"
 msgstr "n�o pode utilizar subconsulta no par�metro EXECUTE"
 
-#: parser/analyze.c:2685
+#: parser/analyze.c:2688
 msgid "cannot use aggregate function in EXECUTE parameter"
 msgstr "n�o pode utilizar fun��o de agrega��o no par�metro EXECUTE"
 
-#: parser/analyze.c:2697
+#: parser/analyze.c:2700
 #, c-format
 msgid "parameter $%d of type %s cannot be coerced to the expected type %s"
 msgstr "par�metro $%d do tipo %s n�o pode ser convertido para tipo esperado %s"
 
-#: parser/analyze.c:2722
-msgid "SELECT FOR UPDATE is not allowed with DISTINCT clause"
-msgstr "SELECT FOR UPDATE n�o � permitido com a cl�usula DISTINCT"
+#. translator: %s is a SQL command, like SELECT FOR UPDATE
+#: parser/analyze.c:2729
+#, c-format
+msgid "%s is not allowed with UNION/INTERSECT/EXCEPT"
+msgstr "%s n�o � permitido com UNION/INTERSECT/EXCEPT"
 
-#: parser/analyze.c:2726
-msgid "SELECT FOR UPDATE is not allowed with GROUP BY clause"
-msgstr "SELECT FOR UPDATE n�o � permitido com a cl�usula GROUP BY"
+#. translator: %s is a SQL command, like SELECT FOR UPDATE
+#: parser/analyze.c:2734
+#, c-format
+msgid "%s is not allowed with DISTINCT clause"
+msgstr "%s n�o � permitido com a cl�usula DISTINCT"
+
+#. translator: %s is a SQL command, like SELECT FOR UPDATE
+#: parser/analyze.c:2739
+#, c-format
+msgid "%s is not allowed with GROUP BY clause"
+msgstr "%s n�o � permitido com a cl�usula GROUP BY"
+
+#. translator: %s is a SQL command, like SELECT FOR UPDATE
+#: parser/analyze.c:2744
+#, c-format
+msgid "%s is not allowed with HAVING clause"
+msgstr "%s n�o � permitido com a cl�usula DISTINCT"
 
-#: parser/analyze.c:2730
-msgid "SELECT FOR UPDATE is not allowed with aggregate functions"
-msgstr "SELECT FOR UPDATE n�o � permitido com fun��es de agrega��o"
+#. translator: %s is a SQL command, like SELECT FOR UPDATE
+#: parser/analyze.c:2749
+#, c-format
+msgid "%s is not allowed with aggregate functions"
+msgstr "%s n�o � permitido com fun��es de agrega��o"
 
-#: parser/analyze.c:2812
-msgid "SELECT FOR UPDATE cannot be applied to a join"
-msgstr "SELECT FOR UPDATE n�o pode ser aplicado em uma jun��o"
+#: parser/analyze.c:2841
+msgid "SELECT FOR UPDATE/SHARE cannot be applied to a join"
+msgstr "SELECT FOR UPDATE/SHARE n�o pode ser aplicado em uma jun��o"
 
-#: parser/analyze.c:2817
-msgid "SELECT FOR UPDATE cannot be applied to NEW or OLD"
-msgstr "SELECT FOR UPDATE n�o pode ser aplicado a NEW ou OLD"
+#: parser/analyze.c:2846
+msgid "SELECT FOR UPDATE/SHARE cannot be applied to NEW or OLD"
+msgstr "SELECT FOR UPDATE/SHARE n�o pode ser aplicado a NEW ou OLD"
 
-#: parser/analyze.c:2822
-msgid "SELECT FOR UPDATE cannot be applied to a function"
-msgstr "SELECT FOR UPDATE n�o pode ser aplicado a uma fun��o"
+#: parser/analyze.c:2851
+msgid "SELECT FOR UPDATE/SHARE cannot be applied to a function"
+msgstr "SELECT FOR UPDATE/SHARE n�o pode ser aplicado a uma fun��o"
 
-#: parser/analyze.c:2835
+#: parser/analyze.c:2864
 #, c-format
-msgid "relation \"%s\" in FOR UPDATE clause not found in FROM clause"
+msgid "relation \"%s\" in FOR UPDATE/SHARE clause not found in FROM clause"
 msgstr ""
-"rela��o \"%s\" na cl�usula FOR UPDATE n�o foi encontrada na cl�usula FROM"
+"rela��o \"%s\" na cl�usula FOR UPDATE/SHARE n�o foi encontrada na cl�usula "
+"FROM"
 
-#: parser/analyze.c:2882
+#: parser/analyze.c:2911
 msgid "misplaced DEFERRABLE clause"
 msgstr "cl�usula DEFERRABLE no lugar errado"
 
-#: parser/analyze.c:2886 parser/analyze.c:2899
+#: parser/analyze.c:2915 parser/analyze.c:2928
 msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed"
 msgstr "m�ltiplas cl�usulas DEFERRABLE/NOT DEFERRABLE n�o s�o permitidas"
 
-#: parser/analyze.c:2895
+#: parser/analyze.c:2924
 msgid "misplaced NOT DEFERRABLE clause"
 msgstr "cl�usula NOT DEFERRABLE no lugar errado"
 
-#: parser/analyze.c:2913
+#: parser/analyze.c:2942
 msgid "misplaced INITIALLY DEFERRED clause"
 msgstr "cl�usula INITIALLY DEFERRED no lugar errado"
 
-#: parser/analyze.c:2917 parser/analyze.c:2941
+#: parser/analyze.c:2946 parser/analyze.c:2970
 msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed"
 msgstr "m�ltiplas cl�usulas INITTIALLY IMMEDIATE/DEFERRED n�o s�o permitidas"
 
-#: parser/analyze.c:2937
+#: parser/analyze.c:2966
 msgid "misplaced INITIALLY IMMEDIATE clause"
 msgstr "cl�usula INITIALLY IMMEDIATE no lugar errado"
 
-#: parser/analyze.c:2990
+#: parser/analyze.c:3019
 #, c-format
 msgid ""
 "CREATE specifies a schema (%s) different from the one being created (%s)"
 msgstr ""
 "CREATE especificou um esquema (%s) diferente daquele que foi criado (%s)"
 
-#: parser/parse_expr.c:361
+#: parser/parse_expr.c:463 parser/parse_target.c:724 catalog/namespace.c:1194
+#, c-format
+msgid "cross-database references are not implemented: %s"
+msgstr "refer�ncias cruzadas entre bancos de dados n�o est� implementada: %s"
+
+#: parser/parse_expr.c:722
 msgid "NULLIF requires = operator to yield boolean"
 msgstr "NULLIF requer que operador = retorne booleano"
 
-#: parser/parse_expr.c:486
+#: parser/parse_expr.c:966
 msgid "subquery must return a column"
 msgstr "subconsulta deve retornar uma coluna"
 
-#: parser/parse_expr.c:492
+#: parser/parse_expr.c:972
 msgid "subquery must return only one column"
 msgstr "subconsulta deve retornar somente uma coluna"
 
-#: parser/parse_expr.c:549
+#: parser/parse_expr.c:1028
 #, c-format
 msgid "row comparison cannot use operator %s"
 msgstr "compara��o de registros n�o pode utilizar operador %s"
 
-#: parser/parse_expr.c:576
+#: parser/parse_expr.c:1054
 msgid "subquery has too many columns"
 msgstr "subconsulta tem muitas colunas"
 
-#: parser/parse_expr.c:594
+#: parser/parse_expr.c:1072
 #, c-format
 msgid "operator %s must return type boolean, not type %s"
 msgstr "operador %s deve retornar tipo boolean, e n�o tipo %s"
 
-#: parser/parse_expr.c:597 parser/parse_expr.c:604
+#: parser/parse_expr.c:1075 parser/parse_expr.c:1082
 msgid ""
 "The operator of a quantified predicate subquery must return type boolean."
 msgstr ""
 "O operador de um predicado quantificado de uma subconsulta deve retornar "
 "tipo boolean."
 
-#: parser/parse_expr.c:602
+#: parser/parse_expr.c:1080
 #, c-format
 msgid "operator %s must not return a set"
 msgstr "operador %s n�o deve retornar um conjunto"
 
-#: parser/parse_expr.c:614
+#: parser/parse_expr.c:1092
 msgid "subquery has too few columns"
 msgstr "subconsulta tem poucas colunas"
 
-#: parser/parse_expr.c:1171 parser/parse_target.c:732 catalog/namespace.c:1195
-#, c-format
-msgid "cross-database references are not implemented: %s"
-msgstr "refer�ncias cruzadas entre bancos de dados n�o est� implementada: %s"
-
-#: parser/parse_expr.c:1705 parser/parse_expr.c:1784
+#: parser/parse_expr.c:1767 parser/parse_expr.c:1846
 msgid "unequal number of entries in row expression"
 msgstr "n�mero desigual de entradas em express�o de registro"
 
-#: parser/parse_expr.c:1726
+#: parser/parse_expr.c:1788
 #, c-format
 msgid "operator %s is not supported for row expressions"
 msgstr "operador %s n�o � suportado em express�es de registro"
 
-#: parser/parse_expr.c:1821
+#: parser/parse_expr.c:1883
 msgid "IS DISTINCT FROM requires = operator to yield boolean"
 msgstr "IS DISTINCT FROM requer que operador = retorne booleano"
 
-#: parser/parse_func.c:88
+#: parser/parse_func.c:84 parser/parse_func.c:377 executor/execQual.c:737
 #, c-format
 msgid "cannot pass more than %d arguments to a function"
 msgstr "n�o pode passar mais do que %d argumentos para uma fun��o"
 
-#: parser/parse_func.c:165
+#: parser/parse_func.c:159
 #, c-format
 msgid "%s(*) specified, but %s is not an aggregate function"
 msgstr "%s(*) especificado, mas %s n�o � uma fun��o de agrega��o"
 
-#: parser/parse_func.c:171
+#: parser/parse_func.c:165
 #, c-format
 msgid "DISTINCT specified, but %s is not an aggregate function"
 msgstr "DISTINCT especificado, mas %s n�o � uma fun��o de agrega��o"
 
-#: parser/parse_func.c:195
+#: parser/parse_func.c:189
 #, c-format
 msgid "function %s is not unique"
 msgstr "fun��o %s n�o � �nica"
 
-#: parser/parse_func.c:198
+#: parser/parse_func.c:192
 msgid ""
 "Could not choose a best candidate function. You may need to add explicit "
 "type casts."
@@ -9185,7 +9049,7 @@ msgstr ""
 "N�o p�de escolher uma fun��o que se enquadra melhor. Voc� precisa adicionar "
 "convers�es de tipo expl�citas."
 
-#: parser/parse_func.c:206
+#: parser/parse_func.c:200
 msgid ""
 "No function matches the given name and argument types. You may need to add "
 "explicit type casts."
@@ -9193,50 +9057,54 @@ msgstr ""
 "Nenhuma fun��o corresponde com o nome informado e os tipos de argumento. "
 "Voc� precisa adicionar convers�es de tipo expl�citas."
 
-#: parser/parse_func.c:255
+#: parser/parse_func.c:249
 msgid "aggregates may not return sets"
 msgstr "agrega��es n�o podem retornar conjuntos"
 
-#: parser/parse_func.c:1208
+#: parser/parse_func.c:1019
 #, c-format
 msgid "column %s.%s does not exist"
 msgstr "coluna %s.%s n�o existe"
 
-#: parser/parse_func.c:1219
+#: parser/parse_func.c:1030
 #, c-format
 msgid "column \"%s\" not found in data type %s"
 msgstr "coluna \"%s\" n�o foi encontrado no tipo de dado %s"
 
-#: parser/parse_func.c:1224
+#: parser/parse_func.c:1035
 #, c-format
 msgid "could not identify column \"%s\" in record data type"
 msgstr "n�o p�de identificar coluna \"%s\" no tipo de dado record"
 
-#: parser/parse_func.c:1229
+#: parser/parse_func.c:1040
 #, c-format
 msgid "column notation .%s applied to type %s, which is not a composite type"
 msgstr "nota��o de coluna .%s aplicada ao tipo %s, que n�o � um tipo composto"
 
-#: parser/parse_func.c:1301
+#: parser/parse_func.c:1112
 #, c-format
 msgid "aggregate %s(*) does not exist"
 msgstr "agrega��o %s(*) n�o existe"
 
-#: parser/parse_func.c:1306
+#: parser/parse_func.c:1117
 #, c-format
 msgid "aggregate %s(%s) does not exist"
 msgstr "agrega��o %s(%s) n�o existe"
 
-#: parser/parse_func.c:1327
+#: parser/parse_func.c:1138
 #, c-format
 msgid "function %s(%s) is not an aggregate"
 msgstr "fun��o %s(%s) n�o � uma agrega��o"
 
+#: parser/parse_func.c:1198 catalog/pg_proc.c:111
+#, c-format
+msgid "functions cannot have more than %d arguments"
+msgstr "fun��es n�o podem ter mais do que %d argumentos"
+
 #: parser/parse_node.c:95
 #, c-format
 msgid "cannot subscript type %s because it is not an array"
-msgstr ""
-"tipo do �ndice de uma matriz n�o pode ser %s porque ele n�o � uma matriz"
+msgstr "tipo %s n�o pode ter �ndice porque ele n�o � uma matriz"
 
 #: parser/parse_node.c:198 parser/parse_node.c:221
 msgid "array subscript must have type integer"
@@ -9294,25 +9162,25 @@ msgstr "op ANY/ALL (array) requer operador que retorna booleano"
 msgid "op ANY/ALL (array) requires operator not to return a set"
 msgstr "op ANY/ALL (array) requer operador que n�o retorne um conjunto"
 
-#: parser/parse_target.c:273 parser/parse_target.c:508
+#: parser/parse_target.c:269 parser/parse_target.c:497
 #, c-format
 msgid "cannot assign to system column \"%s\""
 msgstr "n�o pode atribuir a coluna do sistema \"%s\""
 
-#: parser/parse_target.c:297
+#: parser/parse_target.c:293
 msgid "cannot set an array element to DEFAULT"
 msgstr "n�o pode definir um elemento de matriz como sendo o valor DEFAULT"
 
-#: parser/parse_target.c:301
+#: parser/parse_target.c:297
 msgid "cannot set a subfield to DEFAULT"
 msgstr "n�o pode definir um subcampo como sendo o valor DEFAULT"
 
-#: parser/parse_target.c:362
+#: parser/parse_target.c:358
 #, c-format
 msgid "column \"%s\" is of type %s but expression is of type %s"
 msgstr "coluna \"%s\" � do tipo %s mas express�o � do tipo %s"
 
-#: parser/parse_target.c:494
+#: parser/parse_target.c:483
 #, c-format
 msgid ""
 "cannot assign to field \"%s\" of column \"%s\" because its type %s is not a "
@@ -9321,7 +9189,7 @@ msgstr ""
 "n�o pode atribuir ao campo \"%s\" da coluna \"%s\" porque seu tipo %s n�o � "
 "um tipo composto"
 
-#: parser/parse_target.c:502
+#: parser/parse_target.c:491
 #, c-format
 msgid ""
 "cannot assign to field \"%s\" of column \"%s\" because there is no such "
@@ -9330,19 +9198,19 @@ msgstr ""
 "n�o pode atribuir ao campo \"%s\" da coluna \"%s\" porque n�o h� tal coluna "
 "no tipo de dado %s"
 
-#: parser/parse_target.c:572
+#: parser/parse_target.c:561
 #, c-format
 msgid ""
 "array assignment to \"%s\" requires type %s but expression is of type %s"
 msgstr ""
 "atribui��o de matriz para \"%s\" requer tipo %s mas express�o � do tipo %s"
 
-#: parser/parse_target.c:581
+#: parser/parse_target.c:570
 #, c-format
 msgid "subfield \"%s\" is of type %s but expression is of type %s"
 msgstr "subcampo \"%s\" � do tipo %s mas express�o � do tipo %s"
 
-#: parser/parse_target.c:810
+#: parser/parse_target.c:802
 msgid "SELECT * with no tables specified is not valid"
 msgstr "SELECT * sem tabelas especificadas n�o � v�lido"
 
@@ -9367,25 +9235,26 @@ msgid "invalid type name \"%s\""
 msgstr "nome de tipo \"%s\" inv�lido"
 
 #: optimizer/path/allpaths.c:223
-msgid "SELECT FOR UPDATE is not supported for inheritance queries"
-msgstr "SELECT FOR UPDATE n�o � suportado por consultas com heran�a"
+msgid "SELECT FOR UPDATE/SHARE is not supported for inheritance queries"
+msgstr "SELECT FOR UPDATE/SHARE n�o � suportado por consultas com heran�a"
 
-#: optimizer/path/joinpath.c:839 executor/nodeMergejoin.c:1491
+#: optimizer/path/joinpath.c:841 executor/nodeMergejoin.c:1487
 msgid "FULL JOIN is only supported with merge-joinable join conditions"
 msgstr ""
 "FULL JOIN s� � suportado com condi��es de jun��o que podem ser utilizadas "
 "com jun��o por mesclagem"
 
-#: optimizer/plan/initsplan.c:282 optimizer/prep/prepjointree.c:366
+#: optimizer/plan/initsplan.c:282 optimizer/prep/prepjointree.c:377
 msgid "UNION JOIN is not implemented"
 msgstr "UNION JOIN n�o est� implementado"
 
 #: optimizer/plan/initsplan.c:339
 msgid ""
-"SELECT FOR UPDATE cannot be applied to the nullable side of an outer join"
+"SELECT FOR UPDATE/SHARE cannot be applied to the nullable side of an outer "
+"join"
 msgstr ""
-"SELECT FOR UPDATE n�o pode ser aplicado ao lado com valores nulos de um "
-"jun��o externa"
+"SELECT FOR UPDATE/SHARE n�o pode ser aplicado ao lado com valores nulos de "
+"um jun��o externa"
 
 #: optimizer/plan/initsplan.c:743
 #, c-format
@@ -9400,46 +9269,46 @@ msgstr ""
 "operador de igualdade para tipos %s e %s devem ser de jun��o por mesclagem, "
 "mas n�o �"
 
-#: optimizer/plan/planner.c:698
-msgid "SELECT FOR UPDATE is not allowed in subqueries"
-msgstr "SELECT FOR UPDATE n�o � permitido em subconsultas"
+#: optimizer/prep/preptlist.c:129
+msgid "SELECT FOR UPDATE/SHARE is not allowed in subqueries"
+msgstr "SELECT FOR UPDATE/SHARE n�o � permitido em subconsultas"
 
-#: optimizer/util/clauses.c:2357
+#: optimizer/util/clauses.c:2604
 #, c-format
 msgid "SQL function \"%s\" during inlining"
 msgstr "fun��o SQL \"%s\" durante expans�o em linha"
 
-#: executor/execQual.c:815
+#: executor/execQual.c:801
 msgid "functions and operators can take at most one set argument"
 msgstr ""
 "fun��es e operadores podem receber no m�ximo um argumento do tipo conjunto"
 
-#: executor/execQual.c:1297
+#: executor/execQual.c:1279
 msgid "function returning set of rows cannot return null value"
 msgstr "fun��o que retorna conjunto de registros n�o pode retornar valor nulo"
 
-#: executor/execQual.c:1381
+#: executor/execQual.c:1360
 msgid "table-function protocol for materialize mode was not followed"
 msgstr "protocolo de fun��o tabular para modo materializado n�o foi seguido"
 
-#: executor/execQual.c:1388
+#: executor/execQual.c:1367
 #, c-format
 msgid "unrecognized table-function returnMode: %d"
 msgstr "modo de retorno (returnMode) da fun��o tabular � desconhecido: %d"
 
-#: executor/execQual.c:1534
+#: executor/execQual.c:1512
 msgid "IS DISTINCT FROM does not support set arguments"
-msgstr "IS DISTINCT FROM n�o suporta conjunto de argumentos"
+msgstr "IS DISTINCT FROM n�o suporta argumentos do tipo conjunto"
 
-#: executor/execQual.c:1608
+#: executor/execQual.c:1585
 msgid "op ANY/ALL (array) does not support set arguments"
-msgstr "op ANY/ALL (array) n�o suporta conjunto de argumentos"
+msgstr "op ANY/ALL (array) n�o suporta argumentos do tipo conjunto"
 
-#: executor/execQual.c:2124
+#: executor/execQual.c:2101
 msgid "cannot merge incompatible arrays"
 msgstr "n�o pode mesclar matrizes incompat�veis"
 
-#: executor/execQual.c:2125
+#: executor/execQual.c:2102
 #, c-format
 msgid ""
 "Array with element type %s cannot be included in ARRAY construct with "
@@ -9448,82 +9317,84 @@ msgstr ""
 "Matriz com tipo de elemento %s n�o pode ser inclu�do em uma constru��o ARRAY "
 "com tipo de elemento %s."
 
-#: executor/execQual.c:2324
+#: executor/execQual.c:2298
 msgid "NULLIF does not support set arguments"
-msgstr "NULLIF n�o suporta conjunto de argumentos"
+msgstr "NULLIF n�o suporta argumentos do tipo conjunto"
 
-#: executor/execQual.c:2505
+#: executor/execQual.c:2479
 #, c-format
 msgid "domain %s does not allow null values"
 msgstr "dom�nio %s n�o permite valores nulos"
 
-#: executor/execQual.c:2535
+#: executor/execQual.c:2509
 #, c-format
 msgid "value for domain %s violates check constraint \"%s\""
 msgstr "valor para dom�nio %s viola restri��o de verifica��o \"%s\""
 
-#: executor/execQual.c:3201
+#: executor/execQual.c:3173
 #, c-format
 msgid "ROW() column has type %s instead of type %s"
 msgstr "coluna ROW() tem tipo %s ao inv�s do tipo %s"
 
-#: executor/nodeHashjoin.c:571 executor/nodeHashjoin.c:581
-#, c-format
-msgid "could not read from hash-join temporary file: %m"
-msgstr "n�o p�de ler do arquivo tempor�rio de jun��o hash: %m"
-
-#: executor/nodeHashjoin.c:641 executor/nodeHashjoin.c:648
+#: executor/nodeHashjoin.c:644 executor/nodeHashjoin.c:680
 #, c-format
 msgid "could not rewind hash-join temporary file: %m"
 msgstr "n�o p�de voltar ao in�cio do arquivo tempor�rio de jun��o hash: %m"
 
-#: executor/nodeHashjoin.c:699 executor/nodeHashjoin.c:704
+#: executor/nodeHashjoin.c:715 executor/nodeHashjoin.c:721
+#: executor/nodeHashjoin.c:727
 #, c-format
 msgid "could not write to hash-join temporary file: %m"
 msgstr "n�o p�de escrever em arquivo tempor�rio de jun��o hash: %m"
 
-#: executor/spi.c:190
+#: executor/nodeHashjoin.c:753 executor/nodeHashjoin.c:758
+#: executor/nodeHashjoin.c:768
+#, c-format
+msgid "could not read from hash-join temporary file: %m"
+msgstr "n�o p�de ler do arquivo tempor�rio de jun��o hash: %m"
+
+#: executor/spi.c:191
 msgid "transaction left non-empty SPI stack"
 msgstr "transa��o n�o deixou pilha SPI vazia"
 
-#: executor/spi.c:191 executor/spi.c:255
+#: executor/spi.c:192 executor/spi.c:256
 msgid "Check for missing \"SPI_finish\" calls."
 msgstr "Verifique a falta de chamadas \"SPI_finish\"."
 
-#: executor/spi.c:254
+#: executor/spi.c:255
 msgid "subtransaction left non-empty SPI stack"
 msgstr "subtransa��o n�o deixou pilha SPI vazia"
 
-#: executor/spi.c:839
+#: executor/spi.c:836
 msgid "cannot open multi-query plan as cursor"
 msgstr "n�o pode abrir plano de m�ltiplas consultas como cursor"
 
-#: executor/spi.c:846
-msgid "cannot open non-SELECT query as cursor"
-msgstr "n�o pode abrir consulta n�o-SELECT como cursor"
-
-#: executor/spi.c:850
+#: executor/spi.c:847
 msgid "cannot open SELECT INTO query as cursor"
 msgstr "n�o pode abrir consulta SELECT INTO como cursor"
 
+#: executor/spi.c:853 executor/spi.c:858
+msgid "cannot open non-SELECT query as cursor"
+msgstr "n�o pode abrir consulta n�o-SELECT como cursor"
+
 #. translator: %s is a SQL statement name
-#: executor/spi.c:1404 executor/functions.c:124
+#: executor/spi.c:1416 executor/functions.c:126
 #, c-format
 msgid "%s is not allowed in a non-volatile function"
 msgstr "%s n�o � permitido em uma fun��es n�o-vol�til"
 
-#: executor/spi.c:1582
+#: executor/spi.c:1594
 #, c-format
 msgid "SQL statement \"%s\""
 msgstr "comando SQL \"%s\""
 
 #. translator: %s is a SQL statement name
-#: executor/functions.c:117
+#: executor/functions.c:119
 #, c-format
 msgid "%s is not allowed in a SQL function"
 msgstr "%s n�o � permitido em uma fun��o SQL"
 
-#: executor/functions.c:190
+#: executor/functions.c:192
 #, c-format
 msgid ""
 "could not determine actual result type for function declared to return type %"
@@ -9532,68 +9403,68 @@ msgstr ""
 "n�o p�de determinar tipo de resultado para fun��o declarada que retorna tipo "
 "%s"
 
-#: executor/functions.c:244
+#: executor/functions.c:246
 #, c-format
 msgid "could not determine actual type of argument declared %s"
 msgstr "n�o p�de determinar tipo de argumento declarado %s"
 
-#: executor/functions.c:790
+#: executor/functions.c:796
 #, c-format
 msgid "SQL function \"%s\" statement %d"
 msgstr "fun��o SQL \"%s\" comando %d"
 
-#: executor/functions.c:803 catalog/pg_proc.c:574
+#: executor/functions.c:809 catalog/pg_proc.c:622
 #, c-format
 msgid "SQL function \"%s\""
 msgstr "fun��o SQL \"%s\""
 
-#: executor/functions.c:809
+#: executor/functions.c:815
 #, c-format
 msgid "SQL function \"%s\" during startup"
 msgstr "fun��o SQL \"%s\" durante inicializa��o"
 
-#: executor/functions.c:889 executor/functions.c:910 executor/functions.c:920
-#: executor/functions.c:944 executor/functions.c:952 executor/functions.c:1004
-#: executor/functions.c:1016 executor/functions.c:1036
+#: executor/functions.c:891 executor/functions.c:912 executor/functions.c:922
+#: executor/functions.c:943 executor/functions.c:951 executor/functions.c:1017
+#: executor/functions.c:1029 executor/functions.c:1049
 #, c-format
 msgid "return type mismatch in function declared to return %s"
 msgstr "tipo de retorno n�o corresponde com o que foi declarado %s na fun��o"
 
-#: executor/functions.c:891 executor/functions.c:922
+#: executor/functions.c:893 executor/functions.c:924
 msgid "Function's final statement must be a SELECT."
 msgstr "�ltimo comando da fun��o deve ser um SELECT."
 
-#: executor/functions.c:912
+#: executor/functions.c:914
 msgid "Function's final statement must not be a SELECT."
 msgstr "�ltimo comando da fun��o n�o deve ser um SELECT."
 
-#: executor/functions.c:946
+#: executor/functions.c:945
 msgid "Final SELECT must return exactly one column."
 msgstr "�ltimo SELECT deve retornar exatamente uma coluna."
 
-#: executor/functions.c:954
+#: executor/functions.c:953
 #, c-format
 msgid "Actual return type is %s."
 msgstr "Tipo atual de retorno � %s."
 
-#: executor/functions.c:1006
+#: executor/functions.c:1019
 msgid "Final SELECT returns too many columns."
 msgstr "�ltimo SELECT retornou muitas colunas."
 
-#: executor/functions.c:1018
+#: executor/functions.c:1031
 #, c-format
 msgid "Final SELECT returns %s instead of %s at column %d."
 msgstr "�ltimo SELECT retornou %s ao inv�s de %s na coluna %d."
 
-#: executor/functions.c:1038
+#: executor/functions.c:1051
 msgid "Final SELECT returns too few columns."
 msgstr "�ltimo SELECT retornou poucas colunas."
 
-#: executor/functions.c:1082 catalog/pg_aggregate.c:165 catalog/pg_proc.c:124
+#: executor/functions.c:1067 catalog/pg_aggregate.c:169 catalog/pg_proc.c:183
 msgid "cannot determine result data type"
 msgstr "n�o pode determinar tipo de dado do resultado"
 
-#: executor/functions.c:1083 catalog/pg_proc.c:125
+#: executor/functions.c:1068 catalog/pg_proc.c:184
 msgid ""
 "A function returning \"anyarray\" or \"anyelement\" must have at least one "
 "argument of either type."
@@ -9601,559 +9472,479 @@ msgstr ""
 "Uma fun��o retornando \"anyarray\" ou \"anyelement\" deve ter pelo menos um "
 "argumento de um dos tipos."
 
-#: executor/functions.c:1088
+#: executor/functions.c:1073
 #, c-format
 msgid "return type %s is not supported for SQL functions"
 msgstr "tipo de retorno %s n�o � suportado pelas fun��es SQL"
 
-#: executor/nodeMergejoin.c:1474
+#: executor/nodeMergejoin.c:1470
 msgid "RIGHT JOIN is only supported with merge-joinable join conditions"
 msgstr ""
 "RIGHT JOIN s� � suportado com condi��es de jun��o que podem ser utilizadas "
 "com jun��o por mesclagem"
 
-#: executor/nodeFunctionscan.c:93
-msgid "query-specified return row and actual function return row do not match"
+#: executor/nodeFunctionscan.c:365 executor/nodeFunctionscan.c:379
+#: executor/nodeFunctionscan.c:389
+msgid "function return row and query-specified return row do not match"
 msgstr ""
-"registro de retorno especificado na consulta n�o corresponde com registro de "
-"retorno da fun��o"
+"registro de retorno da fun��o e registro de retorno especificado na consulta "
+"n�o correspondem"
 
-#: executor/nodeSubplan.c:294 executor/nodeSubplan.c:336
-#: executor/nodeSubplan.c:972
+#: executor/nodeFunctionscan.c:366
+#, c-format
+msgid "Returned row contains %d attributes, but query expects %d."
+msgstr "Registros retornados cont�m %d atributos, mas consulta espera %d."
+
+#: executor/nodeFunctionscan.c:380
+#, c-format
+msgid "Returned type %s at ordinal position %d, but query expects %s."
+msgstr "Tipo retornado %s na posi��o ordinal %d, mas consulta espera %s."
+
+#: executor/nodeFunctionscan.c:390
+#, c-format
+msgid "Physical storage mismatch on dropped attribute at ordinal position %d."
+msgstr ""
+"Reposit�rio f�sico n�o corresponde a atributo removido na posi��o ordinal %d."
+
+#: executor/nodeSubplan.c:293 executor/nodeSubplan.c:334
+#: executor/nodeSubplan.c:981
 msgid "more than one row returned by a subquery used as an expression"
 msgstr ""
-"mais de um registro foi retornado por uma sub-consulta utilizada como uma "
+"mais de um registro foi retornado por uma subconsulta utilizada como uma "
 "express�o"
 
-#: executor/execMain.c:814
+#: executor/execMain.c:822
 #, c-format
 msgid "cannot change sequence \"%s\""
 msgstr "n�o pode mudar sequ�ncia \"%s\""
 
-#: executor/execMain.c:820
+#: executor/execMain.c:828
 #, c-format
 msgid "cannot change TOAST relation \"%s\""
 msgstr "n�o pode mudar rela��o TOAST \"%s\""
 
-#: executor/execMain.c:826
+#: executor/execMain.c:834
 #, c-format
 msgid "cannot change view \"%s\""
 msgstr "n�o pode mudar vis�o \"%s\""
 
-#: executor/execMain.c:1731
+#: executor/execMain.c:1752
 #, c-format
 msgid "null value in column \"%s\" violates not-null constraint"
 msgstr "valor nulo na coluna \"%s\" viola a restri��o n�o-nula"
 
-#: executor/execMain.c:1743
+#: executor/execMain.c:1764
 #, c-format
 msgid "new row for relation \"%s\" violates check constraint \"%s\""
 msgstr "novo registro da rela��o \"%s\" viola restri��o de verifica��o \"%s\""
 
-#: executor/nodeAgg.c:1330
+#: executor/nodeAgg.c:1367
 #, c-format
 msgid "aggregate %u needs to have compatible input type and transition type"
 msgstr ""
 "agrega��o %u precisa ter tipo de entrada e tipo transit�rio compat�veis"
 
-#: catalog/pg_conversion.c:66
+#: catalog/pg_conversion.c:65
 #, c-format
 msgid "conversion \"%s\" already exists"
 msgstr "convers�o \"%s\" j� existe"
 
-#: catalog/pg_conversion.c:79
+#: catalog/pg_conversion.c:78
 #, c-format
 msgid "default conversion for %s to %s already exists"
 msgstr "convers�o padr�o de %s para %s j� existe"
 
-#: catalog/pg_operator.c:217 catalog/pg_operator.c:406
+#: catalog/pg_operator.c:218 catalog/pg_operator.c:407
 #, c-format
 msgid "\"%s\" is not a valid operator name"
 msgstr "\"%s\" n�o � um nome de operador v�lido"
 
-#: catalog/pg_operator.c:412
+#: catalog/pg_operator.c:413
 msgid "at least one of leftarg or rightarg must be specified"
 msgstr "pelo menos um dos argumentos esquerdo ou direito deve ser especificado"
 
-#: catalog/pg_operator.c:420
+#: catalog/pg_operator.c:421
 msgid "only binary operators can have commutators"
 msgstr "somente operadores bin�rios podem ter comutadores"
 
-#: catalog/pg_operator.c:424
+#: catalog/pg_operator.c:425
 msgid "only binary operators can have join selectivity"
 msgstr "somente operadores bin�rios podem ter seletividade de jun��o"
 
-#: catalog/pg_operator.c:428
+#: catalog/pg_operator.c:429
 msgid "only binary operators can hash"
 msgstr "somente operadores bin�rios podem ser utilizados no hash"
 
-#: catalog/pg_operator.c:432
+#: catalog/pg_operator.c:433
 msgid "only binary operators can merge join"
 msgstr ""
 "somente operadores bin�rios podem ser utilizados em jun��o por mesclagem"
 
-#: catalog/pg_operator.c:444
+#: catalog/pg_operator.c:445
 #, c-format
 msgid "operator %s already exists"
 msgstr "operador %s j� existe"
 
-#: catalog/pg_operator.c:726
+#: catalog/pg_operator.c:724
 msgid "operator cannot be its own negator or sort operator"
 msgstr "operador n�o pode ser seu pr�prio operador de nega��o ou de ordena��o"
 
-#: catalog/dependency.c:152
+#: catalog/dependency.c:165
 #, c-format
 msgid "cannot drop %s because other objects depend on it"
 msgstr "n�o pode remover %s porque outros objetos dependem dele"
 
-#: catalog/dependency.c:154
+#: catalog/dependency.c:167
 msgid "Use DROP ... CASCADE to drop the dependent objects too."
 msgstr "Use DROP ... CASCADE para remover os objetos dependentes tamb�m."
 
-#: catalog/dependency.c:212
+#: catalog/dependency.c:225
 #, c-format
 msgid "failed to drop all objects depending on %s"
 msgstr "falhou ao remover todos os objetos dependentes de %s"
 
-#: catalog/dependency.c:312 catalog/dependency.c:717
+#: catalog/dependency.c:325 catalog/dependency.c:730
 #, c-format
 msgid "cannot drop %s because it is required by the database system"
 msgstr ""
 "n�o pode remover %s porque ele � requerido pelo sistema de banco de dados"
 
-#: catalog/dependency.c:451
+#: catalog/dependency.c:464
 #, c-format
 msgid "cannot drop %s because %s requires it"
 msgstr "n�o pode remover %s porque %s o requer"
 
-#: catalog/dependency.c:453
+#: catalog/dependency.c:466
 #, c-format
 msgid "You may drop %s instead."
 msgstr "Voc� pode remover %s ao inv�s dele."
 
-#: catalog/dependency.c:521 catalog/dependency.c:674 catalog/dependency.c:702
+#: catalog/dependency.c:534 catalog/dependency.c:687 catalog/dependency.c:715
 #, c-format
 msgid "drop auto-cascades to %s"
 msgstr "removendo automaticamente %s"
 
-#: catalog/dependency.c:526 catalog/dependency.c:679
+#: catalog/dependency.c:539 catalog/dependency.c:692
 #, c-format
 msgid "%s depends on %s"
 msgstr "%s depende de %s"
 
-#: catalog/dependency.c:533 catalog/dependency.c:686
+#: catalog/dependency.c:546 catalog/dependency.c:699
 #, c-format
 msgid "drop cascades to %s"
 msgstr "removendo %s"
 
-#: catalog/dependency.c:1427
-#, c-format
-msgid " column %s"
-msgstr "coluna %s"
-
-#: catalog/dependency.c:1433
-#, c-format
-msgid "function %s"
-msgstr "fun��o %s"
-
-#: catalog/dependency.c:1438
-#, c-format
-msgid "type %s"
-msgstr "tipo %s"
-
-#: catalog/dependency.c:1468
-#, c-format
-msgid "cast from %s to %s"
-msgstr "converte de %s para %s"
-
-#: catalog/dependency.c:1505
-#, c-format
-msgid "constraint %s on "
-msgstr "restri��o %s em "
-
-#: catalog/dependency.c:1511
-#, c-format
-msgid "constraint %s"
-msgstr "restri��o %s"
-
-#: catalog/dependency.c:1530
-#, c-format
-msgid "conversion %s"
-msgstr "convers�o %s"
-
-#: catalog/dependency.c:1567
-#, c-format
-msgid "default for %s"
-msgstr "valor padr�o para %s"
-
-#: catalog/dependency.c:1585
-#, c-format
-msgid "language %s"
-msgstr "linguagem %s"
-
-#: catalog/dependency.c:1592
-#, c-format
-msgid "operator %s"
-msgstr "operador %s"
-
-#: catalog/dependency.c:1626
-#, c-format
-msgid "operator class %s for access method %s"
-msgstr "classe de operadores %s para m�todo de acesso %s"
-
-#: catalog/dependency.c:1662
-#, c-format
-msgid "rule %s on "
-msgstr "regra %s em "
-
-#: catalog/dependency.c:1697
-#, c-format
-msgid "trigger %s on "
-msgstr "gatilho %s em "
-
-#: catalog/dependency.c:1714
-#, c-format
-msgid "schema %s"
-msgstr "esquema %s"
-
-#: catalog/dependency.c:1758
-#, c-format
-msgid "table %s"
-msgstr "tabela %s"
-
-#: catalog/dependency.c:1762
-#, c-format
-msgid "index %s"
-msgstr "�ndice %s"
-
-#: catalog/dependency.c:1766
-#, c-format
-msgid "special system relation %s"
-msgstr "rela��o especial do sistema %s"
-
-#: catalog/dependency.c:1770
-#, c-format
-msgid "sequence %s"
-msgstr "sequ�ncia %s"
-
-#: catalog/dependency.c:1774
-#, c-format
-msgid "uncataloged table %s"
-msgstr "tabela n�o-catalogada %s"
-
-#: catalog/dependency.c:1778
-#, c-format
-msgid "toast table %s"
-msgstr "tabela toast %s"
-
-#: catalog/dependency.c:1782
-#, c-format
-msgid "view %s"
-msgstr "vis�o %s"
-
-#: catalog/dependency.c:1786
-#, c-format
-msgid "composite type %s"
-msgstr "tipo composto %s"
-
-#: catalog/dependency.c:1791
-#, c-format
-msgid "relation %s"
-msgstr "rela��o %s"
-
-#: catalog/aclchk.c:158
+#: catalog/aclchk.c:157
 msgid "grant options can only be granted to individual users"
 msgstr "op��es de concess�o s� podem ser concedidas a usu�rios individuais"
 
-#: catalog/aclchk.c:246
+#: catalog/aclchk.c:245
 #, c-format
 msgid "invalid privilege type %s for table"
 msgstr "tipo de privil�gio inv�lido %s para tabela"
 
-#: catalog/aclchk.c:334 catalog/aclchk.c:492 catalog/aclchk.c:646
-#: catalog/aclchk.c:809 catalog/aclchk.c:962 catalog/aclchk.c:1121
+#: catalog/aclchk.c:333 catalog/aclchk.c:491 catalog/aclchk.c:645
+#: catalog/aclchk.c:808 catalog/aclchk.c:961 catalog/aclchk.c:1120
 msgid "no privileges were granted"
 msgstr "nenhum privil�gio foi concedido"
 
-#: catalog/aclchk.c:338 catalog/aclchk.c:496 catalog/aclchk.c:650
-#: catalog/aclchk.c:813 catalog/aclchk.c:966 catalog/aclchk.c:1125
+#: catalog/aclchk.c:337 catalog/aclchk.c:495 catalog/aclchk.c:649
+#: catalog/aclchk.c:812 catalog/aclchk.c:965 catalog/aclchk.c:1124
 msgid "not all privileges were granted"
 msgstr "nem todos privil�gios foram concedidos"
 
-#: catalog/aclchk.c:345 catalog/aclchk.c:503 catalog/aclchk.c:657
-#: catalog/aclchk.c:820 catalog/aclchk.c:973 catalog/aclchk.c:1132
+#: catalog/aclchk.c:344 catalog/aclchk.c:502 catalog/aclchk.c:656
+#: catalog/aclchk.c:819 catalog/aclchk.c:972 catalog/aclchk.c:1131
 msgid "no privileges could be revoked"
 msgstr "nenhum privil�gio p�de ser revogado"
 
-#: catalog/aclchk.c:349 catalog/aclchk.c:507 catalog/aclchk.c:661
-#: catalog/aclchk.c:824 catalog/aclchk.c:977 catalog/aclchk.c:1136
+#: catalog/aclchk.c:348 catalog/aclchk.c:506 catalog/aclchk.c:660
+#: catalog/aclchk.c:823 catalog/aclchk.c:976 catalog/aclchk.c:1135
 msgid "not all privileges could be revoked"
 msgstr "nem todos privil�gios podem ser revogados"
 
-#: catalog/aclchk.c:414
+#: catalog/aclchk.c:413
 #, c-format
 msgid "invalid privilege type %s for database"
 msgstr "tipo de privil�gio inv�lido %s para banco de dados"
 
-#: catalog/aclchk.c:572
+#: catalog/aclchk.c:571
 #, c-format
 msgid "invalid privilege type %s for function"
 msgstr "tipo de privil�gio inv�lido %s para fun��o"
 
-#: catalog/aclchk.c:726
+#: catalog/aclchk.c:725
 #, c-format
 msgid "invalid privilege type %s for language"
 msgstr "tipo de privil�gio inv�lido %s para linguagem"
 
-#: catalog/aclchk.c:764
+#: catalog/aclchk.c:763
 #, c-format
 msgid "language \"%s\" is not trusted"
 msgstr "linguagem \"%s\" n�o � confi�vel"
 
-#: catalog/aclchk.c:765
+#: catalog/aclchk.c:764
 msgid "Only superusers may use untrusted languages."
 msgstr "Somente super-usu�rios podem utilizar linguagens n�o-confi�veis."
 
-#: catalog/aclchk.c:889
+#: catalog/aclchk.c:888
 #, c-format
 msgid "invalid privilege type %s for schema"
 msgstr "tipo de privil�gio inv�lido %s para esquema"
 
-#: catalog/aclchk.c:1043
+#: catalog/aclchk.c:1042
 #, c-format
 msgid "invalid privilege type %s for tablespace"
 msgstr "tipo de privil�gio inv�lido %s para tablespace"
 
-#: catalog/aclchk.c:1264
+#: catalog/aclchk.c:1241
 #, c-format
 msgid "permission denied for relation %s"
 msgstr "permiss�o negada para rela��o %s"
 
-#: catalog/aclchk.c:1266
+#: catalog/aclchk.c:1243
 #, c-format
 msgid "permission denied for database %s"
 msgstr "permiss�o negada para banco de dados %s"
 
-#: catalog/aclchk.c:1268
+#: catalog/aclchk.c:1245
 #, c-format
 msgid "permission denied for function %s"
 msgstr "permiss�o negada para fun��o %s"
 
-#: catalog/aclchk.c:1270
+#: catalog/aclchk.c:1247
 #, c-format
 msgid "permission denied for operator %s"
 msgstr "permiss�o negada para operador %s"
 
-#: catalog/aclchk.c:1272
+#: catalog/aclchk.c:1249
 #, c-format
 msgid "permission denied for type %s"
 msgstr "permiss�o negada para tipo %s"
 
-#: catalog/aclchk.c:1274
+#: catalog/aclchk.c:1251
 #, c-format
 msgid "permission denied for language %s"
 msgstr "permiss�o negada para linguagem %s"
 
-#: catalog/aclchk.c:1276
+#: catalog/aclchk.c:1253
 #, c-format
 msgid "permission denied for schema %s"
 msgstr "permiss�o negada para esquema %s"
 
-#: catalog/aclchk.c:1278
+#: catalog/aclchk.c:1255
 #, c-format
 msgid "permission denied for operator class %s"
 msgstr "permiss�o negada para classe de operadores %s"
 
-#: catalog/aclchk.c:1280
+#: catalog/aclchk.c:1257
 #, c-format
 msgid "permission denied for conversion %s"
 msgstr "permiss�o negada para convers�o %s"
 
-#: catalog/aclchk.c:1282
+#: catalog/aclchk.c:1259
 #, c-format
 msgid "permission denied for tablespace %s"
 msgstr "permiss�o negada para tablespace %s"
 
-#: catalog/aclchk.c:1288
+#: catalog/aclchk.c:1265
 #, c-format
 msgid "must be owner of relation %s"
 msgstr "deve ser o dono da rela��o %s"
 
-#: catalog/aclchk.c:1290
+#: catalog/aclchk.c:1267
 #, c-format
 msgid "must be owner of database %s"
 msgstr "deve ser o dono do banco de dados %s"
 
-#: catalog/aclchk.c:1292
+#: catalog/aclchk.c:1269
 #, c-format
 msgid "must be owner of function %s"
 msgstr "deve ser o dono da fun��o %s"
 
-#: catalog/aclchk.c:1294
+#: catalog/aclchk.c:1271
 #, c-format
 msgid "must be owner of operator %s"
 msgstr "deve ser o dono do operador %s"
 
-#: catalog/aclchk.c:1296
+#: catalog/aclchk.c:1273
 #, c-format
 msgid "must be owner of type %s"
 msgstr "deve ser o dono do tipo %s"
 
-#: catalog/aclchk.c:1298
+#: catalog/aclchk.c:1275
 #, c-format
 msgid "must be owner of language %s"
 msgstr "deve ser o dono da linguagem %s"
 
-#: catalog/aclchk.c:1300
+#: catalog/aclchk.c:1277
 #, c-format
 msgid "must be owner of schema %s"
 msgstr "deve ser o dono do esquema %s"
 
-#: catalog/aclchk.c:1302
+#: catalog/aclchk.c:1279
 #, c-format
 msgid "must be owner of operator class %s"
 msgstr "deve ser o dono da classe de operadores %s"
 
-#: catalog/aclchk.c:1304
+#: catalog/aclchk.c:1281
 #, c-format
 msgid "must be owner of conversion %s"
 msgstr "deve ser o dono da convers�o %s"
 
-#: catalog/aclchk.c:1306
+#: catalog/aclchk.c:1283
 #, c-format
 msgid "must be owner of tablespace %s"
 msgstr "deve ser o dono da tablespace %s"
 
-#: catalog/aclchk.c:1369
+#: catalog/aclchk.c:1346
 #, c-format
 msgid "user with ID %u does not exist"
 msgstr "usu�rio com ID %u n�o existe"
 
-#: catalog/aclchk.c:1386 catalog/aclchk.c:1889
+#: catalog/aclchk.c:1363 catalog/aclchk.c:1866
 #, c-format
 msgid "relation with OID %u does not exist"
 msgstr "rela��o com OID %u n�o existe"
 
-#: catalog/aclchk.c:1490 catalog/aclchk.c:2107
+#: catalog/aclchk.c:1467 catalog/aclchk.c:2084
 #, c-format
 msgid "database with OID %u does not exist"
 msgstr "banco de dados com OID %u n�o existe"
 
-#: catalog/aclchk.c:1604
+#: catalog/aclchk.c:1581
 #, c-format
 msgid "language with OID %u does not exist"
 msgstr "linguagem com OID %u n�o existe"
 
-#: catalog/aclchk.c:1689 catalog/aclchk.c:2001
+#: catalog/aclchk.c:1666 catalog/aclchk.c:1978
 #, c-format
 msgid "schema with OID %u does not exist"
 msgstr "esquema com OID %u n�o existe"
 
-#: catalog/aclchk.c:1761 catalog/aclchk.c:2039
+#: catalog/aclchk.c:1738 catalog/aclchk.c:2016
 #, c-format
 msgid "tablespace with OID %u does not exist"
 msgstr "tablespace com OID %u n�o existe"
 
-#: catalog/aclchk.c:1917
+#: catalog/aclchk.c:1894
 #, c-format
 msgid "type with OID %u does not exist"
 msgstr "tipo com OID %u n�o existe"
 
-#: catalog/aclchk.c:1945
+#: catalog/aclchk.c:1922
 #, c-format
 msgid "operator with OID %u does not exist"
 msgstr "operador com OID %u n�o existe"
 
-#: catalog/aclchk.c:2068
+#: catalog/aclchk.c:2045
 #, c-format
 msgid "operator class with OID %u does not exist"
 msgstr "classe de operadores com OID %u n�o existe"
 
-#: catalog/aclchk.c:2136
+#: catalog/aclchk.c:2113
 #, c-format
 msgid "conversion with OID %u does not exist"
 msgstr "convers�o com OID %u n�o existe"
 
-#: catalog/heap.c:221
+#: catalog/heap.c:222
 #, c-format
 msgid "permission denied to create \"%s.%s\""
 msgstr "permiss�o negada ao criar \"%s.%s\""
 
-#: catalog/heap.c:223
+#: catalog/heap.c:224
 msgid "System catalog modifications are currently disallowed."
 msgstr "Modifica��es no cat�logo do sistema est�o atualmente desabilitadas."
 
-#: catalog/heap.c:399
+#: catalog/heap.c:363
 #, c-format
 msgid "column name \"%s\" conflicts with a system column name"
 msgstr "nome de coluna \"%s\" conflita com um nome de coluna do sistema"
 
-#: catalog/heap.c:415
+#: catalog/heap.c:379
 #, c-format
 msgid "column name \"%s\" is duplicated"
 msgstr "nome de coluna \"%s\" est� duplicado"
 
-#: catalog/heap.c:452
+#: catalog/heap.c:416
 #, c-format
 msgid "column \"%s\" has type \"unknown\""
 msgstr "coluna \"%s\" tem tipo \"unknown\""
 
-#: catalog/heap.c:453
+#: catalog/heap.c:417
 msgid "Proceeding with relation creation anyway."
 msgstr "Prosseguindo com a cria��o da rela��o mesmo assim."
 
-#: catalog/heap.c:460
+#: catalog/heap.c:424
 #, c-format
 msgid "column \"%s\" has pseudo-type %s"
 msgstr "coluna \"%s\" tem pseudo-tipo %s"
 
-#: catalog/heap.c:1584
+#: catalog/heap.c:1543
 #, c-format
 msgid "only table \"%s\" can be referenced in check constraint"
 msgstr ""
 "somente a tabela \"%s\" pode ser referenciada na restri��o de verifica��o"
 
-#: catalog/heap.c:1597
+#: catalog/heap.c:1556
 msgid "cannot use aggregate function in check constraint"
 msgstr "n�o pode utilizar fun��o de agrega��o na restri��o de verifica��o"
 
-#: catalog/heap.c:1623
+#: catalog/heap.c:1582
 #, c-format
 msgid "check constraint \"%s\" already exists"
 msgstr "restri��o de verifica��o \"%s\" j� existe"
 
-#: catalog/heap.c:1772
+#: catalog/heap.c:1731
 msgid "cannot use column references in default expression"
 msgstr "n�o pode utilizar refer�ncia � coluna na express�o padr�o"
 
-#: catalog/heap.c:1780
+#: catalog/heap.c:1739
 msgid "default expression must not return a set"
 msgstr "express�o padr�o n�o deve retornar um conjunto"
 
-#: catalog/heap.c:1788
+#: catalog/heap.c:1747
 msgid "cannot use subquery in default expression"
 msgstr "n�o pode utilizar subconsulta na express�o padr�o"
 
-#: catalog/heap.c:1792
+#: catalog/heap.c:1751
 msgid "cannot use aggregate function in default expression"
 msgstr "n�o pode utilizar fun��o de agrega��o na express�o padr�o"
 
-#: catalog/heap.c:2076
+#: catalog/heap.c:2062
+msgid "unsupported ON COMMIT and foreign key combination"
+msgstr "combina��o ON COMMIT e chave estrangeira n�o � suportada"
+
+#: catalog/heap.c:2063
+#, c-format
+msgid ""
+"Table \"%s\" references \"%s\" via foreign key constraint \"%s\", but they "
+"do not have the same ON COMMIT setting."
+msgstr ""
+"Tabela \"%s\" refere \"%s\" via restri��o de chave estrageira \"%s\", mas "
+"elas n�o t�m a mesma defini��o ON COMMIT."
+
+#: catalog/heap.c:2070
 msgid "cannot truncate a table referenced in a foreign key constraint"
 msgstr ""
 "n�o pode truncar uma tabela referenciada em uma restri��o de chave "
 "estrangeira"
 
-#: catalog/heap.c:2077
+#: catalog/heap.c:2071
 #, c-format
 msgid "Table \"%s\" references \"%s\" via foreign key constraint \"%s\"."
 msgstr "Tabela \"%s\" refere \"%s\" via restri��o de chave estrageira \"%s\"."
 
-#: catalog/pg_aggregate.c:80
+#: catalog/heap.c:2075
+#, c-format
+msgid "Truncate table \"%s\" at the same time."
+msgstr "Trunca tabela \"%s\" ao mesmo tempo."
+
+#: catalog/pg_aggregate.c:86
 msgid "cannot determine transition data type"
 msgstr "n�o pode determinar tipo de dado transit�rio"
 
-#: catalog/pg_aggregate.c:81
+#: catalog/pg_aggregate.c:87
 msgid ""
 "An aggregate using \"anyarray\" or \"anyelement\" as transition type must "
 "have one of them as its base type."
@@ -10161,12 +9952,12 @@ msgstr ""
 "Uma agrega��o utilizando \"anyarray\" ou \"anyelement\" como tipo "
 "transit�rio deve ter um deles como tipo base."
 
-#: catalog/pg_aggregate.c:110
+#: catalog/pg_aggregate.c:115
 #, c-format
 msgid "return type of transition function %s is not %s"
 msgstr "tipo retornado da fun��o de transi��o %s n�o � %s"
 
-#: catalog/pg_aggregate.c:132
+#: catalog/pg_aggregate.c:137
 msgid ""
 "must not omit initial value when transition function is strict and "
 "transition type is not compatible with input type"
@@ -10174,108 +9965,124 @@ msgstr ""
 "n�o deve omitir valor inicial quando a fun��o de transi��o � estrita e o "
 "tipo de transi��o n�o � compat�vel com tipo de entrada"
 
-#: catalog/pg_aggregate.c:166
+#: catalog/pg_aggregate.c:170
 msgid ""
 "An aggregate returning \"anyarray\" or \"anyelement\" must have one of them "
 "as its base type."
 msgstr ""
-"Uma agrega��o utilizando \"anyarray\" ou \"anyelement\" deve ter um deles "
+"Uma agrega��o retornando \"anyarray\" ou \"anyelement\" deve ter um deles "
 "como tipo base."
 
-#: catalog/pg_aggregate.c:286
+#: catalog/pg_aggregate.c:307
 #, c-format
 msgid "function %s returns a set"
 msgstr "fun��o %s retorna um conjunto"
 
-#: catalog/pg_aggregate.c:317 catalog/pg_aggregate.c:326
+#: catalog/pg_aggregate.c:338 catalog/pg_aggregate.c:347
 #, c-format
 msgid "function %s requires run-time type coercion"
-msgstr "fun��o %s requer coer��o de tipo em tempo de execu��o"
+msgstr "fun��o %s requer convers�o de tipo em tempo de execu��o"
 
-#: catalog/namespace.c:173 catalog/namespace.c:228
+#: catalog/namespace.c:172 catalog/namespace.c:227
 #, c-format
 msgid "cross-database references are not implemented: \"%s.%s.%s\""
 msgstr ""
 "refer�ncias cruzadas entre bancos de dados n�o est� implementada: \"%s.%s.%s"
 "\""
 
-#: catalog/namespace.c:195
+#: catalog/namespace.c:194
 #, c-format
 msgid "relation \"%s.%s\" does not exist"
 msgstr "rela��o \"%s.%s\" n�o existe"
 
-#: catalog/namespace.c:239
+#: catalog/namespace.c:238
 msgid "temporary tables may not specify a schema name"
 msgstr "tabelas tempor�rias n�o podem especificar um nome de esquema"
 
-#: catalog/namespace.c:267 catalog/namespace.c:1278
+#: catalog/namespace.c:266 catalog/namespace.c:1277
 msgid "no schema has been selected to create in"
 msgstr "nenhum esquema foi selecionado para cri�-lo(a)"
 
-#: catalog/namespace.c:1313
+#: catalog/namespace.c:1312
 #, c-format
 msgid "improper relation name (too many dotted names): %s"
 msgstr "nome de rela��o � inv�lido (nomes com muitos pontos): %s"
 
-#: catalog/namespace.c:1659
+#: catalog/namespace.c:1658
 #, c-format
 msgid "permission denied to create temporary tables in database \"%s\""
 msgstr "permiss�o negada ao criar tabelas tempor�rias no banco de dados \"%s\""
 
-#: catalog/pg_proc.c:145
+#: catalog/pg_proc.c:189
+msgid "unsafe use of INTERNAL pseudo-type"
+msgstr "uso inseguro de pseudo-tipo INTERNAL"
+
+#: catalog/pg_proc.c:190
+msgid ""
+"A function returning \"internal\" must have at least one \"internal\" "
+"argument."
+msgstr ""
+"Uma fun��o retornando \"internal\" deve ter pelo menos um argumento "
+"\"internal\"."
+
+#: catalog/pg_proc.c:202
 #, c-format
 msgid "\"%s\" is already an attribute of type %s"
 msgstr "\"%s\" j� � um atributo do tipo %s"
 
-#: catalog/pg_proc.c:200
+#: catalog/pg_proc.c:267
 #, c-format
 msgid "function \"%s\" already exists with same argument types"
 msgstr "fun��o \"%s\" j� existe com os mesmos tipos de argumento"
 
-#: catalog/pg_proc.c:214
+#: catalog/pg_proc.c:281 catalog/pg_proc.c:303
 msgid "cannot change return type of existing function"
 msgstr "n�o pode mudar o tipo de retorno da fun��o existente"
 
-#: catalog/pg_proc.c:215
+#: catalog/pg_proc.c:282 catalog/pg_proc.c:305
 msgid "Use DROP FUNCTION first."
 msgstr "Primeiro use DROP FUNCTION."
 
-#: catalog/pg_proc.c:223
+#: catalog/pg_proc.c:304
+msgid "Row type defined by OUT parameters is different."
+msgstr "Tipo de registro definido por par�metros OUT � diferente."
+
+#: catalog/pg_proc.c:314
 #, c-format
 msgid "function \"%s\" is an aggregate"
 msgstr "fun��o \"%s\" � uma agrega��o"
 
-#: catalog/pg_proc.c:228
+#: catalog/pg_proc.c:319
 #, c-format
 msgid "function \"%s\" is not an aggregate"
 msgstr "fun��o \"%s\" n�o � uma agrega��o"
 
-#: catalog/pg_proc.c:387
+#: catalog/pg_proc.c:438
 #, c-format
 msgid "there is no built-in function named \"%s\""
 msgstr "n�o h� nenhuma fun��o embutida com nome \"%s\""
 
-#: catalog/pg_proc.c:487
+#: catalog/pg_proc.c:535
 #, c-format
 msgid "SQL functions cannot return type %s"
 msgstr "fun��es SQL n�o podem retornar tipo %s"
 
-#: catalog/pg_proc.c:503
+#: catalog/pg_proc.c:551
 #, c-format
 msgid "SQL functions cannot have arguments of type %s"
 msgstr "fun��es SQL n�o podem ter argumentos do tipo %s"
 
-#: catalog/index.c:495
+#: catalog/index.c:497
 msgid "user-defined indexes on system catalog tables are not supported"
 msgstr ""
 "�ndices definidos pelo usu�rio nas tabelas de cat�logo do sistema n�o s�o "
 "suportados"
 
-#: catalog/index.c:509
+#: catalog/index.c:511
 msgid "shared indexes cannot be created after initdb"
 msgstr "�ndices compartilhados n�o podem ser criados depois do initdb"
 
-#: catalog/index.c:1634
+#: catalog/index.c:1609
 #, c-format
 msgid "shared index \"%s\" can only be reindexed in stand-alone mode"
 msgstr "�ndice compartilhado \"%s\" s� pode ser reindexado no modo aut�nomo"
@@ -10294,58 +10101,58 @@ msgstr "tamanho interno %d 
 msgid "fixed-size types must have storage PLAIN"
 msgstr "tipos de tamanho fixo devem ter armazenamento PLAIN"
 
-#: catalog/pg_type.c:293 catalog/pg_type.c:525
+#: catalog/pg_type.c:293 catalog/pg_type.c:522
 #, c-format
 msgid "type \"%s\" already exists"
 msgstr "tipo \"%s\" j� existe"
 
-#: postmaster/pgarch.c:164
+#: postmaster/pgarch.c:153
 #, c-format
 msgid "could not fork archiver: %m"
 msgstr "n�o p�de criar processo arquivador: %m"
 
-#: postmaster/pgarch.c:391
+#: postmaster/pgarch.c:376
 #, c-format
 msgid "transaction log file \"%s\" could not be archived: too many failures"
 msgstr ""
 "arquivo do log de transa��o \"%s\" n�o p�de ser arquivado: muitas falhas"
 
-#: postmaster/pgarch.c:474
+#: postmaster/pgarch.c:459
 #, c-format
 msgid "archive command \"%s\" failed: return code %d"
 msgstr "comando de arquivamento \"%s\" falhou: c�digo de retorno %d"
 
-#: postmaster/pgarch.c:479
+#: postmaster/pgarch.c:464
 #, c-format
 msgid "archived transaction log file \"%s\""
 msgstr "arquivo do log de transa��o \"%s\" foi arquivado"
 
-#: postmaster/pgarch.c:525
+#: postmaster/pgarch.c:510
 #, c-format
 msgid "could not open archive status directory \"%s\": %m"
 msgstr "n�o p�de abrir diret�rio de status de arquivamento \"%s\": %m"
 
-#: postmaster/pgarch.c:564
+#: postmaster/pgarch.c:549
 #, c-format
 msgid "could not read archive status directory \"%s\": %m"
 msgstr "n�o p�de ler diret�rio de status de arquivamento \"%s\": %m"
 
-#: postmaster/postmaster.c:451
+#: postmaster/postmaster.c:452
 #, c-format
 msgid "%s: assert checking is not compiled in\n"
 msgstr "%s: verifica��o de asserto n�o foi compilada\n"
 
-#: postmaster/postmaster.c:567 postmaster/postmaster.c:580
+#: postmaster/postmaster.c:568 postmaster/postmaster.c:581
 #, c-format
 msgid "Try \"%s --help\" for more information.\n"
 msgstr "Tente \"%s --help\" para obter mais informa��o.\n"
 
-#: postmaster/postmaster.c:578
+#: postmaster/postmaster.c:579
 #, c-format
 msgid "%s: invalid argument: \"%s\"\n"
 msgstr "%s: argumento inv�lido: \"%s\"\n"
 
-#: postmaster/postmaster.c:605
+#: postmaster/postmaster.c:606
 #, c-format
 msgid ""
 "%s: the number of buffers (-B) must be at least twice the number of allowed "
@@ -10354,64 +10161,74 @@ msgstr ""
 "%s: o n�mero de buffers (-B) deve ser pelo menos duas vezes o n�mero de "
 "conex�es permitidas (-N) e pelo menos 16\n"
 
-#: postmaster/postmaster.c:611
+#: postmaster/postmaster.c:612
 #, c-format
 msgid "%s: superuser_reserved_connections must be less than max_connections\n"
 msgstr ""
 "%s: superuser_reserved_connections deve ser menor do que max_connections\n"
 
-#: postmaster/postmaster.c:620
+#: postmaster/postmaster.c:621
 #, c-format
 msgid "%s: invalid datetoken tables, please fix\n"
 msgstr "%s: tabelas de palavras chave de datas inv�lidas, por favor conserte\n"
 
-#: postmaster/postmaster.c:654
+#: postmaster/postmaster.c:655
 #, c-format
 msgid "%s: could not locate matching postgres executable"
-msgstr "%s: n�o p�de localizar execut�vel do postgres correspondente"
+msgstr "%s: n�o p�de localizar o execut�vel postgres correspondente"
 
-#: postmaster/postmaster.c:721
+#: postmaster/postmaster.c:722
 msgid "invalid list syntax for \"listen_addresses\""
 msgstr "sintaxe de lista inv�lida para \"listen_addresses\""
 
-#: postmaster/postmaster.c:740
+#: postmaster/postmaster.c:741
 #, c-format
 msgid "could not create listen socket for \"%s\""
 msgstr "n�o p�de criar soquete de escuta para \"%s\""
 
-#: postmaster/postmaster.c:769
+#: postmaster/postmaster.c:770
 msgid "could not create Unix-domain socket"
 msgstr "n�o p�de criar soquete de dom�nio Unix"
 
-#: postmaster/postmaster.c:777
+#: postmaster/postmaster.c:778
 msgid "no socket created for listening"
 msgstr "nenhum soquete criado para escutar"
 
-#: postmaster/postmaster.c:854
+#: postmaster/postmaster.c:855
 #, c-format
 msgid "%s: could not write external PID file \"%s\": %s\n"
 msgstr "%s: n�o p�de escrever no arquivo externo contendo PID \"%s\": %s\n"
 
-#: postmaster/postmaster.c:947
+#: postmaster/postmaster.c:946
 #, c-format
 msgid "data directory \"%s\" does not exist"
 msgstr "diret�rio de dados \"%s\" n�o existe"
 
-#: postmaster/postmaster.c:952
+#: postmaster/postmaster.c:951
 #, c-format
 msgid "could not read permissions of directory \"%s\": %m"
 msgstr "n�o p�de ler permiss�es do diret�rio \"%s\": %m"
 
-#: postmaster/postmaster.c:967
+#: postmaster/postmaster.c:968
+#, c-format
+msgid "data directory \"%s\" has wrong ownership"
+msgstr "diret�rio de dados \"%s\" tem dono incorreto"
+
+#: postmaster/postmaster.c:970
+msgid "The server must be started by the user that owns the data directory."
+msgstr ""
+"O servidor deve ser iniciado pelo usu�rio que � dono do diret�rio de dados."
+
+#: postmaster/postmaster.c:989
 #, c-format
 msgid "data directory \"%s\" has group or world access"
 msgstr "diret�rio de dados \"%s\" tem acesso para grupo ou outros"
 
-#: postmaster/postmaster.c:969
+#: postmaster/postmaster.c:991
 msgid "Permissions should be u=rwx (0700)."
 msgstr "Permiss�es devem ser u=rwx (0700)."
 
-#: postmaster/postmaster.c:980
+#: postmaster/postmaster.c:1002
 #, c-format
 msgid ""
 "%s: could not find the database system\n"
@@ -10422,569 +10239,442 @@ msgstr ""
 "Era esperado encontr�-lo no diret�rio \"%s\",\n"
 "mas n�o p�de abrir arquivo \"%s\": %s\n"
 
-#: postmaster/postmaster.c:1025
+#: postmaster/postmaster.c:1038
 #, c-format
 msgid "%s: could not fork background process: %s\n"
 msgstr "%s: n�o p�de criar processo em segundo plano: %s\n"
 
-#: postmaster/postmaster.c:1047
+#: postmaster/postmaster.c:1056
 #, c-format
 msgid "%s: could not dissociate from controlling TTY: %s\n"
 msgstr "%s: n�o p�de dissociar da TTY de controle: %s\n"
 
-#: postmaster/postmaster.c:1070
-#, c-format
-msgid ""
-"%s is the PostgreSQL server.\n"
-"\n"
-msgstr ""
-"%s � o servidor PostgreSQL.\n"
-"\n"
-
-#: postmaster/postmaster.c:1071
-#, c-format
-msgid ""
-"Usage:\n"
-"  %s [OPTION]...\n"
-"\n"
-msgstr ""
-"Uso:\n"
-"  %s [OP��O]...\n"
-"\n"
-
-#: postmaster/postmaster.c:1078
-#, c-format
-msgid "  -d 1-5          debugging level\n"
-msgstr "   -d 1-5         n�vel de depura��o\n"
-
-#: postmaster/postmaster.c:1081
-#, c-format
-msgid "  -h HOSTNAME     host name or IP address to listen on\n"
-msgstr "  -h M�QUINA      nome da m�quina ou endere�o IP para escutar\n"
-
-#: postmaster/postmaster.c:1082
-#, c-format
-msgid "  -i              enable TCP/IP connections\n"
-msgstr "  -i              habilita conex�es TCP/IP\n"
-
-#: postmaster/postmaster.c:1083
-#, c-format
-msgid "  -k DIRECTORY    Unix-domain socket location\n"
-msgstr "  -k DIRET�RIO    local do soquete de dom�nio Unix\n"
-
-#: postmaster/postmaster.c:1085
-#, c-format
-msgid "  -l              enable SSL connections\n"
-msgstr "  -l              habilita conex�es SSL\n"
-
-#: postmaster/postmaster.c:1087
-#, c-format
-msgid "  -N MAX-CONNECT  maximum number of allowed connections\n"
-msgstr "  -N MAX-CONEX�O  m�ximo n�mero de conex�es permitidas\n"
-
-#: postmaster/postmaster.c:1088
-#, c-format
-msgid "  -o OPTIONS      pass \"OPTIONS\" to each server process\n"
-msgstr "  -o OP��ES       passa \"OP��ES\" para cada processo do servidor\n"
-
-#: postmaster/postmaster.c:1089
-#, c-format
-msgid "  -p PORT         port number to listen on\n"
-msgstr "  -p PORTA        n�mero da porta para escutar\n"
-
-#: postmaster/postmaster.c:1090
-#, c-format
-msgid ""
-"  -S              silent mode (start in background without logging output)\n"
-msgstr ""
-"  -S              modo silencioso (inicia em segundo plano sem sa�da de "
-"depura��o)\n"
-
-#: postmaster/postmaster.c:1095
-#, c-format
-msgid ""
-"  -n              do not reinitialize shared memory after abnormal exit\n"
-msgstr ""
-"  -n              n�o reinicializa mem�ria compartilhada depois de sa�da "
-"anormal\n"
-
-#: postmaster/postmaster.c:1096
-#, c-format
-msgid "  -s              send SIGSTOP to all backend servers if one dies\n"
-msgstr ""
-"  -s              envia SIGSTOP para todos os servidores se um deles morrer\n"
-
-#: postmaster/postmaster.c:1098
-#, c-format
-msgid ""
-"\n"
-"Please read the documentation for the complete list of run-time\n"
-"configuration settings and how to set them on the command line or in\n"
-"the configuration file.\n"
-"\n"
-"Report bugs to <pgsql-bugs@postgresql.org>.\n"
-msgstr ""
-"\n"
-"Por favor leia a documenta��o para verificar a lista completa\n"
-"de par�metros de configura��o e como defin�-los pela linha de comando ou\n"
-"no arquivo de configura��o.\n"
-"\n"
-"Reporte erros a <pgsql-bugs@postgresql.org>.\n"
-
-#: postmaster/postmaster.c:1160
+#: postmaster/postmaster.c:1169
 #, c-format
 msgid "select() failed in postmaster: %m"
 msgstr "select() falhou no postmaster: %m"
 
-#: postmaster/postmaster.c:1311 postmaster/postmaster.c:1342
+#: postmaster/postmaster.c:1321 postmaster/postmaster.c:1352
 msgid "incomplete startup packet"
 msgstr "pacote de inicializa��o incompleto"
 
-#: postmaster/postmaster.c:1323
+#: postmaster/postmaster.c:1333
 msgid "invalid length of startup packet"
 msgstr " tamanho do pacote de inicializa��o inv�lido"
 
-#: postmaster/postmaster.c:1375
+#: postmaster/postmaster.c:1385
 #, c-format
 msgid "failed to send SSL negotiation response: %m"
 msgstr "falhou ao enviar resposta de negocia��o SSL: %m"
 
-#: postmaster/postmaster.c:1404
+#: postmaster/postmaster.c:1414
 #, c-format
 msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u"
 msgstr ""
 "protocolo do cliente %u.%u n�o � suportado: servidor suporta %u.0 a %u.%u"
 
-#: postmaster/postmaster.c:1468
+#: postmaster/postmaster.c:1478
 msgid "invalid startup packet layout: expected terminator as last byte"
 msgstr ""
 "formato de pacote de inicializa��o inv�lido: terminador esperado como �ltimo "
 "byte"
 
-#: postmaster/postmaster.c:1497
+#: postmaster/postmaster.c:1507
 msgid "no PostgreSQL user name specified in startup packet"
 msgstr ""
 "nenhum nome de usu�rio PostgreSQL especificado no pacote de inicializa��o"
 
-#: postmaster/postmaster.c:1550
+#: postmaster/postmaster.c:1560
 msgid "the database system is starting up"
 msgstr "o sistema de banco de dados est� iniciando"
 
-#: postmaster/postmaster.c:1555
+#: postmaster/postmaster.c:1565
 msgid "the database system is shutting down"
 msgstr "o sistema de banco de dados est� desligando"
 
-#: postmaster/postmaster.c:1560
+#: postmaster/postmaster.c:1570
 msgid "the database system is in recovery mode"
 msgstr "o sistema de banco de dados est� em modo de recupera��o"
 
-#: postmaster/postmaster.c:1790
+#: postmaster/postmaster.c:1800
 msgid "received SIGHUP, reloading configuration files"
 msgstr "SIGHUP recebido, recarregando arquivos de configura��o"
 
-#: postmaster/postmaster.c:1842
+#: postmaster/postmaster.c:1854
 msgid "received smart shutdown request"
 msgstr "pedido de desligamento inteligente recebido"
 
-#: postmaster/postmaster.c:1878
+#: postmaster/postmaster.c:1890
 msgid "received fast shutdown request"
 msgstr "pedido de desligamento r�pido recebido"
 
-#: postmaster/postmaster.c:1885
+#: postmaster/postmaster.c:1897
 msgid "aborting any active transactions"
 msgstr "interrompendo quaisquer transa��es ativas"
 
-#: postmaster/postmaster.c:1923
+#: postmaster/postmaster.c:1935
 msgid "received immediate shutdown request"
 msgstr "pedido de desligamento imediato recebido"
 
-#: postmaster/postmaster.c:1996
-msgid "startup process"
-msgstr "processo de inicializa��o"
-
-#: postmaster/postmaster.c:1999
+#: postmaster/postmaster.c:2011
 msgid "aborting startup due to startup process failure"
 msgstr "interrompendo inicializa��o porque o processo de inicializa��o falhou"
 
-#: postmaster/postmaster.c:2062
-msgid "background writer process"
-msgstr "processo de escrita em segundo plano (background writer)"
-
-#: postmaster/postmaster.c:2075
-msgid "archiver process"
-msgstr "processo arquivador"
-
-#: postmaster/postmaster.c:2092
-msgid "statistics collector process"
-msgstr "processo de coleta de estat�sticas (statistics collector)"
-
-#: postmaster/postmaster.c:2106
-msgid "system logger process"
-msgstr "processo de relato do sistema (system logger)"
-
-#: postmaster/postmaster.c:2127
+#: postmaster/postmaster.c:2147
 msgid "all server processes terminated; reinitializing"
 msgstr "todos os processos do servidor terminados; reinicializando"
 
-#: postmaster/postmaster.c:2173 postmaster/postmaster.c:2183
-msgid "server process"
-msgstr "processo do servidor"
-
-#: postmaster/postmaster.c:2228
+#: postmaster/postmaster.c:2248
 msgid "terminating any other active server processes"
 msgstr "terminando quaisquer outros processos do servidor ativos"
 
-#: postmaster/postmaster.c:2325
+#: postmaster/postmaster.c:2345
 #, c-format
 msgid "%s (PID %d) exited with exit code %d"
 msgstr "%s (PID %d) terminou com c�digo de sa�da %d"
 
-#: postmaster/postmaster.c:2334
+#: postmaster/postmaster.c:2354
 #, c-format
 msgid "%s (PID %d) was terminated by signal %d"
 msgstr "%s (PID %d) foi terminado pelo sinal %d"
 
-#: postmaster/postmaster.c:2343
+#: postmaster/postmaster.c:2363
 #, c-format
 msgid "%s (PID %d) exited with unexpected status %d"
 msgstr "%s (PID %d) terminou com status inesperado %d"
 
-#: postmaster/postmaster.c:2468
+#: postmaster/postmaster.c:2439
 #, c-format
 msgid "could not fork new process for connection: %m"
 msgstr "n�o p�de criar novo processo para conex�o: %m"
 
-#: postmaster/postmaster.c:2507
-msgid "could not fork new process for connection: "
-msgstr "n�o p�de criar novo processo para conex�o: "
-
-#: postmaster/postmaster.c:2646
+#: postmaster/postmaster.c:2617
 #, c-format
 msgid "getnameinfo_all() failed: %s"
 msgstr "getnameinfo_all() falhou: %s"
 
-#: postmaster/postmaster.c:2655
+#: postmaster/postmaster.c:2626
 #, c-format
 msgid "connection received: host=%s port=%s"
 msgstr "conex�o recebida: host=%s porta=%s"
 
-#: postmaster/postmaster.c:2727
+#: postmaster/postmaster.c:2698
 #, c-format
 msgid "connection authorized: user=%s database=%s"
 msgstr "conex�o autorizada: usu�rio=%s banco de dados=%s"
 
-#: postmaster/postmaster.c:2945
+#: postmaster/postmaster.c:2916
 #, c-format
 msgid "could not execute server process \"%s\": %m"
 msgstr "n�o p�de executar processo do servidor \"%s\": %m"
 
-#: postmaster/postmaster.c:3551
+#: postmaster/postmaster.c:3485
 #, c-format
 msgid "could not fork startup process: %m"
 msgstr "n�o p�de criar processo de inicializa��o: %m"
 
-#: postmaster/postmaster.c:3555
+#: postmaster/postmaster.c:3489
 #, c-format
 msgid "could not fork background writer process: %m"
 msgstr "n�o p�de criar processo de escrita em segundo plano: %m"
 
-#: postmaster/postmaster.c:3559
+#: postmaster/postmaster.c:3493
 #, c-format
 msgid "could not fork process: %m"
 msgstr "n�o p�de criar processo: %m"
 
-#: postmaster/postmaster.c:3733
+#: postmaster/postmaster.c:3667
 #, c-format
 msgid "could not duplicate socket %d for use in backend: error code %d"
 msgstr "n�o p�de duplicar soquete %d para uso pelo servidor: c�digo de erro %d"
 
-#: postmaster/postmaster.c:3762
+#: postmaster/postmaster.c:3696
 #, c-format
 msgid "could not create inherited socket: error code %d\n"
 msgstr "n�o p�de criar soquete herdado: c�digo de erro %d\n"
 
-#: postmaster/postmaster.c:3791 postmaster/postmaster.c:3798
+#: postmaster/postmaster.c:3725 postmaster/postmaster.c:3732
 #, c-format
 msgid "could not read from backend variables file \"%s\": %s\n"
 msgstr "n�o p�de ler do arquivo de vari�veis do servidor \"%s\": %s\n"
 
-#: postmaster/postmaster.c:3807
+#: postmaster/postmaster.c:3741
 #, c-format
 msgid "could not remove file \"%s\": %s\n"
 msgstr "n�o p�de remover arquivo \"%s\": %s\n"
 
-#: postmaster/postmaster.c:3820
+#: postmaster/postmaster.c:3754
 #, c-format
 msgid "could not map view of backend variables: error code %d\n"
 msgstr "n�o p�de mapear vis�o de vari�veis do servidor: c�digo de erro %d\n"
 
-#: postmaster/postmaster.c:3829
+#: postmaster/postmaster.c:3763
 #, c-format
 msgid "could not unmap view of backend variables: error code %d\n"
 msgstr "n�o p�de liberar vis�o de vari�veis do servidor: c�digo de erro %d\n"
 
-#: postmaster/postmaster.c:3836
+#: postmaster/postmaster.c:3770
 #, c-format
 msgid "could not close handle to backend parameter variables: error code %d\n"
 msgstr ""
 "n�o p�de fechar manipulador das vari�veis do servidor: c�digo de erro %d\n"
 
-#: postmaster/postmaster.c:4078
+#: postmaster/postmaster.c:4012
 #, c-format
 msgid "could not wait on child process handle: error code %d\n"
 msgstr "n�o p�de esperar manipula��o de processo filho: c�digo de erro %d\n"
 
-#: postmaster/pgstat.c:259
+#: postmaster/pgstat.c:260
 #, c-format
 msgid "could not resolve \"localhost\": %s"
 msgstr "n�o p�de resolver \"localhost\": %s"
 
-#: postmaster/pgstat.c:287
+#: postmaster/pgstat.c:288
 #, c-format
 msgid "could not create socket for statistics collector: %m"
 msgstr "n�o p�de criar soquete para coletor de estat�sticas: %m"
 
-#: postmaster/pgstat.c:299
+#: postmaster/pgstat.c:300
 #, c-format
 msgid "could not bind socket for statistics collector: %m"
 msgstr "n�o p�de se ligar ao soquete do coletor de estat�sticas: %m"
 
-#: postmaster/pgstat.c:310
+#: postmaster/pgstat.c:311
 #, c-format
 msgid "could not get address of socket for statistics collector: %m"
 msgstr "n�o p�de pegar endere�o do soquete do coletor de estat�sticas: %m"
 
-#: postmaster/pgstat.c:326
+#: postmaster/pgstat.c:327
 #, c-format
 msgid "could not connect socket for statistics collector: %m"
 msgstr "n�o p�de se conectar ao soquete do coletor de estat�sticas: %m"
 
-#: postmaster/pgstat.c:343
+#: postmaster/pgstat.c:344
 #, c-format
 msgid "could not send test message on socket for statistics collector: %m"
 msgstr ""
 "n�o p�de enviar mensagem de teste ao soquete do coletor de estat�sticas: %m"
 
-#: postmaster/pgstat.c:368 postmaster/pgstat.c:1565
+#: postmaster/pgstat.c:369 postmaster/pgstat.c:1568
 #, c-format
 msgid "select() failed in statistics collector: %m"
 msgstr "select() falhou no coletor de estat�sticas: %m"
 
-#: postmaster/pgstat.c:383
+#: postmaster/pgstat.c:384
 msgid "test message did not get through on socket for statistics collector"
 msgstr ""
 "mensagem teste n�o foi recebida pelo soquete do coletor de estat�sticas"
 
-#: postmaster/pgstat.c:395
+#: postmaster/pgstat.c:396
 #, c-format
 msgid "could not receive test message on socket for statistics collector: %m"
 msgstr ""
 "n�o p�de receber mensagem teste no soquete do coletor de estat�sticas: %m"
 
-#: postmaster/pgstat.c:405
+#: postmaster/pgstat.c:406
 msgid "incorrect test message transmission on socket for statistics collector"
 msgstr ""
 "transmiss�o de mensagem teste incorreta no soquete do coletor de estat�sticas"
 
-#: postmaster/pgstat.c:429
+#: postmaster/pgstat.c:430
 #, c-format
 msgid "could not set statistics collector socket to nonblocking mode: %m"
 msgstr ""
 "n�o p�de definir soquete do coletor de estat�sticas para modo n�o-bloqueado: "
 "%m"
 
-#: postmaster/pgstat.c:439
+#: postmaster/pgstat.c:440
 msgid "disabling statistics collector for lack of working socket"
 msgstr ""
 "desabilitando coletor de estat�sticas por falta de um soquete que funcione"
 
-#: postmaster/pgstat.c:565
+#: postmaster/pgstat.c:566
 msgid "statistics collector startup skipped"
 msgstr "inicializa��o do coletor de estat�sticas foi omitida"
 
-#: postmaster/pgstat.c:599
+#: postmaster/pgstat.c:587
 #, c-format
 msgid "could not fork statistics buffer: %m"
 msgstr "n�o p�de criar processo para buffer de estat�sticas: %m"
 
-#: postmaster/pgstat.c:957
+#: postmaster/pgstat.c:960
 msgid "must be superuser to reset statistics counters"
 msgstr "deve ser super-usu�rio para reiniciar contadores de estat�sticas"
 
-#: postmaster/pgstat.c:1379
+#: postmaster/pgstat.c:1382
 #, c-format
 msgid "could not create pipe for statistics buffer: %m"
 msgstr "n�o p�de criar pipe para buffer de estat�sticas: %m"
 
-#: postmaster/pgstat.c:1391
+#: postmaster/pgstat.c:1394
 #, c-format
 msgid "could not fork statistics collector: %m"
 msgstr "n�o p�de criar processo para coletor de estat�sticas: %m"
 
-#: postmaster/pgstat.c:1606
+#: postmaster/pgstat.c:1609
 #, c-format
 msgid "could not read from statistics collector pipe: %m"
 msgstr "n�o p�de ler do pipe do coletor de estat�sticas: %m"
 
-#: postmaster/pgstat.c:1627
+#: postmaster/pgstat.c:1630
 msgid "invalid statistics message length"
 msgstr "tamanho da mensagem de estat�stica � inv�lido"
 
-#: postmaster/pgstat.c:1772
+#: postmaster/pgstat.c:1775
 #, c-format
 msgid "could not set statistics collector pipe to nonblocking mode: %m"
 msgstr ""
 "n�o p�de definir modo n�o bloqueado para pipe do coletor de estat�sticas: %m"
 
-#: postmaster/pgstat.c:1803
+#: postmaster/pgstat.c:1806
 msgid "statistics buffer is full"
 msgstr "buffer de estat�sticas est� cheio"
 
-#: postmaster/pgstat.c:1834
+#: postmaster/pgstat.c:1837
 #, c-format
 msgid "select() failed in statistics buffer: %m"
-msgstr "select() falhou no buffer de estat�stica: %m"
+msgstr "select() falhou no buffer de estat�sticas: %m"
 
-#: postmaster/pgstat.c:1848
+#: postmaster/pgstat.c:1851
 #, c-format
 msgid "could not read statistics message: %m"
 msgstr "n�o p�de ler mensagem de estat�stica: %m"
 
-#: postmaster/pgstat.c:1911
+#: postmaster/pgstat.c:1914
 #, c-format
 msgid "could not write to statistics collector pipe: %m"
 msgstr "n�o p�de escrever no pipe do coletor de estat�sticas: %m"
 
-#: postmaster/pgstat.c:1986
+#: postmaster/pgstat.c:1989
 #, c-format
 msgid "invalid server process ID %d"
 msgstr "ID do processo do servidor %d � inv�lido"
 
-#: postmaster/pgstat.c:2045 postmaster/pgstat.c:2120 postmaster/pgstat.c:2718
+#: postmaster/pgstat.c:2048 postmaster/pgstat.c:2123 postmaster/pgstat.c:2721
 msgid "out of memory in statistics collector --- abort"
 msgstr "sem mem�ria no coletor de estat�sticas --- interrompendo"
 
-#: postmaster/pgstat.c:2168
+#: postmaster/pgstat.c:2171
 #, c-format
 msgid "could not open temporary statistics file \"%s\": %m"
 msgstr "n�o p�de abrir arquivo de estat�sticas tempor�rio \"%s\": %m"
 
-#: postmaster/pgstat.c:2194
+#: postmaster/pgstat.c:2197
 msgid "database hash table corrupted during cleanup --- abort"
 msgstr ""
 "tabela hash do banco de dados foi corrompida durante desligamento --- "
 "interrompendo"
 
-#: postmaster/pgstat.c:2229
+#: postmaster/pgstat.c:2232
 #, c-format
 msgid "tables hash table for database %u corrupted during cleanup --- abort"
 msgstr ""
 "tabela hash das tabelas do banco de dados %u foram corrompidas durante "
 "desligamento --- interrompendo"
 
-#: postmaster/pgstat.c:2277
+#: postmaster/pgstat.c:2280
 #, c-format
 msgid "could not close temporary statistics file \"%s\": %m"
 msgstr "n�o p�de fechar arquivo de estat�sticas tempor�rio \"%s\": %m"
 
-#: postmaster/pgstat.c:2286
+#: postmaster/pgstat.c:2289
 #, c-format
 msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m"
 msgstr ""
 "n�o p�de renomear arquivo de estat�sticas tempor�rio \"%s\" para \"%s\": %m"
 
-#: postmaster/pgstat.c:2308
+#: postmaster/pgstat.c:2311
 msgid "dead-server-process hash table corrupted during cleanup --- abort"
 msgstr ""
 "tabela hash do processo do servidor morto foi corrompida durante "
 "desligamento --- interrompendo"
 
-#: postmaster/pgstat.c:2415 postmaster/pgstat.c:2435 postmaster/pgstat.c:2481
-#: postmaster/pgstat.c:2502 postmaster/pgstat.c:2519 postmaster/pgstat.c:2553
-#: postmaster/pgstat.c:2582
+#: postmaster/pgstat.c:2418 postmaster/pgstat.c:2438 postmaster/pgstat.c:2484
+#: postmaster/pgstat.c:2505 postmaster/pgstat.c:2522 postmaster/pgstat.c:2556
+#: postmaster/pgstat.c:2585
 msgid "corrupted pgstat.stat file"
 msgstr "arquivo pgstat.stat corrompido"
 
-#: postmaster/syslogger.c:317
+#: postmaster/syslogger.c:318
 #, c-format
 msgid "select() failed in logger process: %m"
 msgstr "select() falhou no processo logger: %m"
 
-#: postmaster/syslogger.c:329 postmaster/syslogger.c:734
+#: postmaster/syslogger.c:330 postmaster/syslogger.c:715
 #, c-format
 msgid "could not read from logger pipe: %m"
 msgstr "n�o p�de ler do pipe do logger: %m"
 
-#: postmaster/syslogger.c:361
+#: postmaster/syslogger.c:362
 msgid "logger shutting down"
 msgstr "desligando logger"
 
-#: postmaster/syslogger.c:405 postmaster/syslogger.c:419
+#: postmaster/syslogger.c:406 postmaster/syslogger.c:420
 #, c-format
 msgid "could not create pipe for syslog: %m"
 msgstr "n�o p�de criar pipe para syslog: %m"
 
-#: postmaster/syslogger.c:447
+#: postmaster/syslogger.c:448
 #, c-format
 msgid "could not create log file \"%s\": %m"
 msgstr "n�o p�de criar arquivo de log \"%s\": %m"
 
-#: postmaster/syslogger.c:477
+#: postmaster/syslogger.c:463
 #, c-format
 msgid "could not fork system logger: %m"
 msgstr "n�o p�de criar processo system logger: %m"
 
-#: postmaster/syslogger.c:509
+#: postmaster/syslogger.c:491
 #, c-format
 msgid "could not redirect stdout: %m"
 msgstr "n�o p�de redirecionar sa�da padr�o: %m"
 
-#: postmaster/syslogger.c:514 postmaster/syslogger.c:527
+#: postmaster/syslogger.c:496 postmaster/syslogger.c:509
 #, c-format
 msgid "could not redirect stderr: %m"
 msgstr "n�o p�de redirecionar sa�da de erro: %m"
 
-#: postmaster/syslogger.c:703
+#: postmaster/syslogger.c:684
 #, c-format
-msgid "could not write to log file: %m"
-msgstr "n�o p�de escrever em arquivo de log: %m"
+msgid "could not write to log file: %s\n"
+msgstr "n�o p�de escrever em arquivo de log: %s\n"
 
-#: postmaster/syslogger.c:790
+#: postmaster/syslogger.c:771
 #, c-format
 msgid "could not open new log file \"%s\": %m"
 msgstr "n�o p�de abrir novo arquivo de log \"%s\": %m"
 
-#: postmaster/syslogger.c:802
+#: postmaster/syslogger.c:783
 msgid "disabling automatic rotation (use SIGHUP to reenable)"
 msgstr ""
 "desabilitando rota��o autom�tica (utilize SIGHUP para habilit�-lo novamente)"
 
-#: postmaster/bgwriter.c:336
+#: postmaster/bgwriter.c:332
 #, c-format
 msgid "checkpoints are occurring too frequently (%d seconds apart)"
 msgstr "pontos de controle est�o ocorrendo frequentemente (%d segundos)"
 
-#: postmaster/bgwriter.c:338
+#: postmaster/bgwriter.c:334
 msgid ""
 "Consider increasing the configuration parameter \"checkpoint_segments\"."
 msgstr ""
 "Considere aumentar o par�metro de configura��o \"checkpoint_segments\"."
 
-#: postmaster/bgwriter.c:488
+#: postmaster/bgwriter.c:485
 msgid "not enough shared memory for background writer"
 msgstr ""
 "mem�ria compartilhada insuficiente para processo de escrita em segundo plano "
 "(background writer)"
 
-#: postmaster/bgwriter.c:553
+#: postmaster/bgwriter.c:567
 msgid "checkpoint request failed"
 msgstr "pedido de ponto de controle falhou"
 
-#: postmaster/bgwriter.c:554
+#: postmaster/bgwriter.c:568
 msgid "Consult the server log for details."
 msgstr "Consulte o log do servidor para obter detalhes."
 
-#: bootstrap/bootstrap.c:482
+#: bootstrap/bootstrap.c:488
 msgid ""
 "Usage:\n"
 "  postgres -boot [OPTION]... DBNAME\n"
@@ -11000,66 +10690,16 @@ msgstr ""
 "  -c NOME=VALOR    define par�metro em tempo de execu��o\n"
 "  -d 1-5           n�vel de depura��o\n"
 "  -D dirdados      diret�rio de dados\n"
-"  -F               desabilita fsync\n"
+"  -F               desabilita o fsync\n"
 "  -o arquivo       envia sa�da da depura��o para arquivo\n"
 "  -x num           uso interno\n"
 
-#: ../port/dirmod.c:75 ../port/dirmod.c:88 ../port/dirmod.c:101
-#, c-format
-msgid "out of memory\n"
-msgstr "sem mem�ria\n"
-
-#: ../port/dirmod.c:283
+#: ../port/dirmod.c:284
 #, c-format
 msgid "Error setting junction for %s: %s"
 msgstr "Erro ao definir jun��o para %s: %s"
 
-#: ../port/exec.c:194 ../port/exec.c:308 ../port/exec.c:351
-#, c-format
-msgid "could not identify current directory: %s"
-msgstr "n�o p�de identificar diret�rio atual: %s"
-
-#: ../port/exec.c:213
-#, c-format
-msgid "invalid binary \"%s\""
-msgstr "bin�rio \"%s\" � inv�lido"
-
-#: ../port/exec.c:262
-#, c-format
-msgid "could not read binary \"%s\""
-msgstr "n�o p�de ler o bin�rio \"%s\""
-
-#: ../port/exec.c:269
-#, c-format
-msgid "could not find a \"%s\" to execute"
-msgstr "n�o p�de encontrar o \"%s\" para execut�-lo"
-
-#: ../port/exec.c:324 ../port/exec.c:360
-#, c-format
-msgid "could not change directory to \"%s\""
-msgstr "n�o p�de mudar diret�rio para \"%s\""
-
-#: ../port/exec.c:339
-#, c-format
-msgid "could not read symbolic link \"%s\""
-msgstr "n�o p�de ler link simb�lico \"%s\""
-
-#: ../port/exec.c:587
-#, c-format
-msgid "child process exited with exit code %d"
-msgstr "processo filho terminou com c�digo de sa�da %d"
-
-#: ../port/exec.c:590
-#, c-format
-msgid "child process was terminated by signal %d"
-msgstr "processo filho foi terminado pelo sinal %d"
-
-#: ../port/exec.c:593
-#, c-format
-msgid "child process exited with unrecognized status %d"
-msgstr "processo filho terminou com status desconhecido %d"
-
-#: ../port/copydir.c:67
+#: ../port/copydir.c:68
 #, c-format
 msgid "could not copy file \"%s\": %m"
 msgstr "n�o p�de copiar arquivo \"%s\": %m"
diff --git a/src/backend/po/ro.po b/src/backend/po/ro.po
index 0958222..34339b9 100644
--- a/src/backend/po/ro.po
+++ b/src/backend/po/ro.po
@@ -6,8 +6,8 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: postgres-ro-8.0\n"
-"POT-Creation-Date: 2004-11-23 19:01+0000\n"
-"PO-Revision-Date: 2005-01-07 16:58+0200\n"
+"POT-Creation-Date: 2005-01-10 01:43+0000\n"
+"PO-Revision-Date: 2005-01-18 02:49+0200\n"
 "Last-Translator: Alin Vaida <alin.vaida@gmail.com>\n"
 "Language-Team: Romanian <translators@postgresql.org>\n"
 "MIME-Version: 1.0\n"
@@ -22,9 +22,8 @@ msgstr "num
 
 #: access/common/indextuple.c:165
 #, c-format
-#, fuzzy
 msgid "index row requires %lu bytes, maximum size is %lu"
-msgstr "indexul pentru r�nd necesit� %lu octe�i, dimensiunea maxim� este %lu"
+msgstr "indexul pentru r�nd necesit� %lu octe�i, dimensiunea maxim� este %lu"
 
 #: access/common/heaptuple.c:580
 #, c-format
@@ -52,7 +51,7 @@ msgstr "nici un alias de coloan
 
 #: access/common/tupdesc.c:679
 msgid "could not determine row description for function returning record"
-msgstr "imposibil de determinat descrierea r�ndului pentru func�ia ce returneaz� o �nregistrare"
+msgstr "imposibil de determinat descrierea r�ndului pentru func�ia ce returneaz� o �nregistrare"
 
 #: access/hash/hashinsert.c:90
 #, c-format
@@ -159,816 +158,836 @@ msgstr "imposibil de creat fi
 msgid "could not write archive status file \"%s\": %m"
 msgstr "imposibil de scris fi�ierul de stare a arhivei \"%s\": %m"
 
-#: access/transam/xlog.c:1180 access/transam/xlog.c:1304
-#: access/transam/xlog.c:5192
+#: access/transam/xlog.c:1180 access/transam/xlog.c:1321
+#: access/transam/xlog.c:5209
 #, c-format
 msgid "could not close log file %u, segment %u: %m"
 msgstr "imposibil de �nchis fi�ierul jurnal %u, segment %u: %m"
 
-#: access/transam/xlog.c:1238 access/transam/xlog.c:2416
+#: access/transam/xlog.c:1255 access/transam/xlog.c:2433
 #, c-format
 msgid "could not seek in log file %u, segment %u to offset %u: %m"
 msgstr "imposibil de c�utat �n fi�ierul jurnal %u, segment %u decalare %u: %m"
 
-#: access/transam/xlog.c:1252
+#: access/transam/xlog.c:1269
 #, c-format
 msgid "could not write to log file %u, segment %u at offset %u: %m"
 msgstr "imposibil de scris �n fi�ierul jurnal %u, segment %u decalare %u: %m"
 
-#: access/transam/xlog.c:1504 access/transam/xlog.c:1595
-#: access/transam/xlog.c:1808 access/transam/xlog.c:1862
-#: access/transam/xlog.c:1871
+#: access/transam/xlog.c:1521 access/transam/xlog.c:1612
+#: access/transam/xlog.c:1825 access/transam/xlog.c:1879
+#: access/transam/xlog.c:1888
 #, c-format
 msgid "could not open file \"%s\" (log file %u, segment %u): %m"
 msgstr "imposibil de deschis fi�ierul \"%s\" (fi�ier jurnal %u, segment %u): %m"
 
-#: access/transam/slru.c:645 access/transam/xlog.c:1527
-#: access/transam/xlog.c:1647 access/transam/xlog.c:2922
-#: access/transam/xlog.c:5340 access/transam/xlog.c:5458
-#: postmaster/postmaster.c:2907
+#: access/transam/slru.c:645 access/transam/xlog.c:1544
+#: access/transam/xlog.c:1664 access/transam/xlog.c:2939
+#: access/transam/xlog.c:5357 access/transam/xlog.c:5475
+#: postmaster/postmaster.c:2905
 #, c-format
 msgid "could not create file \"%s\": %m"
 msgstr "imposibil de creat fi�ierul \"%s\": %m"
 
-#: access/transam/xlog.c:1556 access/transam/xlog.c:1680
-#: access/transam/xlog.c:2975 access/transam/xlog.c:3013 commands/copy.c:1117
+#: access/transam/xlog.c:1573 access/transam/xlog.c:1697
+#: access/transam/xlog.c:2992 access/transam/xlog.c:3030 commands/copy.c:1118
 #: commands/tablespace.c:664 commands/tablespace.c:670
-#: postmaster/postmaster.c:2917 postmaster/postmaster.c:2927
-#: utils/init/miscinit.c:832 utils/init/miscinit.c:841 utils/misc/guc.c:4783
-#: utils/misc/guc.c:4847
+#: postmaster/postmaster.c:2915 postmaster/postmaster.c:2925
+#: utils/init/miscinit.c:832 utils/init/miscinit.c:841 utils/misc/guc.c:4799
+#: utils/misc/guc.c:4863
 #, c-format
 msgid "could not write to file \"%s\": %m"
 msgstr "imposibil de scris �n fi�ierul \"%s\": %m"
 
-#: access/transam/slru.c:673 access/transam/xlog.c:1563
-#: access/transam/xlog.c:1687 access/transam/xlog.c:3019
+#: access/transam/slru.c:673 access/transam/xlog.c:1580
+#: access/transam/xlog.c:1704 access/transam/xlog.c:3036
 #, c-format
 msgid "could not fsync file \"%s\": %m"
 msgstr "imposibil de executat fsync cu fi�ierul \"%s\": %m"
 
-#: access/transam/slru.c:680 access/transam/xlog.c:1568
-#: access/transam/xlog.c:1692 access/transam/xlog.c:3024
+#: access/transam/slru.c:680 access/transam/xlog.c:1585
+#: access/transam/xlog.c:1709 access/transam/xlog.c:3041
 #, c-format
 msgid "could not close file \"%s\": %m"
 msgstr "imposibil de �nchis fi�ierul \"%s\": %m"
 
-#: access/transam/slru.c:638 access/transam/xlog.c:1632
-#: access/transam/xlog.c:2753 access/transam/xlog.c:2843
-#: access/transam/xlog.c:2941 libpq/hba.c:912 libpq/hba.c:936
+#: access/transam/slru.c:638 access/transam/xlog.c:1649
+#: access/transam/xlog.c:2770 access/transam/xlog.c:2860
+#: access/transam/xlog.c:2958 libpq/hba.c:948 libpq/hba.c:1005
 #: utils/error/elog.c:1118 utils/init/miscinit.c:783 utils/init/miscinit.c:889
 #: utils/misc/database.c:68
 #, c-format
 msgid "could not open file \"%s\": %m"
 msgstr "imposibil de deschis fi�ierul \"%s\": %m"
 
-#: access/transam/xlog.c:1660 access/transam/xlog.c:2953
-#: access/transam/xlog.c:5429 access/transam/xlog.c:5480
-#: access/transam/xlog.c:5552 access/transam/xlog.c:5577
-#: access/transam/xlog.c:5615
+#: access/transam/xlog.c:1677 access/transam/xlog.c:2970
+#: access/transam/xlog.c:5446 access/transam/xlog.c:5497
+#: access/transam/xlog.c:5569 access/transam/xlog.c:5594
+#: access/transam/xlog.c:5632
 #, c-format
 msgid "could not read file \"%s\": %m"
 msgstr "imposibil de citit fi�ierul \"%s\": %m"
 
-#: access/transam/xlog.c:1663
+#: access/transam/xlog.c:1680
 #, c-format
 msgid "not enough data in file \"%s\""
 msgstr "nu exist� date suficiente �n fi�ierul \"%s\""
 
-#: access/transam/xlog.c:1775
+#: access/transam/xlog.c:1792
 #, c-format
 msgid ""
 "could not link file \"%s\" to \"%s\" (initialization of log file %u, segment "
 "%u): %m"
 msgstr "imposibil de creat leg�tura �ntre fi�ierul \"%s\" �i \"%s\" (ini�ializarea fi�ierului jurnal %u, segment %u): %m"
 
-#: access/transam/xlog.c:1782
+#: access/transam/xlog.c:1799
 #, c-format
 msgid ""
 "could not rename file \"%s\" to \"%s\" (initialization of log file %u, "
 "segment %u): %m"
 msgstr "imposibil de redenumit fisierul \"%s\" �n \"%s\" (ini�ializarea fi�ierului jurnal %u, segment %u): %m"
 
-#: access/transam/xlog.c:1937 access/transam/xlog.c:2039
-#: access/transam/xlog.c:5323
+#: access/transam/xlog.c:1954 access/transam/xlog.c:2056
+#: access/transam/xlog.c:5340
 #, c-format
 msgid "could not stat file \"%s\": %m"
 msgstr "imposibil de ob�inut starea fi�ierului \"%s\": %m"
 
-#: access/transam/xlog.c:1945 access/transam/xlog.c:5485
-#: access/transam/xlog.c:5639 commands/tablespace.c:589
+#: access/transam/xlog.c:1962 access/transam/xlog.c:5502
+#: access/transam/xlog.c:5656 commands/tablespace.c:589
 #, c-format
 msgid "could not remove file \"%s\": %m"
 msgstr "imposibil de eliminat fi�ierul \"%s\": %m"
 
-#: access/transam/xlog.c:2020
+#: access/transam/xlog.c:2037
 #, c-format
 msgid "archive file \"%s\" has wrong size: %lu instead of %lu"
 msgstr "fi�ierul arhiv� \"%s\" are dimensiunea gre�it�: %lu �n loc de %lu"
 
-#: access/transam/xlog.c:2027
+#: access/transam/xlog.c:2044
 #, c-format
 msgid "restored log file \"%s\" from archive"
 msgstr "fi�ierul jurnal \"%s\" a fost restabilit din arhiv�"
 
-#: access/transam/xlog.c:2052
+#: access/transam/xlog.c:2069
 #, c-format
 msgid "could not restore file \"%s\" from archive: return code %d"
 msgstr "imposibil de restabilit fi�ierul \"%s\" din arhiv�: cod returnat %d"
 
-#: access/transam/xlog.c:2120
+#: access/transam/xlog.c:2137
 #, c-format
 msgid "could not open transaction log directory \"%s\": %m"
 msgstr "imposibil de deschis directorul jurnalului de tranzac�ii \"%s\": %m"
 
-#: access/transam/xlog.c:2165
+#: access/transam/xlog.c:2182
 #, c-format
 msgid "recycled transaction log file \"%s\""
 msgstr "fi�ierul jurnal de tranzac�ii \"%s\" a fost reciclat"
 
-#: access/transam/xlog.c:2173
+#: access/transam/xlog.c:2190
 #, c-format
 msgid "removing transaction log file \"%s\""
 msgstr "eliminare fi�ier jurnal de tranzac�ii \"%s\""
 
-#: access/transam/xlog.c:2196
+#: access/transam/xlog.c:2213
 #, c-format
 msgid "could not read transaction log directory \"%s\": %m"
 msgstr "imposibil de citit directorul jurnalului de tranzac�ii \"%s\": %m"
 
-#: access/transam/xlog.c:2280
+#: access/transam/xlog.c:2297
 #, c-format
 msgid "incorrect resource manager data checksum in record at %X/%X"
 msgstr "sum� de control a datelor administratorului de resurse incorect� �n �nregistrarea din %X/%X"
 
-#: access/transam/xlog.c:2303
+#: access/transam/xlog.c:2320
 #, c-format
 msgid "incorrect checksum of backup block %d in record at %X/%X"
 msgstr "sum� de control a blocului de rezerv� %d incorect� �n �nregistrarea din %X/%X"
 
-#: access/transam/xlog.c:2376 access/transam/xlog.c:2446
+#: access/transam/xlog.c:2393 access/transam/xlog.c:2463
 #, c-format
 msgid "invalid record offset at %X/%X"
 msgstr "decalare a �nregistr�rii incorect� �n %X/%X"
 
-#: access/transam/xlog.c:2424
+#: access/transam/xlog.c:2441
 #, c-format
 msgid "could not read from log file %u, segment %u at offset %u: %m"
 msgstr "imposibil de citit din fi�ierul jurnal %u, segment %u decalare %u: %m"
 
-#: access/transam/xlog.c:2454
+#: access/transam/xlog.c:2471
 #, c-format
 msgid "contrecord is requested by %X/%X"
 msgstr "contrecord este necesar pentru %X/%X"
 
-#: access/transam/xlog.c:2469
+#: access/transam/xlog.c:2486
 #, c-format
 msgid "record with zero length at %X/%X"
 msgstr "�nregistrare cu lungime zero �n %X/%X"
 
-#: access/transam/xlog.c:2476
+#: access/transam/xlog.c:2493
 #, c-format
 msgid "invalid resource manager ID %u at %X/%X"
 msgstr "ID administrator de resurse incorect (%u) �n %X/%X"
 
-#: access/transam/xlog.c:2514
+#: access/transam/xlog.c:2531
 #, c-format
 msgid "record length %u at %X/%X too long"
 msgstr "lungime �nregistrare %u �n %X/%X prea mare"
 
-#: access/transam/xlog.c:2550
+#: access/transam/xlog.c:2567
 #, c-format
 msgid "could not read from log file %u, segment %u, offset %u: %m"
 msgstr "imposibil de citit din fi�ierul jurnal %u, segment %u, decalare %u: %m"
 
-#: access/transam/xlog.c:2559
+#: access/transam/xlog.c:2576
 #, c-format
-msgid "there is no contrecord flag in log file %u, segment %u, offset %u: %m"
+msgid "there is no contrecord flag in log file %u, segment %u, offset %u"
 msgstr "nu exist� un marcator contrecord �n fi�ierul jurnal %u, segment %u, decalare %u: %m"
 
-#: access/transam/xlog.c:2569
+#: access/transam/xlog.c:2586
 #, c-format
 msgid "invalid contrecord length %u in log file %u, segment %u, offset %u"
-msgstr "lungime contrecord incorect� (%u) �n fi�ierul jurnal %u, segment %u, decalare %u"
+msgstr "lungime contrecord incorect� (%u) �n fi�ierul jurnal %u, segment %u, decalare %u: %m"
 
-#: access/transam/xlog.c:2636
+#: access/transam/xlog.c:2653
 #, c-format
 msgid "invalid magic number %04X in log file %u, segment %u, offset %u"
 msgstr "num�rul magic %04X este incorect �n fi�ierul jurnal %u, segment %u, decalare %u"
 
-#: access/transam/xlog.c:2643
+#: access/transam/xlog.c:2660
 #, c-format
 msgid "invalid info bits %04X in log file %u, segment %u, offset %u"
 msgstr "bi�ii info %04X sunt incorec�i �n fi�ierul jurnal %u, segment %u, decalare %u"
 
-#: access/transam/xlog.c:2665 access/transam/xlog.c:2673
+#: access/transam/xlog.c:2682 access/transam/xlog.c:2690
 msgid "WAL file is from different system"
 msgstr "fi�ierul WAL provine de pe un sistem diferit"
 
-#: access/transam/xlog.c:2666
+#: access/transam/xlog.c:2683
 #, c-format
 msgid "WAL file SYSID is %s, pg_control SYSID is %s"
 msgstr "SYSID fi�ier WAL este %s, SYSID pg_ctl este %s"
 
-#: access/transam/xlog.c:2674
+#: access/transam/xlog.c:2691
 msgid "Incorrect XLOG_SEG_SIZE in page header."
 msgstr "XLOG_SEG_SIZE incorect �n antetul paginii."
 
-#: access/transam/xlog.c:2683
+#: access/transam/xlog.c:2700
 #, c-format
 msgid "unexpected pageaddr %X/%X in log file %u, segment %u, offset %u"
 msgstr "adres� pagin� (pageaddr) %X/%X nea�teptat� �n fi�ierul jurnal %u, segment %u, decalare %u"
 
-#: access/transam/xlog.c:2695
+#: access/transam/xlog.c:2712
 #, c-format
 msgid "unexpected timeline ID %u in log file %u, segment %u, offset %u"
 msgstr "ID timeline %u nea�teptat �n fi�ierul jurnal %u, segment %u, decalare %u"
 
-#: access/transam/xlog.c:2713
+#: access/transam/xlog.c:2730
 #, c-format
 msgid ""
 "out-of-sequence timeline ID %u (after %u) in log file %u, segment %u, offset "
 "%u"
 msgstr ""
 
-#: access/transam/xlog.c:2782
+#: access/transam/xlog.c:2799
 #, c-format
 msgid "syntax error in history file: %s"
 msgstr "eroare de sintax� �n fi�ierul istoric: %s"
 
-#: access/transam/xlog.c:2783
+#: access/transam/xlog.c:2800
 msgid "Expected a numeric timeline ID."
 msgstr "ID timeline numeric a�teptat."
 
-#: access/transam/xlog.c:2788
+#: access/transam/xlog.c:2805
 #, c-format
 msgid "invalid data in history file: %s"
 msgstr "date incorecte �n fi�ierul istoric: %s"
 
-#: access/transam/xlog.c:2789
+#: access/transam/xlog.c:2806
 msgid "Timeline IDs must be in increasing sequence."
 msgstr "ID-urile timeline trebuie s� fie �n ordine cresc�toare."
 
-#: access/transam/xlog.c:2802
+#: access/transam/xlog.c:2819
 #, c-format
 msgid "invalid data in history file \"%s\""
 msgstr "date incorecte �n fi�ierul istoric \"%s\""
 
-#: access/transam/xlog.c:2803
+#: access/transam/xlog.c:2820
 msgid "Timeline IDs must be less than child timeline's ID."
 msgstr "ID-urile timeline trebuie s� fie mai mici dec�t ID-ul timeline al fiului."
 
-#: access/transam/xlog.c:3041
+#: access/transam/xlog.c:3058
 #, c-format
 msgid "could not link file \"%s\" to \"%s\": %m"
 msgstr "imposibil de creat leg�tura �ntre fi�ierul \"%s\" �i \"%s\": %m"
 
-#: access/transam/xlog.c:3048 access/transam/xlog.c:3830
-#: access/transam/xlog.c:3873 commands/user.c:282 commands/user.c:412
+#: access/transam/xlog.c:3065 access/transam/xlog.c:3847
+#: access/transam/xlog.c:3890 commands/user.c:282 commands/user.c:412
 #: postmaster/pgarch.c:596
 #, c-format
 msgid "could not rename file \"%s\" to \"%s\": %m"
 msgstr "imposbil de redenumit fi�ierul \"%s\" �n \"%s\": %m"
 
-#: access/transam/xlog.c:3109
+#: access/transam/xlog.c:3126
 msgid "invalid LC_COLLATE setting"
 msgstr "setare LC_COLLATE incorect�"
 
-#: access/transam/xlog.c:3114
+#: access/transam/xlog.c:3131
 msgid "invalid LC_CTYPE setting"
 msgstr "setare LC_CTYPE incorect�"
 
-#: access/transam/xlog.c:3133
+#: access/transam/xlog.c:3150
 msgid "sizeof(ControlFileData) is larger than BLCKSZ; fix either one"
 msgstr "sizeof(ControlFileData) este mai mare dec�t BLCKSZ; modifica�i una din ele"
 
-#: access/transam/xlog.c:3143
+#: access/transam/xlog.c:3160
 #, c-format
 msgid "could not create control file \"%s\": %m"
 msgstr "imposibil de creat fi�ierul de control \"%s\": %m"
 
-#: access/transam/xlog.c:3154 access/transam/xlog.c:3341
+#: access/transam/xlog.c:3171 access/transam/xlog.c:3358
 #, c-format
 msgid "could not write to control file: %m"
 msgstr "imposibil de scris �n fi�ierul de control: %m"
 
-#: access/transam/xlog.c:3160 access/transam/xlog.c:3347
+#: access/transam/xlog.c:3177 access/transam/xlog.c:3364
 #, c-format
 msgid "could not fsync control file: %m"
 msgstr "imposibil de executat fsync cu fi�ierul de control: %m"
 
-#: access/transam/xlog.c:3165 access/transam/xlog.c:3352
+#: access/transam/xlog.c:3182 access/transam/xlog.c:3369
 #, c-format
 msgid "could not close control file: %m"
 msgstr "imposibil de �nchis fi�ierul de control: %m"
 
-#: access/transam/xlog.c:3181 access/transam/xlog.c:3330
+#: access/transam/xlog.c:3198 access/transam/xlog.c:3347
 #, c-format
 msgid "could not open control file \"%s\": %m"
 msgstr "imposibil de deschis fi�ierul de control \"%s\": %m"
 
-#: access/transam/xlog.c:3187
+#: access/transam/xlog.c:3204
 #, c-format
 msgid "could not read from control file: %m"
 msgstr "imposibil de citit din fi�ierul de control: %m"
 
-#: access/transam/xlog.c:3199 access/transam/xlog.c:3229
-#: access/transam/xlog.c:3236 access/transam/xlog.c:3243
-#: access/transam/xlog.c:3250 access/transam/xlog.c:3257
-#: access/transam/xlog.c:3264 access/transam/xlog.c:3273
-#: access/transam/xlog.c:3280 access/transam/xlog.c:3288
+#: access/transam/xlog.c:3216 access/transam/xlog.c:3246
+#: access/transam/xlog.c:3253 access/transam/xlog.c:3260
+#: access/transam/xlog.c:3267 access/transam/xlog.c:3274
+#: access/transam/xlog.c:3281 access/transam/xlog.c:3290
+#: access/transam/xlog.c:3297 access/transam/xlog.c:3305
 #: utils/init/miscinit.c:907
 msgid "database files are incompatible with server"
 msgstr "fi�ierele bazei de date nu sunt compatibile cu serverul"
 
-#: access/transam/xlog.c:3200
+#: access/transam/xlog.c:3217
 #, c-format
 msgid ""
 "The database cluster was initialized with PG_CONTROL_VERSION %d, but the "
 "server was compiled with PG_CONTROL_VERSION %d."
-msgstr "Grupul de baze de date a fost initializat cu PG_CONTROL_VERSION %d, dar serverul a fost compilat cu PG_CONTROL_VERSION %d."
+msgstr ""
+"Grupul de baze de date a fost initializat cu PG_CONTROL_VERSION %d, dar "
+"serverul a fost compilat cu PG_CONTROL_VERSION %d."
 
-#: access/transam/xlog.c:3203 access/transam/xlog.c:3233
+#: access/transam/xlog.c:3220 access/transam/xlog.c:3250
 msgid "It looks like you need to initdb."
 msgstr "Se pare c� este necesar s� rula�i initdb."
 
-#: access/transam/xlog.c:3213
+#: access/transam/xlog.c:3230
 msgid "incorrect checksum in control file"
 msgstr "sum� de control incorect� �n fi�ierul de control"
 
-#: access/transam/xlog.c:3230
+#: access/transam/xlog.c:3247
 #, c-format
 msgid ""
 "The database cluster was initialized with CATALOG_VERSION_NO %d, but the "
 "server was compiled with CATALOG_VERSION_NO %d."
-msgstr "Grupul de baze de date a fost initializat cu CATALOG_VERSION_NO %d, dar serverul a fost compilat cu CATALOG_VERSION_NO %d."
+msgstr ""
+"Grupul de baze de date a fost initializat cu CATALOG_VERSION_NO %d, dar "
+"serverul a fost compilat cu CATALOG_VERSION_NO %d."
 
-#: access/transam/xlog.c:3237
+#: access/transam/xlog.c:3254
 #, c-format
 msgid ""
 "The database cluster was initialized with BLCKSZ %d, but the server was "
 "compiled with BLCKSZ %d."
-msgstr "Grupul de baze de date a fost initializat cu BLCKSZ %d, dar serverul a fost compilat cu BLCKSZ %d."
+msgstr ""
+"Grupul de baze de date a fost initializat cu BLCKSZ %d, dar serverul a fost "
+"compilat cu BLCKSZ %d."
 
-#: access/transam/xlog.c:3240 access/transam/xlog.c:3247
-#: access/transam/xlog.c:3254 access/transam/xlog.c:3261
-#: access/transam/xlog.c:3268 access/transam/xlog.c:3276
-#: access/transam/xlog.c:3283 access/transam/xlog.c:3292
+#: access/transam/xlog.c:3257 access/transam/xlog.c:3264
+#: access/transam/xlog.c:3271 access/transam/xlog.c:3278
+#: access/transam/xlog.c:3285 access/transam/xlog.c:3293
+#: access/transam/xlog.c:3300 access/transam/xlog.c:3309
 msgid "It looks like you need to recompile or initdb."
 msgstr "Se pare c� trebuie s� recompila�i sau s� rula�i initdb."
 
-#: access/transam/xlog.c:3244
+#: access/transam/xlog.c:3261
 #, c-format
 msgid ""
 "The database cluster was initialized with RELSEG_SIZE %d, but the server was "
 "compiled with RELSEG_SIZE %d."
-msgstr "Grupul de baze de date a fost initializat cu RELSEG_SIZE %d, dar serverul a fost compilat cu RELSEG_SIZE %d."
+msgstr ""
+"Grupul de baze de date a fost initializat cu RELSEG_SIZE %d, dar serverul a "
+"fost compilat cu RELSEG_SIZE %d."
 
-#: access/transam/xlog.c:3251
+#: access/transam/xlog.c:3268
 #, c-format
 msgid ""
 "The database cluster was initialized with XLOG_SEG_SIZE %d, but the server "
 "was compiled with XLOG_SEG_SIZE %d."
-msgstr "Grupul de baze de date a fost initializat cu XLOG_SEG_SIZE %d, dar serverul a fost compilat cu XLOG_SEG_SIZE %d."
+msgstr ""
+"Grupul de baze de date a fost initializat cu XLOG_SEG_SIZE %d, dar serverul "
+"a fost compilat cu XLOG_SEG_SIZE %d."
 
-#: access/transam/xlog.c:3258
+#: access/transam/xlog.c:3275
 #, c-format
 msgid ""
 "The database cluster was initialized with NAMEDATALEN %d, but the server was "
 "compiled with NAMEDATALEN %d."
-msgstr "Grupul de baze de date a fost initializat cu NAMEDATALEN %d, dar serverul a fost compilat cu NAMEDATALEN %d."
+msgstr ""
+"Grupul de baze de date a fost initializat cu NAMEDATALEN %d, dar serverul a "
+"fost compilat cu NAMEDATALEN %d."
 
-#: access/transam/xlog.c:3265
+#: access/transam/xlog.c:3282
 #, c-format
 msgid ""
 "The database cluster was initialized with FUNC_MAX_ARGS %d, but the server "
 "was compiled with FUNC_MAX_ARGS %d."
-msgstr "Grupul de baze de date a fost initializat cu FUNC_MAX_ARGS %d, dar serverul a fost compilat cu FUNC_MAX_ARGS %d."
+msgstr ""
+"Grupul de baze de date a fost initializat cu FUNC_MAX_ARGS %d, dar serverul "
+"a fost compilat cu FUNC_MAX_ARGS %d."
 
-#: access/transam/xlog.c:3274
+#: access/transam/xlog.c:3291
 msgid ""
 "The database cluster was initialized without HAVE_INT64_TIMESTAMP but the "
 "server was compiled with HAVE_INT64_TIMESTAMP."
 msgstr "Grupul de baze de date a fost initializat f�r� HAVE_INT64_TIMESTAMP, dar serverul a fost compilat cu HAVE_INT64_TIMESTAMP."
 
-#: access/transam/xlog.c:3281
+#: access/transam/xlog.c:3298
 msgid ""
 "The database cluster was initialized with HAVE_INT64_TIMESTAMP but the "
 "server was compiled without HAVE_INT64_TIMESTAMP."
 msgstr "Grupul de baze de date a fost initializat cu HAVE_INT64_TIMESTAMP, dar serverul a fost compilat f�r� HAVE_INT64_TIMESTAMP."
 
-#: access/transam/xlog.c:3289
+#: access/transam/xlog.c:3306
 #, c-format
 msgid ""
 "The database cluster was initialized with LOCALE_NAME_BUFLEN %d, but the "
 "server was compiled with LOCALE_NAME_BUFLEN %d."
-msgstr "Grupul de baze de date a fost initializat cu LOCALE_NAME_BUFLEN %d, dar serverul a fost compilat cu LOCALE_NAME_BUFLEN %d."
+msgstr ""
+"Grupul de baze de date a fost initializat cu LOCALE_NAME_BUFLEN %d, dar "
+"serverul a fost compilat cu LOCALE_NAME_BUFLEN %d."
 
-#: access/transam/xlog.c:3295 access/transam/xlog.c:3302
+#: access/transam/xlog.c:3312 access/transam/xlog.c:3319
 msgid "database files are incompatible with operating system"
 msgstr "fi�ierele bazei de date nu sunt compatibile cu sistemul de operare"
 
-#: access/transam/xlog.c:3296
+#: access/transam/xlog.c:3313
 #, c-format
 msgid ""
 "The database cluster was initialized with LC_COLLATE \"%s\", which is not "
 "recognized by setlocale()."
-msgstr "Grupul de baze de date a fost initializat cu LC_COLLATE \"%s\", care nu este recunoscut de setlocale()."
+msgstr ""
+"Grupul de baze de date a fost initializat cu LC_COLLATE \"%s\", care nu este "
+"recunoscut de setlocale()."
 
-#: access/transam/xlog.c:3299 access/transam/xlog.c:3306
+#: access/transam/xlog.c:3316 access/transam/xlog.c:3323
 msgid "It looks like you need to initdb or install locale support."
 msgstr "Se pare c� trebuie s� rula�i initdb sau s� instala�i suportul pentru localizare."
 
-#: access/transam/xlog.c:3303
+#: access/transam/xlog.c:3320
 #, c-format
 msgid ""
 "The database cluster was initialized with LC_CTYPE \"%s\", which is not "
 "recognized by setlocale()."
-msgstr "Grupul de baze de date a fost initializat cu LC_CTYPE \"%s\", care nu este recunoscut de setlocale()."
+msgstr ""
+"Grupul de baze de date a fost initializat cu LC_CTYPE \"%s\", care nu este "
+"recunoscut de setlocale()."
 
-#: access/transam/xlog.c:3529
+#: access/transam/xlog.c:3546
 #, c-format
 msgid "could not write bootstrap transaction log file: %m"
 msgstr "imposibil de scris fi�ierul jurnal de tranzac�ii ini�ial (bootstrap): %m"
 
-#: access/transam/xlog.c:3535
+#: access/transam/xlog.c:3552
 #, c-format
 msgid "could not fsync bootstrap transaction log file: %m"
 msgstr "imposibil de executat fsync cu fi�ierul jurnal de tranzac�ii ini�ial (bootstrap): %m"
 
-#: access/transam/xlog.c:3540
+#: access/transam/xlog.c:3557
 #, c-format
 msgid "could not close bootstrap transaction log file: %m"
 msgstr "imposibil de �nchis fi�ierul jurnal de tranzac�ii ini�ial (bootstrap): %m"
 
-#: access/transam/xlog.c:3602
+#: access/transam/xlog.c:3619
 #, c-format
 msgid "could not open recovery command file \"%s\": %m"
 msgstr "imposibil de deschis fi�ierul de comenzi de recuperare \"%s\": %m"
 
-#: access/transam/xlog.c:3607
+#: access/transam/xlog.c:3624
 msgid "starting archive recovery"
 msgstr "pornire recuperare arhiv�"
 
-#: access/transam/xlog.c:3652
+#: access/transam/xlog.c:3669
 #, c-format
 msgid "restore_command = \"%s\""
 msgstr "restore_command = \"%s\""
 
-#: access/transam/xlog.c:3666
+#: access/transam/xlog.c:3683
 #, c-format
 msgid "recovery_target_timeline is not a valid number: \"%s\""
 msgstr "recovery_target_timeline nu este un num�r corect: \"%s\""
 
-#: access/transam/xlog.c:3671
+#: access/transam/xlog.c:3688
 #, c-format
 msgid "recovery_target_timeline = %u"
 msgstr "recovery_target_timeline = %u"
 
-#: access/transam/xlog.c:3674
+#: access/transam/xlog.c:3691
 msgid "recovery_target_timeline = latest"
 msgstr "recovery_target_timeline = ultimul"
 
-#: access/transam/xlog.c:3682
+#: access/transam/xlog.c:3699
 #, c-format
 msgid "recovery_target_xid is not a valid number: \"%s\""
 msgstr "recovery_target_xid nu este un num�r corect: \"%s\""
 
-#: access/transam/xlog.c:3685
+#: access/transam/xlog.c:3702
 #, c-format
 msgid "recovery_target_xid = %u"
 msgstr "recovery_target_xid = %u"
 
-#: access/transam/xlog.c:3710
+#: access/transam/xlog.c:3727
 #, c-format
 msgid "recovery_target_time = %s"
 msgstr "recovery_target_time = %s"
 
-#: access/transam/xlog.c:3727
+#: access/transam/xlog.c:3744
 #, c-format
 msgid "recovery_target_inclusive = %s"
 msgstr "recovery_target_inclusive = %s"
 
-#: access/transam/xlog.c:3731
+#: access/transam/xlog.c:3748
 #, c-format
 msgid "unrecognized recovery parameter \"%s\""
 msgstr "parametrul de recuperare \"%s\" nerecunoscut"
 
-#: access/transam/xlog.c:3739
+#: access/transam/xlog.c:3756
 #, c-format
 msgid "syntax error in recovery command file: %s"
 msgstr "eroare de sintax� �n fi�ierul de comenzi de recuperare: %s"
 
-#: access/transam/xlog.c:3741
+#: access/transam/xlog.c:3758
 msgid "Lines should have the format parameter = 'value'."
 msgstr "Liniile trebuie s� aiba formatul parametru = 'valoare'."
 
-#: access/transam/xlog.c:3746
+#: access/transam/xlog.c:3763
 #, c-format
 msgid "recovery command file \"%s\" did not specify restore_command"
 msgstr "fi�ierul de comenzi de recuperare \"%s\" nu specific� restore_command"
 
-#: access/transam/xlog.c:3765
+#: access/transam/xlog.c:3782
 #, c-format
 msgid "recovery_target_timeline %u does not exist"
 msgstr "recovery_target_timeline %u nu exist�"
 
-#: access/transam/xlog.c:3877
+#: access/transam/xlog.c:3894
 msgid "archive recovery complete"
 msgstr "recuperare arhiv� terminat�"
 
-#: access/transam/xlog.c:3961
+#: access/transam/xlog.c:3978
 #, c-format
 msgid "recovery stopping after commit of transaction %u, time %s"
 msgstr "recuperare oprit� dup� finalizarea tranzac�iei %u, timp %s"
 
-#: access/transam/xlog.c:3965
+#: access/transam/xlog.c:3982
 #, c-format
 msgid "recovery stopping before commit of transaction %u, time %s"
 msgstr "recuperare oprit� �nainte de finalizarea tranzac�iei %u, timp %s"
 
-#: access/transam/xlog.c:3972
+#: access/transam/xlog.c:3989
 #, c-format
 msgid "recovery stopping after abort of transaction %u, time %s"
 msgstr "recuperare oprit� dup� abandonarea tranzac�iei %u, timp %s"
 
-#: access/transam/xlog.c:3976
+#: access/transam/xlog.c:3993
 #, c-format
 msgid "recovery stopping before abort of transaction %u, time %s"
 msgstr "recuperare oprit� �nainte de abandonarea tranzac�iei %u, timp %s"
 
-#: access/transam/xlog.c:4018
+#: access/transam/xlog.c:4035
 msgid "control file contains invalid data"
 msgstr "fi�ierul de control con�ine date incorecte"
 
-#: access/transam/xlog.c:4022
+#: access/transam/xlog.c:4039
 #, c-format
 msgid "database system was shut down at %s"
 msgstr "sistemul de baze de date a fost �nchis la %s"
 
-#: access/transam/xlog.c:4026
+#: access/transam/xlog.c:4043
 #, c-format
 msgid "database system shutdown was interrupted at %s"
 msgstr "�nchiderea sistemului de baze de date a fost �ntrerupt� la %s"
 
-#: access/transam/xlog.c:4030
+#: access/transam/xlog.c:4047
 #, c-format
 msgid "database system was interrupted while in recovery at %s"
 msgstr "sistemul de baze de date a fost �ntrerupt �n timpul recuper�rii la %s"
 
-#: access/transam/xlog.c:4032
+#: access/transam/xlog.c:4049
 msgid ""
 "This probably means that some data is corrupted and you will have to use the "
 "last backup for recovery."
 msgstr "Aceasta �nseamn� ca probabil unele date sunt corupte �i va trebui s� folosi�i ultima copie de rezerv� pentru recuperare."
 
-#: access/transam/xlog.c:4036
+#: access/transam/xlog.c:4053
 #, c-format
 msgid "database system was interrupted at %s"
 msgstr "sistemul de baze de date a fost �ntrerupt la %s"
 
-#: access/transam/xlog.c:4068
+#: access/transam/xlog.c:4085
 #, c-format
 msgid "requested timeline %u is not a child of database system timeline %u"
 msgstr ""
 
-#: access/transam/xlog.c:4083 access/transam/xlog.c:4105
+#: access/transam/xlog.c:4100 access/transam/xlog.c:4122
 #, c-format
 msgid "checkpoint record is at %X/%X"
 msgstr "�nregistrarea punct de control este la %X/%X"
 
-#: access/transam/xlog.c:4090
+#: access/transam/xlog.c:4107
 msgid "could not locate required checkpoint record"
 msgstr "imposibil de localizat �nregistrarea punct de control necesar�"
 
-#: access/transam/xlog.c:4091
+#: access/transam/xlog.c:4108
 #, c-format
 msgid ""
 "If you are not restoring from a backup, try removing the file \"%s/"
 "backup_label\"."
 msgstr "Dac� nu restabili�i dintr-o copie de rezerv�, �ncerca�i s� elimina�i fi�ierul \"%s/backup_label\"."
 
-#: access/transam/xlog.c:4115
+#: access/transam/xlog.c:4132
 #, c-format
 msgid "using previous checkpoint record at %X/%X"
 msgstr "folosire �nregistrare punct de control la %X/%X"
 
-#: access/transam/xlog.c:4122
+#: access/transam/xlog.c:4139
 msgid "could not locate a valid checkpoint record"
 msgstr "imposibil de localizat o �nregistrare punct de control corect�"
 
-#: access/transam/xlog.c:4131
+#: access/transam/xlog.c:4148
 #, c-format
 msgid "redo record is at %X/%X; undo record is at %X/%X; shutdown %s"
 msgstr "�nregistrarea de refacere este la %X/%X; �nregistrarea de revenire este la %X/%X; �nchidere %s"
 
-#: access/transam/xlog.c:4136
+#: access/transam/xlog.c:4153
 #, c-format
 msgid "next transaction ID: %u; next OID: %u"
 msgstr "urm�torul ID de tranzac�ie: %ul urm�torul OID: %u"
 
-#: access/transam/xlog.c:4140
+#: access/transam/xlog.c:4157
 msgid "invalid next transaction ID"
 msgstr "ID de tranzac�ie urm�tor incorect"
 
-#: access/transam/xlog.c:4157
+#: access/transam/xlog.c:4174
 msgid "invalid redo in checkpoint record"
 msgstr "refacere incorect� �n �nregistrarea punct de control"
 
-#: access/transam/xlog.c:4171
+#: access/transam/xlog.c:4188
 msgid "invalid redo/undo record in shutdown checkpoint"
 msgstr "�nregistrare de refacere/revenire incorect� �n punctul de control de �nchidere"
 
-#: access/transam/xlog.c:4189
+#: access/transam/xlog.c:4206
 msgid "automatic recovery in progress"
 msgstr "recuperare automat� �n desf�urare"
 
-#: access/transam/xlog.c:4192
+#: access/transam/xlog.c:4209
 msgid "database system was not properly shut down; automatic recovery in progress"
 msgstr "sistemul de baze de date nu a fost �nchis corect; recuperare automat� �n desf�urare"
 
-#: access/transam/xlog.c:4229
+#: access/transam/xlog.c:4246
 #, c-format
 msgid "redo starts at %X/%X"
 msgstr "refacerea �ncepe la %X/%X"
 
-#: access/transam/xlog.c:4287
+#: access/transam/xlog.c:4304
 #, c-format
 msgid "redo done at %X/%X"
 msgstr "refacerea terminat� la %X/%X"
 
-#: access/transam/xlog.c:4295
+#: access/transam/xlog.c:4312
 msgid "redo is not required"
 msgstr "refacerea nu este necesar�"
 
-#: access/transam/xlog.c:4315
+#: access/transam/xlog.c:4332
 msgid "requested recovery stop point is before end time of backup dump"
 msgstr "punctul de oprire al recuper�rii solicitat este �naintea timpului de sf�r�it al desc�rc�rii de rezerv�"
 
-#: access/transam/xlog.c:4319
+#: access/transam/xlog.c:4336
 msgid "WAL ends before end time of backup dump"
 msgstr "WAL se termin� �naintea timpului de sf�r�it al desc�rc�rii de rezerv�"
 
-#: access/transam/xlog.c:4334
+#: access/transam/xlog.c:4351
 #, c-format
 msgid "selected new timeline ID: %u"
 msgstr "noul ID timeline selectat: %u"
 
-#: access/transam/xlog.c:4416
+#: access/transam/xlog.c:4433
 #, c-format
 msgid "undo starts at %X/%X"
 msgstr "revenirea �ncepe la %X/%X"
 
-#: access/transam/xlog.c:4427
+#: access/transam/xlog.c:4444
 #, c-format
 msgid "undo done at %X/%X"
 msgstr "revenirea terminat� la %X/%X"
 
-#: access/transam/xlog.c:4432
+#: access/transam/xlog.c:4449
 msgid "undo is not required"
 msgstr "revenirea nu este necesar�"
 
-#: access/transam/xlog.c:4500
+#: access/transam/xlog.c:4517
 msgid "database system is ready"
 msgstr "sistemul de baze de date este gata"
 
-#: access/transam/xlog.c:4539
+#: access/transam/xlog.c:4556
 msgid "invalid primary checkpoint link in control file"
 msgstr "leg�tura punctului de control primar este incorect� �n fi�ierul de control"
 
-#: access/transam/xlog.c:4543
+#: access/transam/xlog.c:4560
 msgid "invalid secondary checkpoint link in control file"
 msgstr "leg�tura punctului de control secundar este incorect� �n fi�ierul de control"
 
-#: access/transam/xlog.c:4547
+#: access/transam/xlog.c:4564
 msgid "invalid checkpoint link in backup_label file"
 msgstr "leg�tura punctului de control este incorect� �n fi�ierul backup_label"
 
-#: access/transam/xlog.c:4561
+#: access/transam/xlog.c:4578
 msgid "invalid primary checkpoint record"
 msgstr "�nregistrarea punctului de control primar este incorect�"
 
-#: access/transam/xlog.c:4565
+#: access/transam/xlog.c:4582
 msgid "invalid secondary checkpoint record"
 msgstr "�nregistrarea punctului de control secundar este incorect�"
 
-#: access/transam/xlog.c:4569
+#: access/transam/xlog.c:4586
 msgid "invalid checkpoint record"
 msgstr "�nregistrarea punctului de control incorect�"
 
-#: access/transam/xlog.c:4580
+#: access/transam/xlog.c:4597
 msgid "invalid resource manager ID in primary checkpoint record"
 msgstr "ID administrator de resurse incorect �n �nregistrarea punctului de control primar"
 
-#: access/transam/xlog.c:4584
+#: access/transam/xlog.c:4601
 msgid "invalid resource manager ID in secondary checkpoint record"
 msgstr "ID administrator de resurse incorect �n �nregistrarea punctului de control secundar"
 
-#: access/transam/xlog.c:4588
+#: access/transam/xlog.c:4605
 msgid "invalid resource manager ID in checkpoint record"
 msgstr "ID administrator de resurse incorect �n �nregistrarea punctului de control"
 
-#: access/transam/xlog.c:4600
+#: access/transam/xlog.c:4617
 msgid "invalid xl_info in primary checkpoint record"
 msgstr "valoare xl_info incorect� �n �nregistrarea punctului de control primar"
 
-#: access/transam/xlog.c:4604
+#: access/transam/xlog.c:4621
 msgid "invalid xl_info in secondary checkpoint record"
 msgstr "valoare xl_info incorect� �n �nregistrarea punctului de control secundar"
 
-#: access/transam/xlog.c:4608
+#: access/transam/xlog.c:4625
 msgid "invalid xl_info in checkpoint record"
 msgstr "valoare xl_info incorect� �n �nregistrarea punctului de control"
 
-#: access/transam/xlog.c:4619
+#: access/transam/xlog.c:4636
 msgid "invalid length of primary checkpoint record"
 msgstr "lungime incorect� a �nregistr�rii punctului de control primar"
 
-#: access/transam/xlog.c:4623
+#: access/transam/xlog.c:4640
 msgid "invalid length of secondary checkpoint record"
 msgstr "lungime incorect� a �nregistr�rii punctului de control secundar"
 
-#: access/transam/xlog.c:4627
+#: access/transam/xlog.c:4644
 msgid "invalid length of checkpoint record"
 msgstr "lungime incorect� a �nregistr�rii punctului de control"
 
-#: access/transam/xlog.c:4680
+#: access/transam/xlog.c:4697
 msgid "shutting down"
 msgstr "�nchidere"
 
-#: access/transam/xlog.c:4689
+#: access/transam/xlog.c:4706
 msgid "database system is shut down"
 msgstr "sistemul de baze de date este �nchis"
 
-#: access/transam/xlog.c:4880
+#: access/transam/xlog.c:4897
 msgid "checkpoint starting"
 msgstr "pornire punct de control"
 
-#: access/transam/xlog.c:4909
+#: access/transam/xlog.c:4926
 msgid "concurrent transaction log activity while database system is shutting down"
 msgstr "activitate simultan� �n jurnalul de tranzac�ii �n timpul �nchiderii sistemului de baze de date"
 
-#: access/transam/xlog.c:4981
+#: access/transam/xlog.c:4998
 #, c-format
 msgid ""
 "checkpoint complete; %d transaction log file(s) added, %d removed, %d "
 "recycled"
 msgstr "punct de control terminat; %d fi�ier(e) jurnal de tranzac�ii ad�ugat(e), %d eliminat(e), %d reciclat(e)"
 
-#: access/transam/xlog.c:5041
+#: access/transam/xlog.c:5058
 #, c-format
 msgid "unexpected timeline ID %u (after %u) in checkpoint record"
 msgstr "ID timeline %u nea�teptat (dup� %u) �n �nregistrarea punct de control"
 
-#: access/transam/xlog.c:5064
+#: access/transam/xlog.c:5081
 #, c-format
 msgid "unexpected timeline ID %u (should be %u) in checkpoint record"
 msgstr "ID timeline %u nea�teptat (ar trebui %u) �n �nregistrarea punct de control"
 
-#: access/transam/xlog.c:5185 access/transam/xlog.c:5217
+#: access/transam/xlog.c:5202 access/transam/xlog.c:5234
 #, c-format
 msgid "could not fsync log file %u, segment %u: %m"
 msgstr "imposibil de executat fsync cu fi�ierul jurnal %u, segment %u: %m"
 
-#: access/transam/xlog.c:5225
+#: access/transam/xlog.c:5242
 #, c-format
 msgid "could not fdatasync log file %u, segment %u: %m"
 msgstr "imposibil de executat fdatasync cu fi�ierul jurnal %u, segment %u: %m"
 
-#: access/transam/xlog.c:5268 access/transam/xlog.c:5395
+#: access/transam/xlog.c:5285 access/transam/xlog.c:5412
 msgid "must be superuser to run a backup"
 msgstr "trebuie s� fi�i utilizator privilegiat pentru a face o copie de rezerv�"
 
-#: access/transam/xlog.c:5273
+#: access/transam/xlog.c:5290
 msgid "WAL archiving is not active"
 msgstr "arhivarea WAL nu este activ�"
 
-#: access/transam/xlog.c:5274
+#: access/transam/xlog.c:5291
 msgid "archive_command must be defined before online backups can be made safely."
 msgstr "trebuie definit� archive_command �nainte de a putea face interactiv copii de rezerv� �n siguran��."
 
-#: access/transam/xlog.c:5329
+#: access/transam/xlog.c:5346
 msgid "a backup is already in progress"
 msgstr "o copie de rezerv� este �n desf�urare"
 
-#: access/transam/xlog.c:5330
+#: access/transam/xlog.c:5347
 #, c-format
 msgid ""
 "If you're sure there is no backup in progress, remove file \"%s\" and try "
 "again."
 msgstr "Dac� sunte�i sigur c� nu exist� nici o copie de rezerv� �n desf�urare, elimina�i fi�ierul \"%s\" �i �ncerca�i din nou."
 
-#: access/transam/xlog.c:5351 access/transam/xlog.c:5471
+#: access/transam/xlog.c:5368 access/transam/xlog.c:5488
 #, c-format
 msgid "could not write file \"%s\": %m"
 msgstr "imposibil de scris fi�ierul \"%s\": %m"
 
-#: access/transam/xlog.c:5433
+#: access/transam/xlog.c:5450
 msgid "a backup is not in progress"
 msgstr "nu este nici o copie de rezerv� este �n desf�urare"
 
-#: access/transam/xlog.c:5446 access/transam/xlog.c:5567
-#: access/transam/xlog.c:5573 access/transam/xlog.c:5604
-#: access/transam/xlog.c:5610
+#: access/transam/xlog.c:5463 access/transam/xlog.c:5584
+#: access/transam/xlog.c:5590 access/transam/xlog.c:5621
+#: access/transam/xlog.c:5627
 #, c-format
 msgid "invalid data in file \"%s\""
 msgstr "date incorecte �n fi�ierul \"%s\""
@@ -1002,12 +1021,11 @@ msgid "could not write to file \"%s\" at offset %u: %m"
 msgstr "imposibil de scris �n fi�ierul \"%s\" la decalarea %u: %m"
 
 #: access/transam/slru.c:862
-#, c-format
-#, fuzzy
+#, fuzzy, c-format
 msgid "could not truncate directory \"%s\": apparent wraparound"
 msgstr "imposibil de trunchiat directorul \"%s\": apparent wraparound"
 
-#: access/transam/slru.c:930 commands/tablespace.c:525
+#: ../port/copydir.c:55 access/transam/slru.c:930 commands/tablespace.c:525
 #: commands/tablespace.c:692 utils/adt/misc.c:174
 #, c-format
 msgid "could not open directory \"%s\": %m"
@@ -1070,12 +1088,12 @@ msgstr "nu exist
 msgid "cannot have more than 2^32-1 subtransactions in a transaction"
 msgstr "nu pot exista mai mult de 2^32-1 subtranzac�ii �ntr-o tranzac�ie"
 
-#: bootstrap/bootstrap.c:299 postmaster/postmaster.c:549 tcop/postgres.c:2521
+#: bootstrap/bootstrap.c:299 postmaster/postmaster.c:549 tcop/postgres.c:2533
 #, c-format
 msgid "--%s requires a value"
 msgstr "--%s necesit� o valoare"
 
-#: bootstrap/bootstrap.c:304 postmaster/postmaster.c:554 tcop/postgres.c:2526
+#: bootstrap/bootstrap.c:304 postmaster/postmaster.c:554 tcop/postgres.c:2538
 #, c-format
 msgid "-c %s requires a value"
 msgstr "-c %s necesit� o valoare"
@@ -1318,8 +1336,7 @@ msgid "language \"%s\" does not exist"
 msgstr "limbajul \"%s\" nu exist�"
 
 #: catalog/aclchk.c:764
-#, c-format
-#, fuzzy
+#, fuzzy, c-format
 msgid "language \"%s\" is not trusted"
 msgstr "limbajul \"%s\" nu este sigur"
 
@@ -1588,8 +1605,7 @@ msgid "column name \"%s\" is duplicated"
 msgstr "numele coloanei \"%s\" este duplicat"
 
 #: catalog/heap.c:452
-#, c-format
-#, fuzzy
+#, fuzzy, c-format
 msgid "column \"%s\" has type \"unknown\""
 msgstr "coloana \"%s\"are tipul \"unknown\""
 
@@ -1602,83 +1618,85 @@ msgstr "Se creeaz
 msgid "column \"%s\" has pseudo-type %s"
 msgstr "coloana \"%s\" are pseudo-tipul %s"
 
-#: catalog/heap.c:747 catalog/index.c:527 commands/tablecmds.c:1501
+#: catalog/heap.c:732 catalog/index.c:514 commands/tablecmds.c:1501
 #, c-format
 msgid "relation \"%s\" already exists"
 msgstr "rela�ia %s exist� deja"
 
-#: catalog/heap.c:1601
+#: catalog/heap.c:1586
 #, c-format
 msgid "only table \"%s\" can be referenced in check constraint"
 msgstr "doar tabela \"%s\"poate fi referit� �n verificarea de restric�ie"
 
-#: catalog/heap.c:1610 commands/typecmds.c:1872
+#: catalog/heap.c:1595 commands/typecmds.c:1872
 msgid "cannot use subquery in check constraint"
-msgstr "sub-interogarea nu poate fi folosit� �n verificarea de restric�ie"
+msgstr "imposibil de utilizat o sub-interogare �n verificarea de restric�ie"
 
-#: catalog/heap.c:1614
+#: catalog/heap.c:1599
 msgid "cannot use aggregate function in check constraint"
-msgstr "func�ia de agregare nu poate fi folosit� �n verificarea de restric�ie"
+msgstr "imposibil de utilizat o func�ie de agregare �n verificarea de restric�ie"
 
-#: catalog/heap.c:1631 commands/tablecmds.c:3722
+#: catalog/heap.c:1616 commands/tablecmds.c:3722
 #, c-format
 msgid "constraint \"%s\" for relation \"%s\" already exists"
 msgstr "restric�ia \"%s\" pentru rela�ia \"%s\" exist� deja"
 
-#: catalog/heap.c:1640
+#: catalog/heap.c:1625
 #, c-format
 msgid "check constraint \"%s\" already exists"
 msgstr "verificarea de restric�ie \"%s\" exist� deja"
 
-#: catalog/heap.c:1789
+#: catalog/heap.c:1774
 msgid "cannot use column references in default expression"
 msgstr "imposibil de utilizat referin�e de coloane �n expresia implicit�"
 
-#: catalog/heap.c:1797
+#: catalog/heap.c:1782
 msgid "default expression must not return a set"
 msgstr "expresia implicit� nu poate returna un set"
 
-#: catalog/heap.c:1805
+#: catalog/heap.c:1790
 msgid "cannot use subquery in default expression"
 msgstr "imposibil de utilizat o sub-interogare �n expresia implicit�"
 
-#: catalog/heap.c:1809
+#: catalog/heap.c:1794
 msgid "cannot use aggregate function in default expression"
 msgstr "imposibil de utilizat o func�ie de agregare �n expresia implicit�"
 
-#: catalog/heap.c:1827 rewrite/rewriteHandler.c:647
+#: catalog/heap.c:1812 rewrite/rewriteHandler.c:647
 #, c-format
 msgid "column \"%s\" is of type %s but default expression is of type %s"
 msgstr "coloana \"%s\" este de tipul %s, iar expresia implicit� este de tipul %s"
 
-#: catalog/heap.c:1832 parser/analyze.c:2701 parser/parse_node.c:247
+#: catalog/heap.c:1817 parser/analyze.c:2701 parser/parse_node.c:247
 #: parser/parse_target.c:362 parser/parse_target.c:572
 #: parser/parse_target.c:581 rewrite/rewriteHandler.c:652
 msgid "You will need to rewrite or cast the expression."
 msgstr "Trebuie s� rescrie�i sau sa converti�i expresia."
 
-#: catalog/heap.c:2093
+#: catalog/heap.c:2078
 msgid "cannot truncate a table referenced in a foreign key constraint"
 msgstr ""
 
-#: catalog/heap.c:2094
+#: catalog/heap.c:2079
 #, c-format
 msgid "Table \"%s\" references \"%s\" via foreign key constraint \"%s\"."
 msgstr "Tabela \"%s\" face referin�� la \"%s\" print restric�ia de cheie str�in� \"%s\"."
 
-#: catalog/index.c:508
+#: catalog/index.c:495
 msgid "user-defined indexes on system catalog tables are not supported"
-msgstr "indexurile definite de utilizator pentru tabelele catalog de sistem nu sunt suportate"
+msgstr ""
+"indexurile definite de utilizator pentru tabelele catalog de sistem nu sunt "
+"suportate"
 
-#: catalog/index.c:522
+#: catalog/index.c:509
 msgid "shared indexes cannot be created after initdb"
 msgstr "indexurile partajate nu pot fi create dup� initdb"
 
-#: catalog/index.c:1679
+#: catalog/index.c:1638
 #, c-format
 #, fuzzy
 msgid "shared index \"%s\" can only be reindexed in stand-alone mode"
-msgstr "indexul partajat \"%s\" poate fi re-indexat numai in modul independent (stand-alone)"
+msgstr "indexul partajat \"%s\" poate fi re-indexat numai �n modul independent (stand-alone)"
 
 #: catalog/namespace.c:173 catalog/namespace.c:228
 #, c-format
@@ -1703,15 +1721,14 @@ msgstr "tabelele temporare nu pot specifica un nume de schem
 msgid "no schema has been selected to create in"
 msgstr "nu a fost specificat� nici o schem� pentru creare"
 
-#: catalog/namespace.c:1195 parser/parse_expr.c:1157 parser/parse_target.c:727
+#: catalog/namespace.c:1195 parser/parse_expr.c:1158 parser/parse_target.c:727
 #, c-format
 msgid "cross-database references are not implemented: %s"
 msgstr "referin�ele �ntre baze de date nu sunt implementate: %s"
 
-#: catalog/namespace.c:1201 parser/parse_expr.c:1183 parser/parse_target.c:736
-#: gram.y:2515 gram.y:7425
-#, c-format
-#, fuzzy
+#: catalog/namespace.c:1201 gram.y:2515 gram.y:7425 parser/parse_expr.c:1184
+#: parser/parse_target.c:736
+#, fuzzy, c-format
 msgid "improper qualified name (too many dotted names): %s"
 msgstr "nume incorect determinat (prea multe puncte): %s"
 
@@ -1850,14 +1867,12 @@ msgid "SQL function \"%s\""
 msgstr "func�ia SQL \"%s\""
 
 #: catalog/pg_type.c:198
-#, c-format
-#, fuzzy
+#, fuzzy, c-format
 msgid "invalid type internal size %d"
 msgstr "dimensiune intern� a tipului incorect� %d"
 
 #: catalog/pg_type.c:204
-#, c-format
-#, fuzzy
+#, fuzzy, c-format
 msgid "internal size %d is invalid for passed-by-value type"
 msgstr "dimensiunea intern� %d este incorect� pentru tipul transmis prin valoare"
 
@@ -1924,7 +1939,9 @@ msgstr "numai utilizatorul privilegiat poate schimba proprietarul"
 #: commands/analyze.c:153
 #, c-format
 msgid "skipping \"%s\" --- only table or database owner can analyze it"
-msgstr "ignorare \"%s\" --- numai proprietarul tabelei sau al bazei de date o poate analiza"
+msgstr ""
+"ignorare \"%s\" --- numai proprietarul tabelei sau al bazei de date o poate "
+"analiza"
 
 #: commands/analyze.c:168
 #, c-format
@@ -1938,11 +1955,10 @@ msgstr "analizare \"%s.%s\""
 
 #: commands/analyze.c:912
 #, c-format
-#, fuzzy
 msgid ""
 "\"%s\": scanned %d of %u pages, containing %.0f live rows and %.0f dead "
 "rows; %d rows in sample, %.0f estimated total rows"
-msgstr "\"%s\": %d din %u pagini scanate, con�in�nd %.0f r�nduri 'vii' �i %.0f r�nduri 'moarte'; %d r�nduri �n e�antion, %.0f r�nduri estimate �n total"
+msgstr "\"%s\": %d din %u pagini scanate, con�in�nd %.0f r�nduri 'vii' �i %.0f r�nduri 'moarte'; %d r�nduri �n e�antion, %.0f r�nduri estimate �n total"
 
 #: commands/cluster.c:133
 #, c-format
@@ -2128,9 +2144,9 @@ msgstr "conversia de la tipul %s la tipul %s nu exist
 msgid "must be owner of type %s or type %s"
 msgstr "trebuie s� fi�i proprietarul tipului %s sau al tipului %s"
 
-#: commands/copy.c:720 commands/copy.c:728 commands/copy.c:736
-#: commands/copy.c:744 commands/copy.c:752 commands/copy.c:760
-#: commands/copy.c:768 commands/copy.c:776 commands/copy.c:784
+#: commands/copy.c:721 commands/copy.c:729 commands/copy.c:737
+#: commands/copy.c:745 commands/copy.c:753 commands/copy.c:761
+#: commands/copy.c:769 commands/copy.c:777 commands/copy.c:785
 #: commands/dbcommands.c:108 commands/dbcommands.c:116
 #: commands/dbcommands.c:124 commands/dbcommands.c:132
 #: commands/functioncmds.c:228 commands/functioncmds.c:236
@@ -2258,275 +2274,274 @@ msgstr "permisiune refuzat
 msgid "could not remove database directory \"%s\""
 msgstr "imposibil de eliminat directorul bazei de date \"%s\""
 
-#: commands/copy.c:204 commands/copy.c:216 commands/copy.c:249
-#: commands/copy.c:259
+#: commands/copy.c:205 commands/copy.c:217 commands/copy.c:250
+#: commands/copy.c:260
 msgid "COPY BINARY is not supported to stdout or from stdin"
 msgstr "COPY BINARY nu este suportat c�tre ie�irea standard (stdout) sau din intrarea standard (stdin)"
 
-#: commands/copy.c:312
+#: commands/copy.c:313
 #, c-format
 msgid "could not write to COPY file: %m"
 msgstr "imposibil de scris �n fi�ierul COPY: %m"
 
-#: commands/copy.c:320
+#: commands/copy.c:321
 msgid "connection lost during COPY to stdout"
 msgstr "conexiunea a fost pierdut� �n timpul copierii c�tre ie�irea standard (stdout)"
 
-#: commands/copy.c:403 commands/copy.c:421 commands/copy.c:425
-#: commands/copy.c:486 commands/copy.c:535 tcop/fastpath.c:291
+#: commands/copy.c:404 commands/copy.c:422 commands/copy.c:426
+#: commands/copy.c:487 commands/copy.c:536 tcop/fastpath.c:291
 #: tcop/postgres.c:287 tcop/postgres.c:310
 msgid "unexpected EOF on client connection"
 msgstr "sf�r�it de fi�ier (EOF) nea�teptat �n conexiunea client"
 
-#: commands/copy.c:437
+#: commands/copy.c:438
 #, c-format
 msgid "COPY from stdin failed: %s"
 msgstr "copierea din intrarea standard (stdin) a e�uat: %s"
 
-#: commands/copy.c:453
+#: commands/copy.c:454
 #, c-format
 msgid "unexpected message type 0x%02X during COPY from stdin"
 msgstr "tip de mesaj nea�teptat 0x%02X �n timpul copierii din intrarea standard"
 
-#: commands/copy.c:795
+#: commands/copy.c:796
 msgid "cannot specify DELIMITER in BINARY mode"
 msgstr "DELIMITER nu poate fi specificat �n modul BINARY"
 
-#: commands/copy.c:800
+#: commands/copy.c:801
 msgid "cannot specify CSV in BINARY mode"
 msgstr "CSV nu poate fi specificat �n modul BINARY"
 
-#: commands/copy.c:805
+#: commands/copy.c:806
 msgid "cannot specify NULL in BINARY mode"
 msgstr "NULL nu poate fi specificat �n modul BINARY"
 
-#: commands/copy.c:828
+#: commands/copy.c:829
 msgid "COPY delimiter must be a single character"
 msgstr "delimitatorul pentru copiere trebuie s� fie un singur caracter"
 
-#: commands/copy.c:836
+#: commands/copy.c:837
 msgid "COPY quote available only in CSV mode"
 msgstr ""
 
-#: commands/copy.c:841
+#: commands/copy.c:842
 msgid "COPY quote must be a single character"
 msgstr ""
 
-#: commands/copy.c:849
+#: commands/copy.c:850
 msgid "COPY escape available only in CSV mode"
 msgstr ""
 
-#: commands/copy.c:854
+#: commands/copy.c:855
 msgid "COPY escape must be a single character"
 msgstr ""
 
-#: commands/copy.c:862
+#: commands/copy.c:863
 msgid "COPY force quote available only in CSV mode"
 msgstr ""
 
-#: commands/copy.c:866
+#: commands/copy.c:867
 msgid "COPY force quote only available using COPY TO"
 msgstr ""
 
-#: commands/copy.c:874
+#: commands/copy.c:875
 msgid "COPY force not null available only in CSV mode"
 msgstr ""
 
-#: commands/copy.c:878
+#: commands/copy.c:879
 msgid "COPY force not null only available using COPY FROM"
 msgstr ""
 
-#: commands/copy.c:886
+#: commands/copy.c:887
 msgid "COPY delimiter must not appear in the NULL specification"
 msgstr ""
 
-#: commands/copy.c:894
+#: commands/copy.c:895
 msgid "CSV quote character must not appear in the NULL specification"
 msgstr ""
 
-#: commands/copy.c:905 executor/execMain.c:443 tcop/utility.c:323
+#: commands/copy.c:906 executor/execMain.c:443 tcop/utility.c:323
 msgid "transaction is read-only"
 msgstr "tranzac�ia este numai pentru citire"
 
-#: commands/copy.c:916
+#: commands/copy.c:917
 msgid "must be superuser to COPY to or from a file"
 msgstr "trebuie s� fi�i utilizator privilegiat pentru a copia �n sau dintr-un fi�ier"
 
-#: commands/copy.c:917
+#: commands/copy.c:918
 msgid ""
 "Anyone can COPY to stdout or from stdin. psql's \\copy command also works "
 "for anyone."
 msgstr "Oricine poate copia la ie�irea standard sau din intrarea standard. De asemenea, comanda \\copy a psql poate fi folosit� de oricine."
 
-#: commands/copy.c:926
+#: commands/copy.c:927
 #, c-format
 msgid "table \"%s\" does not have OIDs"
 msgstr "tabela \"%s\" nu are OID-uri"
 
-#: commands/copy.c:952
+#: commands/copy.c:953
 #, c-format
 msgid "FORCE QUOTE column \"%s\" not referenced by COPY"
 msgstr "coloana FORCE QUOTE \"%s\" nu este referit� de COPY"
 
-#: commands/copy.c:975
+#: commands/copy.c:976
 #, c-format
 msgid "FORCE NOT NULL column \"%s\" not referenced by COPY"
 msgstr "coloana FORCE NOT NULL \"%s\" nu este referit� de COPY"
 
-#: commands/copy.c:1002
+#: commands/copy.c:1003
 #, c-format
 msgid "cannot copy to view \"%s\""
 msgstr "imposibil de copiat �n vizualizarea \"%s\""
 
-#: commands/copy.c:1007
+#: commands/copy.c:1008
 #, c-format
 msgid "cannot copy to sequence \"%s\""
 msgstr "imposibil de copiat �n secven�a \"%s\""
 
-#: commands/copy.c:1012
-#, c-format
-#, fuzzy
+#: commands/copy.c:1013
+#, fuzzy, c-format
 msgid "cannot copy to non-table relation \"%s\""
 msgstr "imposibil de copiat �n rela�ia non-tabel� \"%s\""
 
-#: commands/copy.c:1031
+#: commands/copy.c:1032
 #, c-format
 msgid "could not open file \"%s\" for reading: %m"
 msgstr "imposibil de deschis fi�ierul \"%s\" pentru citire: %m"
 
-#: commands/copy.c:1040 commands/copy.c:1103
+#: commands/copy.c:1041 commands/copy.c:1104
 #, c-format
 msgid "\"%s\" is a directory"
 msgstr "\"%s\" este un director"
 
-#: commands/copy.c:1053
+#: commands/copy.c:1054
 #, c-format
 msgid "cannot copy from view \"%s\""
 msgstr "imposibil de copiat din vizualizarea \"%s\""
 
-#: commands/copy.c:1058
+#: commands/copy.c:1059
 #, c-format
 msgid "cannot copy from sequence \"%s\""
 msgstr "imposibil de copiat din secven�a \"%s\""
 
-#: commands/copy.c:1063
+#: commands/copy.c:1064
 #, c-format
 msgid "cannot copy from non-table relation \"%s\""
 msgstr "imposibil de copiat din rela�ia non-tabel� \"%s\""
 
-#: commands/copy.c:1085
+#: commands/copy.c:1086
 msgid "relative path not allowed for COPY to file"
 msgstr "c�ile relative nu sunt permise pentru copierea �n fi�ier"
 
-#: commands/copy.c:1094
+#: commands/copy.c:1095
 #, c-format
 msgid "could not open file \"%s\" for writing: %m"
 msgstr "imposibil de deschis fi�ierul \"%s\" pentru scriere: %m"
 
-#: commands/copy.c:1386
+#: commands/copy.c:1388
 #, c-format
 msgid "COPY %s, line %d, column %s"
 msgstr "COPY %s, linia %d, coloana %s"
 
-#: commands/copy.c:1389 commands/copy.c:1422
+#: commands/copy.c:1391 commands/copy.c:1424
 #, c-format
 msgid "COPY %s, line %d"
 msgstr "COPY %s, linia %d"
 
-#: commands/copy.c:1397
+#: commands/copy.c:1399
 #, c-format
 msgid "COPY %s, line %d, column %s: \"%s\""
 msgstr "COPY %s, linia %d, coloana %s: \"%s\""
 
-#: commands/copy.c:1408
+#: commands/copy.c:1410
 #, c-format
 msgid "COPY %s, line %d: \"%s\""
 msgstr "COPY %s, linia %d: \"%s\""
 
-#: commands/copy.c:1634
+#: commands/copy.c:1636
 msgid "COPY file signature not recognized"
 msgstr "semn�tura fi�ierului pentru copiere nu este recunoscut�"
 
-#: commands/copy.c:1640
+#: commands/copy.c:1642
 msgid "invalid COPY file header (missing flags)"
 msgstr "antet de fi�ier pentru copiere incorect (lipsesc marcatori)"
 
-#: commands/copy.c:1646
+#: commands/copy.c:1648
 #, fuzzy
 msgid "unrecognized critical flags in COPY file header"
 msgstr "marcatori critici nerecunoscu�i �n antetul fi�ierului pentru copiere"
 
-#: commands/copy.c:1652
+#: commands/copy.c:1654
 msgid "invalid COPY file header (missing length)"
 msgstr "antet de fi�ier pentru copiere incorect (lipse�te lungimea)"
 
-#: commands/copy.c:1660
+#: commands/copy.c:1662
 msgid "invalid COPY file header (wrong length)"
 msgstr "antet de fi�ier pentru copiere incorect (lungime gre�it�)"
 
-#: commands/copy.c:1739
+#: commands/copy.c:1741
 msgid "null OID in COPY data"
 msgstr "OID nul �n datele pentru copiere"
 
-#: commands/copy.c:1748 commands/copy.c:1845
+#: commands/copy.c:1750 commands/copy.c:1847
 msgid "invalid OID in COPY data"
 msgstr "OID incorect �n datele pentru copiere"
 
-#: commands/copy.c:1768
+#: commands/copy.c:1770
 #, c-format
 msgid "missing data for column \"%s\""
 msgstr "lipsesc datele pentru coloana \"%s\""
 
-#: commands/copy.c:1778
+#: commands/copy.c:1780
 msgid "unterminated CSV quoted field"
 msgstr ""
 
-#: commands/copy.c:1813
+#: commands/copy.c:1815
 msgid "extra data after last expected column"
 msgstr "date suplimentare dup� ultima coloan� a�teptat�"
 
-#: commands/copy.c:1831
+#: commands/copy.c:1833
 #, c-format
 msgid "row field count is %d, expected %d"
 msgstr "num�rul de c�mpuri pe r�nd este %d, a�teptat %d"
 
-#: commands/copy.c:2053 commands/copy.c:2071
+#: commands/copy.c:2055 commands/copy.c:2073
 msgid "literal carriage return found in data"
 msgstr "caracter 'retur de car' literal g�sit �n date"
 
-#: commands/copy.c:2054 commands/copy.c:2072
+#: commands/copy.c:2056 commands/copy.c:2074
 msgid "Use \"\\r\" to represent carriage return."
 msgstr "Folosi�i \"\\r\" pentru a reprezenta returul de car."
 
-#: commands/copy.c:2089
+#: commands/copy.c:2091
 msgid "literal newline found in data"
 msgstr "caracter 'linie nou�' literal g�sit �n date"
 
-#: commands/copy.c:2090
+#: commands/copy.c:2092
 msgid "Use \"\\n\" to represent newline."
 msgstr "Folosi�i \"\\n\" pentru a reprezenta linia nou�."
 
-#: commands/copy.c:2110 commands/copy.c:2126
+#: commands/copy.c:2112 commands/copy.c:2128
 msgid "end-of-copy marker does not match previous newline style"
 msgstr ""
 
-#: commands/copy.c:2114 commands/copy.c:2120
+#: commands/copy.c:2116 commands/copy.c:2122
 msgid "end-of-copy marker corrupt"
 msgstr ""
 
-#: commands/copy.c:2485 commands/copy.c:2507
+#: commands/copy.c:2487 commands/copy.c:2509
 msgid "unexpected EOF in COPY data"
 msgstr "sf�r�it de fi�ier (EOF) nea�teptat �n datele pentru copiere"
 
-#: commands/copy.c:2494
+#: commands/copy.c:2496
 msgid "invalid field size"
 msgstr "dimensiunea c�mpului incorect�"
 
-#: commands/copy.c:2521
+#: commands/copy.c:2523
 msgid "incorrect binary data format"
 msgstr "format de date binare incorect"
 
-#: commands/copy.c:2707 parser/parse_target.c:650 parser/parse_target.c:660
+#: commands/copy.c:2728 parser/parse_target.c:650 parser/parse_target.c:660
 #, c-format
 msgid "column \"%s\" specified more than once"
 msgstr "coloana \"%s\" este specificat� de mai multe ori"
@@ -2567,52 +2582,52 @@ msgstr "tipul %s nu exist
 
 #: commands/functioncmds.c:186
 msgid "functions cannot accept set arguments"
-msgstr ""
+msgstr "func�iile nu pot accepta argumente de tip set"
 
 #: commands/functioncmds.c:273
 msgid "no function body specified"
-msgstr ""
+msgstr "nu a fost specificat un corp al func�iei"
 
 #: commands/functioncmds.c:280
 msgid "no language specified"
-msgstr ""
+msgstr "nici un limbaj specificat"
 
 #: commands/functioncmds.c:342
 #, c-format
 msgid "unrecognized function attribute \"%s\" ignored"
-msgstr ""
+msgstr "atributul nerecunoscut \"%s\" al func�iei a fost ignorat"
 
 #: commands/functioncmds.c:386
 #, c-format
 msgid "only one AS item needed for language \"%s\""
-msgstr ""
+msgstr "doar un element AS este necesar pentru limbajul \"%s\""
 
 #: commands/functioncmds.c:458
 msgid "You need to use \"createlang\" to load the language into the database."
-msgstr ""
+msgstr "Trebuie s� folosi�i \"createlang\" pentru a �nc�rca limbajul �n baza de date."
 
 #: commands/functioncmds.c:578 commands/functioncmds.c:684
 #: commands/functioncmds.c:751
 #, c-format
 msgid "\"%s\" is an aggregate function"
-msgstr ""
+msgstr "\"%s\" este o func�ie de agregare"
 
 #: commands/functioncmds.c:580
 msgid "Use DROP AGGREGATE to drop aggregate functions."
-msgstr ""
+msgstr "Folosi�i DROP AGGREGATE pentru a �terge func�iile de agregare."
 
 #: commands/functioncmds.c:587
 #, c-format
 msgid "removing built-in function \"%s\""
-msgstr ""
+msgstr "eliminare func�ie intern� \"%s\""
 
 #: commands/functioncmds.c:686
 msgid "Use ALTER AGGREGATE to rename aggregate functions."
-msgstr ""
+msgstr "Folosi�i ALTER AGGREGATE pentru a redenumi func�iile de agregare."
 
 #: commands/functioncmds.c:753
 msgid "Use ALTER AGGREGATE to change owner of aggregate functions."
-msgstr ""
+msgstr "Folosi�i ALTER AGGREGATE pentru a schimba proprietarul func�iilor de agregare."
 
 #: commands/functioncmds.c:922
 #, c-format
@@ -2627,363 +2642,365 @@ msgstr ""
 #: commands/functioncmds.c:934
 #, c-format
 msgid "source data type %s is a pseudo-type"
-msgstr ""
+msgstr "tipul de date surs� %s este un pseudo-tip"
 
 #: commands/functioncmds.c:940
 #, c-format
 msgid "target data type %s is a pseudo-type"
-msgstr ""
+msgstr "tipul de date destina�ie %s este un pseudo-tip"
 
 #: commands/functioncmds.c:971
 msgid "cast function must take one to three arguments"
-msgstr ""
+msgstr "func�ia pentru conversia de tip trebuie s� aib� �ntre 1 �i 3 argumente"
 
 #: commands/functioncmds.c:975
 msgid "argument of cast function must match source data type"
-msgstr ""
+msgstr "argumentul func�iei de conversie de tip trebuie s� corespund� tipului de date surs�"
 
 #: commands/functioncmds.c:979
 msgid "second argument of cast function must be type integer"
-msgstr ""
+msgstr "al doilea argument al func�iei de conversie de tip trebuie s� fie de tip �ntreg"
 
 #: commands/functioncmds.c:983
 msgid "third argument of cast function must be type boolean"
-msgstr ""
+msgstr "al treilea argument al func�iei de conversie de tip trebuie s� fie de tip boolean"
 
 #: commands/functioncmds.c:987
 msgid "return data type of cast function must match target data type"
-msgstr ""
+msgstr "tipul de date returnat de func�ia de conversie de tip trebuie s� corespund� tipului de date destina�ie"
 
 #: commands/functioncmds.c:998
 msgid "cast function must not be volatile"
-msgstr ""
+msgstr "func�ia de conversie de tip nu poate fi volatil�"
 
 #: commands/functioncmds.c:1003
 msgid "cast function must not be an aggregate function"
-msgstr ""
+msgstr "func�ia de conversie de tip nu poate fi func�ie de agregare"
 
 #: commands/functioncmds.c:1007
 msgid "cast function must not return a set"
-msgstr ""
+msgstr "func�ia de conversie de tip nu poate returna un set"
 
 #: commands/functioncmds.c:1031
 msgid "must be superuser to create a cast WITHOUT FUNCTION"
-msgstr ""
+msgstr "numai utilizatorul privilegiat poate crea o conversie de tip f�r� func�ie (WITHOUT FUNCTION)"
 
 #: commands/functioncmds.c:1046
 msgid "source and target data types are not physically compatible"
-msgstr ""
+msgstr "tipurile de date surs� �i destina�ie sunt fizic incompatibile"
 
 #: commands/functioncmds.c:1056
 msgid "source data type and target data type are the same"
-msgstr ""
+msgstr "tipurile de date surs� �i destina�ie sunt identice"
 
 #: commands/functioncmds.c:1090
 #, c-format
 msgid "cast from type %s to type %s already exists"
-msgstr ""
+msgstr "conversia de la tipul %s la tipul %s exist� deja"
 
 #: commands/define.c:66 commands/define.c:183 commands/define.c:215
 #: commands/define.c:249
 #, c-format
 msgid "%s requires a parameter"
-msgstr ""
+msgstr "%s necesit� un parametru"
 
 #: commands/define.c:105 commands/define.c:116 commands/define.c:150
 #: commands/define.c:168
 #, c-format
 msgid "%s requires a numeric value"
-msgstr ""
+msgstr "%s necesit� o valoare numeric�"
 
 #: commands/define.c:136
 #, c-format
 msgid "%s does not take a parameter"
-msgstr ""
+msgstr "%s nu accept� parametri"
 
 #: commands/define.c:197
 #, c-format
 msgid "argument of %s must be a name"
-msgstr ""
+msgstr "argumentul pentru %s trebuie s� fie un nume"
 
 #: commands/define.c:233
 #, c-format
 msgid "argument of %s must be a type name"
-msgstr ""
+msgstr "argumentul pentru %s trebuie s� fie un nume de tip"
 
 #: commands/define.c:258
 #, c-format
 msgid "%s requires an integer value"
-msgstr ""
+msgstr "%s necesit� o valoare de tip �ntreg"
 
 #: commands/define.c:279
 #, c-format
 msgid "invalid argument for %s: \"%s\""
-msgstr ""
+msgstr "argument incorect pentru %s: \"%s\""
 
 #: commands/opclasscmds.c:129
 msgid "must be superuser to create an operator class"
-msgstr ""
+msgstr "numai utilizatorul privilegiat poate crea o clas� de operatori"
 
 #: commands/opclasscmds.c:166
 #, c-format
 msgid "invalid operator number %d, must be between 1 and %d"
-msgstr ""
+msgstr "num�r de operator %d incorect, valoarea trebuie s� fie cuprins� �ntre 1 �i %d"
 
 #: commands/opclasscmds.c:204
 #, c-format
 msgid "invalid procedure number %d, must be between 1 and %d"
-msgstr ""
+msgstr "num�r de procedur� %d incorect, valoarea trebuie s� fie cuprins� �ntre 1 �i %d"
 
 #: commands/opclasscmds.c:226
 msgid "storage type specified more than once"
-msgstr ""
+msgstr "tipul de stocare este specificat de mai multe ori"
 
 #: commands/opclasscmds.c:253
 #, c-format
 msgid "storage type may not be different from data type for access method \"%s\""
-msgstr ""
+msgstr "tipul de stocare nu poate fi diferit de tipul de dat� pentru metoda de acces \"%s\""
 
 #: commands/opclasscmds.c:271
 #, c-format
 msgid "operator class \"%s\" for access method \"%s\" already exists"
-msgstr ""
+msgstr "clasa de operatori \"%s\" pentru metoda de acces \"%s\" exist� deja"
 
 #: commands/opclasscmds.c:300
 #, c-format
 msgid "could not make operator class \"%s\" be default for type %s"
-msgstr ""
+msgstr "imposibil de f�cut clasa de operatori \"%s\" implicit� pentru tipul %s"
 
 #: commands/opclasscmds.c:303
 #, c-format
 msgid "Operator class \"%s\" already is the default."
-msgstr ""
+msgstr "Clasa de operatori \"%s\" este deja implicit�."
 
 #: commands/opclasscmds.c:430
 msgid "btree operators must be binary"
-msgstr ""
+msgstr "operatorii btree trebuie s� fie binari"
 
 #: commands/opclasscmds.c:434
 msgid "btree operators must return boolean"
-msgstr ""
+msgstr "operatorii btree trebuie s� returneze valori de tip boolean"
 
 #: commands/opclasscmds.c:438
 msgid "btree operators must have index type as left input"
-msgstr ""
+msgstr "operatorii btree trebuie s� aib� un tip index ca argument st�ng"
 
 #: commands/opclasscmds.c:484
 msgid "btree procedures must have two arguments"
-msgstr ""
+msgstr "procedurile btree trebuie s� aib� dou� argumente"
 
 #: commands/opclasscmds.c:488
 msgid "btree procedures must return integer"
-msgstr ""
+msgstr "procedurile btree trebuie s� returneze un �ntreg"
 
 #: commands/opclasscmds.c:492
 msgid "btree procedures must have index type as first input"
-msgstr ""
+msgstr "procedurile btree trebuie s� aib� un tip index ca prim argument"
 
 #: commands/opclasscmds.c:525
 #, c-format
 msgid "procedure number %d appears more than once"
-msgstr ""
+msgstr "procedura num�rul %d apare de mai multe ori"
 
 #: commands/opclasscmds.c:530
 #, c-format
 msgid "operator number %d appears more than once"
-msgstr ""
+msgstr "operatorul num�rul %d apare de mai multe ori"
 
 #: commands/opclasscmds.c:854
 #, c-format
 msgid ""
 "operator class \"%s\" for access method \"%s\" already exists in schema \"%s"
 "\""
-msgstr ""
+msgstr "clasa de operatori \"%s\" pentru metoda de acces \"%s\"exist� deja �n schema \"%s\""
 
 #: commands/indexcmds.c:120
 msgid "must specify at least one column"
-msgstr ""
+msgstr "trebuie specificat� cel pu�in o coloan�"
 
 #: commands/indexcmds.c:124
 #, c-format
 msgid "cannot use more than %d columns in an index"
-msgstr ""
+msgstr "nu pot fi folosite mai mult de %d coloane �ntr-un index"
 
 #: commands/indexcmds.c:238
 #, c-format
 msgid "access method \"%s\" does not support unique indexes"
-msgstr ""
+msgstr "metoda de acces \"%s\" nu suport� indexuri unice"
 
 #: commands/indexcmds.c:243
 #, c-format
 msgid "access method \"%s\" does not support multicolumn indexes"
-msgstr ""
+msgstr "metoda de acces \"%s\" nu suport� indexuri multi-coloan�"
 
 #: commands/indexcmds.c:257
+#, fuzzy
 msgid "index expressions and predicates may refer only to the table being indexed"
-msgstr ""
+msgstr "expresiile �i predicatele se pot referi numai la tabela indexat�"
 
 #: commands/indexcmds.c:285 parser/analyze.c:1197
 #, c-format
 msgid "multiple primary keys for table \"%s\" are not allowed"
-msgstr ""
+msgstr "nu sunt permise key primare multiple pentru tabela \"%s\""
 
 #: commands/indexcmds.c:302
 msgid "primary keys cannot be expressions"
-msgstr ""
+msgstr "cheile primare nu pot fi expresii"
 
 #: commands/indexcmds.c:332 commands/indexcmds.c:470 parser/analyze.c:1311
 #, c-format
 msgid "column \"%s\" named in key does not exist"
-msgstr ""
+msgstr "coloana \"%s\" specificat� �n cheie nu exist�"
 
 #: commands/indexcmds.c:377
 #, c-format
 msgid "%s %s will create implicit index \"%s\" for table \"%s\""
-msgstr ""
+msgstr "%s %s va crea indexul implicit \"%s\" pentru tabela \"%s\""
 
 #: commands/indexcmds.c:420
 msgid "cannot use subquery in index predicate"
-msgstr ""
+msgstr "imposibil de utilizat o sub-interogare �n predicatul indexului"
 
 #: commands/indexcmds.c:424
 msgid "cannot use aggregate in index predicate"
-msgstr ""
+msgstr "imposibil de utilizat o func�ie de agregare �n predicatul indexului"
 
 #: commands/indexcmds.c:433
 msgid "functions in index predicate must be marked IMMUTABLE"
-msgstr ""
+msgstr "func�iile din predicatul indexului trebuie s� fie marcate ca IMMUTABLE"
 
-#: commands/indexcmds.c:475 commands/tablecmds.c:1329 parser/parse_expr.c:1084
+#: commands/indexcmds.c:475 commands/tablecmds.c:1329 parser/parse_expr.c:1085
 #, c-format
 msgid "column \"%s\" does not exist"
-msgstr ""
+msgstr "coloana \"%s\" nu exist�"
 
 #: commands/indexcmds.c:508
 msgid "cannot use subquery in index expression"
-msgstr ""
+msgstr "imposibil de utilizat o sub-interogare �n expresia indexului"
 
 #: commands/indexcmds.c:512
 msgid "cannot use aggregate function in index expression"
-msgstr ""
+msgstr "imposibil de utilizat o func�ie de agregare �n expresia indexului"
 
 #: commands/indexcmds.c:523
 msgid "functions in index expression must be marked IMMUTABLE"
-msgstr ""
+msgstr "func�iile din expresia indexului trebuie s� fie marcate ca IMMUTABLE"
 
 #: commands/indexcmds.c:582
 #, c-format
 msgid "data type %s has no default operator class for access method \"%s\""
-msgstr ""
+msgstr "tipul de date %s nu are o clas� de operatori implicit� pentru metoda de acces \"%s\""
 
 #: commands/indexcmds.c:584
 msgid ""
 "You must specify an operator class for the index or define a default "
 "operator class for the data type."
-msgstr ""
+msgstr "Trebuie s� specifica�i o clas� de operatori pentru index sau s� defini�i o clas� de operatori implicit� pentru tipul de date."
 
 #: commands/indexcmds.c:637
 #, c-format
 msgid "operator class \"%s\" does not accept data type %s"
-msgstr ""
+msgstr "clasa de operatori \"%s\" nu accept� tipul de date %s"
 
 #: commands/indexcmds.c:694 utils/cache/typcache.c:369
 #, c-format
 msgid "there are multiple default operator classes for data type %s"
-msgstr ""
+msgstr "exist� mai multe clase de operatori implicite pentru tipul de date %s"
 
 #: commands/indexcmds.c:963
 #, c-format
 msgid "shared table \"%s\" can only be reindexed in stand-alone mode"
-msgstr ""
+msgstr "tabela partajat� \"%s\" poate fi re-indexat� numai �n modul independent�(stand-alone)"
 
 #: commands/indexcmds.c:970
 #, c-format
 msgid "table \"%s\" has no indexes"
-msgstr ""
+msgstr "tabela \"%s\" nu are indexuri"
 
 #: commands/indexcmds.c:998
 msgid "can only reindex the currently open database"
-msgstr ""
+msgstr "poate fi re-indexat� numai baza�de�date�curent�deschis�"
 
 #: commands/indexcmds.c:1081
 #, c-format
 msgid "table \"%s\" was reindexed"
-msgstr ""
+msgstr "tabela \"%s\" a fost re-indexat�"
 
-#: commands/prepare.c:61
+#: commands/prepare.c:62
 msgid "invalid statement name: must not be empty"
-msgstr ""
+msgstr "nume de instruc�iune incorect: nu poate fi gol"
 
-#: commands/prepare.c:80
+#: commands/prepare.c:81
 msgid "utility statements cannot be prepared"
 msgstr ""
 
-#: commands/prepare.c:168 commands/prepare.c:173 commands/prepare.c:535
+#: commands/prepare.c:179 commands/prepare.c:184 commands/prepare.c:544
 msgid "prepared statement is not a SELECT"
-msgstr ""
+msgstr "instruc�iunea preparat� nu este de tip SELECT"
 
-#: commands/prepare.c:307
+#: commands/prepare.c:317
 #, c-format
 msgid "prepared statement \"%s\" already exists"
-msgstr ""
+msgstr "instruc�iunea preparat� \"%s\" exist� deja"
 
-#: commands/prepare.c:387
+#: commands/prepare.c:396
 #, c-format
 msgid "prepared statement \"%s\" does not exist"
-msgstr ""
+msgstr "instruc�iunea preparat� \"%s\" nu exist�"
 
 #: commands/operatorcmds.c:107 commands/operatorcmds.c:115
 msgid "setof type not allowed for operator argument"
-msgstr ""
+msgstr "tipul \"setof\" nu este permis ca argument al operatorului"
 
 #: commands/operatorcmds.c:142
 #, c-format
 msgid "operator attribute \"%s\" not recognized"
-msgstr ""
+msgstr "atributul \"%s\" al operatorului nu a fost recunoscut"
 
 #: commands/operatorcmds.c:152
 msgid "operator procedure must be specified"
-msgstr ""
+msgstr "procedura operatorului trebuie specificat�"
 
-#: commands/portalcmds.c:54 commands/portalcmds.c:174
-#: commands/portalcmds.c:219
+#: commands/portalcmds.c:54 commands/portalcmds.c:183
+#: commands/portalcmds.c:228
 msgid "invalid cursor name: must not be empty"
-msgstr ""
+msgstr "nume de cursor incorect: nu poate fi gol"
 
-#: commands/portalcmds.c:80
+#: commands/portalcmds.c:89
 msgid "DECLARE CURSOR may not specify INTO"
-msgstr ""
+msgstr "DECLARE CURSOR nu poate specifica instruc�iunea INTO"
 
-#: commands/portalcmds.c:84
+#: commands/portalcmds.c:93
 msgid "DECLARE CURSOR ... FOR UPDATE is not supported"
-msgstr ""
+msgstr "DECLARE CURSOR ... FOR UPDATE nu este suportat�"
 
-#: commands/portalcmds.c:85
+#: commands/portalcmds.c:94
 msgid "Cursors must be READ ONLY."
-msgstr ""
+msgstr "Cursoarele trebuie s� fie READ ONLY."
 
-#: commands/portalcmds.c:182 commands/portalcmds.c:229
+#: commands/portalcmds.c:191 commands/portalcmds.c:238
 #, c-format
 msgid "cursor \"%s\" does not exist"
-msgstr ""
+msgstr "cursorul \"%s\" nu exist�"
 
-#: commands/portalcmds.c:337 tcop/pquery.c:523 tcop/pquery.c:1096
+#: commands/portalcmds.c:346 tcop/pquery.c:523 tcop/pquery.c:1096
 #, c-format
 msgid "portal \"%s\" cannot be run"
 msgstr ""
 
-#: commands/portalcmds.c:395
+#: commands/portalcmds.c:404
+#, fuzzy
 msgid "could not reposition held cursor"
-msgstr ""
+msgstr "imposibil de repozi�ionat cursorul men�inut"
 
 #: commands/tablecmds.c:294
 msgid "ON COMMIT can only be used on temporary tables"
-msgstr ""
+msgstr "ON COMMIT poate fi folosit� doar pentru tabele temporare"
 
 #: commands/tablecmds.c:399
 #, c-format
 msgid "duplicate check constraint name \"%s\""
-msgstr ""
+msgstr "nume de verificare de restric�ie \"%s\" duplicat"
 
 #: commands/tablecmds.c:555 commands/tablecmds.c:1274
 #: commands/tablecmds.c:1480 commands/tablecmds.c:2636
@@ -2991,7 +3008,7 @@ msgstr ""
 #: commands/trigger.c:552 tcop/utility.c:182 tcop/utility.c:217
 #, c-format
 msgid "permission denied: \"%s\" is a system catalog"
-msgstr ""
+msgstr "permisiune refuzat�: \"%s\" este un catalog sistem"
 
 #: commands/tablecmds.c:566
 #, c-format
@@ -3005,22 +3022,22 @@ msgstr ""
 #: commands/tablecmds.c:719
 #, c-format
 msgid "column \"%s\" duplicated"
-msgstr ""
+msgstr "coloana \"%s\" este duplicat�"
 
 #: commands/tablecmds.c:744 parser/analyze.c:1067 parser/analyze.c:1273
 #, c-format
 msgid "inherited relation \"%s\" is not a table"
-msgstr ""
+msgstr "rela�ia mo�tenit� \"%s\" nu este o tabel�"
 
 #: commands/tablecmds.c:750
 #, c-format
 msgid "cannot inherit from temporary relation \"%s\""
-msgstr ""
+msgstr "imposibil de mo�tenit din rela�ia temporar� \"%s\""
 
 #: commands/tablecmds.c:767
 #, c-format
 msgid "inherited relation \"%s\" duplicated"
-msgstr ""
+msgstr "rela�ia mo�tenit� \"%s\" este duplicat�"
 
 #: commands/tablecmds.c:821
 #, c-format
@@ -3030,14 +3047,14 @@ msgstr ""
 #: commands/tablecmds.c:828
 #, c-format
 msgid "inherited column \"%s\" has a type conflict"
-msgstr ""
+msgstr "coloana mo�tenit� \"%s\" prezint� un conflict de tip"
 
 #: commands/tablecmds.c:830 commands/tablecmds.c:975 parser/parse_coerce.c:239
-#: parser/parse_coerce.c:1125 parser/parse_coerce.c:1142
-#: parser/parse_coerce.c:1188
+#: parser/parse_coerce.c:1130 parser/parse_coerce.c:1147
+#: parser/parse_coerce.c:1193
 #, c-format
 msgid "%s versus %s"
-msgstr ""
+msgstr "%s versus %s"
 
 #: commands/tablecmds.c:966
 #, c-format
@@ -3047,74 +3064,75 @@ msgstr ""
 #: commands/tablecmds.c:973
 #, c-format
 msgid "column \"%s\" has a type conflict"
-msgstr ""
+msgstr "coloana \"%s\" prezint� un conflict de tip"
 
 #: commands/tablecmds.c:1024
 #, c-format
 msgid "column \"%s\" inherits conflicting default values"
-msgstr ""
+msgstr "coloana \"%s\" mo�tene�te valori implicite conflictuale"
 
 #: commands/tablecmds.c:1026
 msgid "To resolve the conflict, specify a default explicitly."
-msgstr ""
+msgstr "Pentru a rezolva conflictul, specifica�i �n mod explicit o valoare implicit�."
 
 #: commands/tablecmds.c:1319
 #, c-format
 msgid "inherited column \"%s\" must be renamed in child tables too"
-msgstr ""
+msgstr "coloana mo�tenit� \"%s\" trebuie redenumit� �i �n tabelele fiice"
 
 #: commands/tablecmds.c:1337
 #, c-format
 msgid "cannot rename system column \"%s\""
-msgstr ""
+msgstr "imposibil de redenumit coloana sistem \"%s\""
 
 #: commands/tablecmds.c:1347
 #, c-format
 msgid "cannot rename inherited column \"%s\""
-msgstr ""
+msgstr "imposibil de redenumit coloana mo�tenit� \"%s\""
 
 #: commands/tablecmds.c:1358 commands/tablecmds.c:2919
 #, c-format
 msgid "column \"%s\" of relation \"%s\" already exists"
-msgstr ""
+msgstr "coloana \"%s\" a rela�iei \"%s\" exist� deja"
 
 #: commands/tablecmds.c:2219
 #, c-format
 msgid "cannot rewrite system relation \"%s\""
-msgstr ""
+msgstr "imposibil de rescris rela�ia sistem \"%s\""
 
 #: commands/tablecmds.c:2229
 msgid "cannot rewrite temporary tables of other sessions"
-msgstr ""
+msgstr "imposibil de rescris tabelele temporare ale altor sesiuni"
 
 #: commands/tablecmds.c:2520
 #, c-format
+#, fuzzy
 msgid "check constraint \"%s\" is violated by some row"
-msgstr ""
+msgstr "verificarea de restric�ie \"%s\" este �nc�lcat� de un r�nd"
 
 #: commands/tablecmds.c:2533
 #, c-format
 msgid "column \"%s\" contains null values"
-msgstr ""
+msgstr "coloana \"%s\" con�ine valori nule"
 
 #: commands/tablecmds.c:2618
 #, c-format
 msgid "\"%s\" is not a table or view"
-msgstr ""
+msgstr "\"%s\" nu este tabel� sau vizualizare"
 
 #: commands/tablecmds.c:2771
 #, c-format
 msgid "cannot alter table \"%s\" because column \"%s\".\"%s\" uses its rowtype"
-msgstr ""
+msgstr "imposibil de modificat tabela \"%s\", deoarece coloana \"%s\".\"%s\" folose�te tipul s�u de r�nd"
 
 #: commands/tablecmds.c:2837
 msgid "column must be added to child tables too"
-msgstr ""
+msgstr "coloana trebuie ad�ugat� �i �n tabelele fiice"
 
 #: commands/tablecmds.c:2880
 #, c-format
 msgid "child table \"%s\" has different type for column \"%s\""
-msgstr ""
+msgstr "tabela fiic� \"%s\" are un tip diferit pentru coloana \"%s\""
 
 #: commands/tablecmds.c:2892
 #, c-format
@@ -3126,22 +3144,23 @@ msgstr ""
 #: commands/tablecmds.c:3409 commands/tablecmds.c:4617
 #, c-format
 msgid "cannot alter system column \"%s\""
-msgstr ""
+msgstr "imposibil de modificat coloana sistem \"%s\""
 
 #: commands/tablecmds.c:3145
 #, c-format
 msgid "column \"%s\" is in a primary key"
-msgstr ""
+msgstr "coloana \"%s\" face parte dintr-o cheie primar�"
 
 #: commands/tablecmds.c:3295 commands/tablecmds.c:5416
 #, c-format
 msgid "\"%s\" is not a table or index"
-msgstr ""
+msgstr "\"%s\" nu este tabel� sau index"
 
 #: commands/tablecmds.c:3322
 #, c-format
+#, fuzzy
 msgid "statistics target %d is too low"
-msgstr ""
+msgstr "�inta statistic� %d este prea mic�"
 
 #: commands/tablecmds.c:3330
 #, c-format
@@ -3151,35 +3170,35 @@ msgstr ""
 #: commands/tablecmds.c:3390
 #, c-format
 msgid "invalid storage type \"%s\""
-msgstr ""
+msgstr "tip de stocare incorect \"%s\""
 
 #: commands/tablecmds.c:3421
 #, c-format
 msgid "column data type %s can only have storage PLAIN"
-msgstr ""
+msgstr "tipul de date al coloanei %s poate avea numai stocare PLAIN"
 
 #: commands/tablecmds.c:3478
 #, c-format
 msgid "cannot drop system column \"%s\""
-msgstr ""
+msgstr "imposibil de �ters coloana sistem \"%s\""
 
 #: commands/tablecmds.c:3485
 #, c-format
 msgid "cannot drop inherited column \"%s\""
-msgstr ""
+msgstr "imposibil de �ters coloana mo�tenit� \"%s\""
 
 #: commands/tablecmds.c:3786
 #, c-format
 msgid "referenced relation \"%s\" is not a table"
-msgstr ""
+msgstr "rela�ia \"%s\" referit� nu este o tabel�"
 
 #: commands/tablecmds.c:3820
 msgid "cannot reference temporary table from permanent table constraint"
-msgstr ""
+msgstr "imposibil de referit tabele temporare dintr-o restric�ie a unei tabele permanente"
 
 #: commands/tablecmds.c:3827
 msgid "cannot reference permanent table from temporary table constraint"
-msgstr ""
+msgstr "imposibil de referit tabele permanente dintr-o restric�ie a unei tabele temporare"
 
 #: commands/tablecmds.c:3872 commands/tablecmds.c:4362
 msgid "number of referencing and referenced columns for foreign key disagree"
@@ -3188,116 +3207,117 @@ msgstr ""
 #: commands/tablecmds.c:3893
 #, c-format
 msgid "foreign key constraint \"%s\" cannot be implemented"
-msgstr ""
+msgstr "restric�ia de cheie str�in� \"%s\" nu poate fi implementat�"
 
 #: commands/tablecmds.c:3896
 #, c-format
 msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s."
-msgstr ""
+msgstr "Coloanele cheie \"%s\" �i \"%s\" au tipuri incompatibile: %s �i %s."
 
 #: commands/tablecmds.c:3910
 #, c-format
 msgid "foreign key constraint \"%s\" will require costly sequential scans"
-msgstr ""
+msgstr "restric�ia de cheie str�in� \"%s\" va necesita parcurgeri secven�iale costisitoare"
 
 #: commands/tablecmds.c:3913
 #, c-format
 msgid "Key columns \"%s\" and \"%s\" are of different types: %s and %s."
-msgstr ""
+msgstr "Coloanele cheie \"%s\" �i \"%s\" au tipuri diferite: %s �i %s."
 
 #: commands/tablecmds.c:3998
 #, c-format
 msgid "column \"%s\" referenced in foreign key constraint does not exist"
-msgstr ""
+msgstr "coloana \"%s\" referit� �n restric�ia de cheie str�in� nu exist�"
 
 #: commands/tablecmds.c:4003
 #, c-format
 msgid "cannot have more than %d keys in a foreign key"
-msgstr ""
+msgstr "nu pot exista mai mult de %d chei �ntr-o cheie str�in�"
 
 #: commands/tablecmds.c:4072
 #, c-format
 msgid "there is no primary key for referenced table \"%s\""
-msgstr ""
+msgstr "nu exist� o cheie primar� pentru tabela referit� \"%s\""
 
 #: commands/tablecmds.c:4190
 #, c-format
 msgid "there is no unique constraint matching given keys for referenced table \"%s\""
-msgstr ""
+msgstr "nu exist� nici o restric�ie de unicitate potrivit� cu cheile date pentru tabela referit� \"%s\""
 
-#: commands/tablecmds.c:4574 commands/trigger.c:2777
+#: commands/tablecmds.c:4574 commands/trigger.c:2785
 #, c-format
 msgid "constraint \"%s\" does not exist"
-msgstr ""
+msgstr "restric�ia \"%s\" nu exist�"
 
 #: commands/tablecmds.c:4579
 #, c-format
 msgid "multiple constraints named \"%s\" were dropped"
-msgstr ""
+msgstr "mai multe restric�ii cu numele \"%s\" au fost �terse"
 
 #: commands/tablecmds.c:4624
 #, c-format
 msgid "cannot alter inherited column \"%s\""
-msgstr ""
+msgstr "imposibil de modificat coloana mo�tenit� \"%s\""
 
 #: commands/tablecmds.c:4664
 msgid "transform expression must not return a set"
-msgstr ""
+msgstr "expresia de transformare nu poate returna un set"
 
 #: commands/tablecmds.c:4670
 msgid "cannot use subquery in transform expression"
-msgstr ""
+msgstr "imposibil de utilizat o sub-interogare �n expresia de transformare"
 
 #: commands/tablecmds.c:4674
 msgid "cannot use aggregate function in transform expression"
-msgstr ""
+msgstr "imposibil de utilizat o func�ie de agregare �n expresia de transformare"
 
 #: commands/tablecmds.c:4691
 #, c-format
 msgid "column \"%s\" cannot be cast to type \"%s\""
-msgstr ""
+msgstr "coloana \"%s\" nu poate fi convertit� la tipul \"%s\""
 
 #: commands/tablecmds.c:4717
 #, c-format
 msgid "type of inherited column \"%s\" must be changed in child tables too"
-msgstr ""
+msgstr "tipul coloanei mo�tenite \"%s\" trebuie schimbat �i �n tabelele fiice"
 
 #: commands/tablecmds.c:4755
 #, c-format
 msgid "cannot alter type of column \"%s\" twice"
-msgstr ""
+msgstr "imposibil de modificat tipul coloanei \"%s\" de dou� ori"
 
 #: commands/tablecmds.c:4789
 #, c-format
 msgid "default for column \"%s\" cannot be cast to type \"%s\""
-msgstr ""
+msgstr "valoarea implicit� a coloanei \"%s\" nu poate fi convertit� la tipul \"%s\""
 
 #: commands/tablecmds.c:4889
 msgid "cannot alter type of a column used by a view or rule"
-msgstr ""
+msgstr "imposibil de modificat tipul unei coloane folosite de o vizualizare sau de o regul�"
 
 #: commands/tablecmds.c:4890
 #, c-format
 msgid "%s depends on column \"%s\""
-msgstr ""
+msgstr "%s depinde de coloana \"%s\""
 
 #: commands/tablecmds.c:5206
 #, c-format
 msgid "\"%s\" is not a table, TOAST table, index, view, or sequence"
-msgstr ""
+msgstr "\"%s\" nu este tabel�, tabel� TOAST, index, vizualizare sau secven��"
 
 #: commands/tablecmds.c:5446
+#, fuzzy
 msgid "cannot have multiple SET TABLESPACE subcommands"
-msgstr ""
+msgstr "nu pot exista mai multe sub-comenzi SET TABLESPACE"
 
 #: commands/tablecmds.c:5476
 #, c-format
 msgid "cannot move system relation \"%s\""
-msgstr ""
+msgstr "imposibil de mutat rela�ia sistem \"%s\""
 
 #: commands/tablecmds.c:5486
 msgid "cannot move temporary tables of other sessions"
-msgstr ""
+msgstr "imposibil de mutat tabelele temporare ale altor sesiuni"
 
 #: commands/tablecmds.c:5696
 msgid "shared tables cannot be toasted after initdb"
@@ -3306,159 +3326,160 @@ msgstr ""
 #: commands/tablecmds.c:5711
 #, c-format
 msgid "table \"%s\" already has a TOAST table"
-msgstr ""
+msgstr "tabela \"%s\" are deja o tabel� TOAST"
 
 #: commands/tablecmds.c:5728
 #, c-format
 msgid "table \"%s\" does not need a TOAST table"
-msgstr ""
+msgstr "tabela \"%s\" nu necesit� o tabel� TOAST"
 
 #: commands/proclang.c:64
 msgid "must be superuser to create procedural language"
-msgstr ""
+msgstr "numai utilizatorul privilegiat poate crea limbaje procedurale"
 
 #: commands/proclang.c:77 commands/proclang.c:265
 #, c-format
 msgid "language \"%s\" already exists"
-msgstr ""
+msgstr "limbajul \"%s\" exist� deja"
 
 #: commands/proclang.c:97
 #, c-format
 msgid "changing return type of function %s from \"opaque\" to \"language_handler\""
-msgstr ""
+msgstr "modificare a tipului returnat de func�ia %s din \"opaque\" �n \"language_handler\""
 
 #: commands/proclang.c:104
 #, c-format
 msgid "function %s must return type \"language_handler\""
-msgstr ""
+msgstr "func�ia %s trebuie s� returneze tipul \"language_handler\""
 
 #: commands/proclang.c:188
 msgid "must be superuser to drop procedural language"
-msgstr ""
+msgstr "numai utilizatorul privilegiat poate �terge un limbaj procedural"
 
 #: commands/proclang.c:271
 msgid "must be superuser to rename procedural language"
-msgstr ""
+msgstr "numai utilizatorul privilegiat poate redenumi un limbaj procedural"
 
 #: commands/schemacmds.c:84 commands/user.c:883 commands/user.c:1018
 msgid "permission denied"
-msgstr ""
+msgstr "permisiune refuzat�"
 
 #: commands/schemacmds.c:85
 #, c-format
 msgid "\"%s\" is not a superuser, so cannot create a schema for \"%s\""
-msgstr ""
+msgstr "\"%s\" nu este utilizator privilegiat, astfel �nc�t nu poate crea o schem� pentru \"%s\""
 
 #: commands/schemacmds.c:100 commands/schemacmds.c:268
 #, c-format
 msgid "unacceptable schema name \"%s\""
-msgstr ""
+msgstr "nume de schem� \"%s\" inacceptabil"
 
 #: commands/schemacmds.c:101 commands/schemacmds.c:269
 msgid "The prefix \"pg_\" is reserved for system schemas."
-msgstr ""
+msgstr "Prefixul \"pg_\" este rezervat pentru schemele sistem."
 
 #: commands/sequence.c:399 commands/sequence.c:591 commands/sequence.c:634
 #, c-format
 msgid "permission denied for sequence %s"
-msgstr ""
+msgstr "permisiune refuzat� pentru secven�a %s"
 
 #: commands/sequence.c:476
 #, c-format
 msgid "nextval: reached maximum value of sequence \"%s\" (%s)"
-msgstr ""
+msgstr "nextval: a fost atins� valoarea maxim� a secven�ei \"%s\" (%s)"
 
 #: commands/sequence.c:499
 #, c-format
 msgid "nextval: reached minimum value of sequence \"%s\" (%s)"
-msgstr ""
+msgstr "nextval: a fost atins� valoarea minim� a secven�ei \"%s\" (%s)"
 
 #: commands/sequence.c:597
 #, c-format
 msgid "currval of sequence \"%s\" is not yet defined in this session"
-msgstr ""
+msgstr "valoarea curent� a secven�ei \"%s\" nu este �nc� definit� �n aceast� sesiune"
 
 #: commands/sequence.c:651
 #, c-format
 msgid "setval: value %s is out of bounds for sequence \"%s\" (%s..%s)"
-msgstr ""
+msgstr "setval: valoarea %s este �n afara limitelor secven�ei \"%s\" (%s..%s)"
 
 #: commands/sequence.c:794 executor/execGrouping.c:384 lib/dllist.c:43
-#: lib/dllist.c:88 libpq/auth.c:637 postmaster/pgstat.c:2432
-#: postmaster/pgstat.c:2499 postmaster/postmaster.c:809
-#: postmaster/postmaster.c:1679 postmaster/postmaster.c:2398
-#: storage/buffer/localbuf.c:139 storage/file/fd.c:587 storage/file/fd.c:620
-#: storage/file/fd.c:766 storage/ipc/sinval.c:789 storage/lmgr/lock.c:494
+#: lib/dllist.c:88 libpq/auth.c:636 postmaster/pgstat.c:2430
+#: postmaster/pgstat.c:2497 postmaster/postmaster.c:809
+#: postmaster/postmaster.c:1677 postmaster/postmaster.c:2396
+#: storage/buffer/localbuf.c:139 storage/file/fd.c:588 storage/file/fd.c:621
+#: storage/file/fd.c:767 storage/ipc/sinval.c:789 storage/lmgr/lock.c:494
 #: storage/smgr/md.c:844 storage/smgr/smgr.c:213 utils/adt/cash.c:297
 #: utils/adt/cash.c:312 utils/adt/oracle_compat.c:73
-#: utils/adt/oracle_compat.c:125 utils/adt/regexp.c:191
+#: utils/adt/oracle_compat.c:125 utils/adt/regexp.c:200
 #: utils/adt/ri_triggers.c:3472 utils/cache/relcache.c:169
 #: utils/cache/relcache.c:183 utils/cache/relcache.c:1135
 #: utils/cache/typcache.c:165 utils/cache/typcache.c:487
-#: utils/fmgr/dfmgr.c:127 utils/fmgr/fmgr.c:528 utils/hash/dynahash.c:178
+#: utils/fmgr/dfmgr.c:127 utils/fmgr/fmgr.c:527 utils/hash/dynahash.c:178
 #: utils/hash/dynahash.c:248 utils/init/miscinit.c:213
-#: utils/init/miscinit.c:234 utils/init/miscinit.c:244 utils/misc/guc.c:1909
-#: utils/misc/guc.c:1922 utils/misc/guc.c:1935 utils/mmgr/aset.c:337
+#: utils/init/miscinit.c:234 utils/init/miscinit.c:244 utils/misc/guc.c:1910
+#: utils/misc/guc.c:1923 utils/misc/guc.c:1936 utils/mmgr/aset.c:337
 #: utils/mmgr/aset.c:503 utils/mmgr/aset.c:700 utils/mmgr/aset.c:893
 #: utils/mmgr/portalmem.c:78
 msgid "out of memory"
-msgstr ""
+msgstr "memorie insuficient�"
 
 #: commands/sequence.c:956
 msgid "INCREMENT must not be zero"
-msgstr ""
+msgstr "INCREMENT trebuie s� fie diferit de zero"
 
 #: commands/sequence.c:1002
 #, c-format
 msgid "MINVALUE (%s) must be less than MAXVALUE (%s)"
-msgstr ""
+msgstr "MINVALUE (%s) trebuie s� fie mai mic� dec�t MAXVALUE (%s)"
 
 #: commands/sequence.c:1033
 #, c-format
 msgid "START value (%s) can't be less than MINVALUE (%s)"
-msgstr ""
+msgstr "valoarea START (%s) nu poate fi mai mic� dec�t MINVALUE (%s)"
 
 #: commands/sequence.c:1045
 #, c-format
 msgid "START value (%s) can't be greater than MAXVALUE (%s)"
-msgstr ""
+msgstr "valoarea START (%s) nu poate fi mai mare dec�t MAXVALUE (%s)"
 
 #: commands/sequence.c:1060
 #, c-format
 msgid "CACHE (%s) must be greater than zero"
-msgstr ""
+msgstr "CACHE (%s) trebuie s� fie mai mare dec�t zero"
 
 #: commands/trigger.c:134
 #, c-format
+#, fuzzy
 msgid "could not determine referenced table for constraint \"%s\""
-msgstr ""
+msgstr "imposibil de determinat tabela referit� pentru restric�ia \"%s\""
 
 #: commands/trigger.c:219
 msgid "multiple INSERT events specified"
-msgstr ""
+msgstr "au fost specificate mai multe evenimente INSERT"
 
 #: commands/trigger.c:226
 msgid "multiple DELETE events specified"
-msgstr ""
+msgstr "au fost specificate mai multe evenimente DELETE"
 
 #: commands/trigger.c:233
 msgid "multiple UPDATE events specified"
-msgstr ""
+msgstr "au fost specificate mai multe evenimente UPDATE"
 
 #: commands/trigger.c:266 commands/trigger.c:654
 #, c-format
 msgid "trigger \"%s\" for relation \"%s\" already exists"
-msgstr ""
+msgstr "declan�atorul \"%s\" pentru rela�ia \"%s\" exist� deja"
 
 #: commands/trigger.c:287
 #, c-format
 msgid "changing return type of function %s from \"opaque\" to \"trigger\""
-msgstr ""
+msgstr "modificare a tipului returnat de func�ia %s din \"opaque\" �n \"trigger\""
 
 #: commands/trigger.c:294
 #, c-format
 msgid "function %s must return type \"trigger\""
-msgstr ""
+msgstr "valoarea returnat� de func�ia %s trebuie s� fie de tipul \"trigger\""
 
 #: commands/trigger.c:1160
 #, c-format
@@ -3474,16 +3495,16 @@ msgstr ""
 msgid "could not serialize access due to concurrent update"
 msgstr ""
 
-#: commands/trigger.c:2723
+#: commands/trigger.c:2731
 msgid "unnamed constraints cannot be set explicitly"
 msgstr ""
 
-#: commands/trigger.c:2762
+#: commands/trigger.c:2770
 #, c-format
 msgid "constraint \"%s\" is not deferrable"
 msgstr ""
 
-#: commands/tablespace.c:150 commands/tablespace.c:158
+#: ../port/copydir.c:47 commands/tablespace.c:150 commands/tablespace.c:158
 #: commands/tablespace.c:164
 #, c-format
 msgid "could not create directory \"%s\": %m"
@@ -3579,6 +3600,147 @@ msgstr ""
 msgid "tablespace %u is not empty"
 msgstr ""
 
+#: commands/vacuum.c:286
+msgid "VACUUM FULL FREEZE is not supported"
+msgstr ""
+
+#: commands/vacuum.c:287
+msgid "Use VACUUM FULL, then VACUUM FREEZE."
+msgstr ""
+
+#: commands/vacuum.c:607
+msgid "oldest xmin is far in the past"
+msgstr ""
+
+#: commands/vacuum.c:608
+msgid "Close open transactions soon to avoid wraparound problems."
+msgstr ""
+
+#: commands/vacuum.c:825
+msgid "some databases have not been vacuumed in over 2 billion transactions"
+msgstr ""
+
+#: commands/vacuum.c:826
+msgid "You may have already suffered transaction-wraparound data loss."
+msgstr ""
+
+#: commands/vacuum.c:837
+msgid "some databases have not been vacuumed in over 1 billion transactions"
+msgstr ""
+
+#: commands/vacuum.c:838
+msgid "Better vacuum them soon, or you may have a wraparound failure."
+msgstr ""
+
+#: commands/vacuum.c:845
+#, c-format
+msgid "some databases have not been vacuumed in %d transactions"
+msgstr ""
+
+#: commands/vacuum.c:847
+#, c-format
+msgid ""
+"Better vacuum them within %d transactions, or you may have a wraparound "
+"failure."
+msgstr ""
+
+#: commands/vacuum.c:943
+#, c-format
+msgid "skipping \"%s\" --- only table or database owner can vacuum it"
+msgstr ""
+
+#: commands/vacuum.c:958
+#, c-format
+msgid "skipping \"%s\" --- cannot vacuum indexes, views, or special system tables"
+msgstr ""
+
+#: commands/vacuum.c:1181 commands/vacuumlazy.c:221
+#, c-format
+msgid "vacuuming \"%s.%s\""
+msgstr ""
+
+#: commands/vacuum.c:1229 commands/vacuumlazy.c:293
+#, c-format
+msgid "relation \"%s\" page %u is uninitialized --- fixing"
+msgstr ""
+
+#: commands/vacuum.c:1352
+#, c-format
+msgid ""
+"relation \"%s\" TID %u/%u: InsertTransactionInProgress %u --- can't shrink "
+"relation"
+msgstr ""
+
+#: commands/vacuum.c:1365
+#, c-format
+msgid ""
+"relation \"%s\" TID %u/%u: DeleteTransactionInProgress %u --- can't shrink "
+"relation"
+msgstr ""
+
+#: commands/vacuum.c:1518 commands/vacuumlazy.c:456
+#, c-format
+msgid "\"%s\": found %.0f removable, %.0f nonremovable row versions in %u pages"
+msgstr ""
+
+#: commands/vacuum.c:1521
+#, c-format
+msgid ""
+"%.0f dead row versions cannot be removed yet.\n"
+"Nonremovable row versions range from %lu to %lu bytes long.\n"
+"There were %.0f unused item pointers.\n"
+"Total free space (including removable row versions) is %.0f bytes.\n"
+"%u pages are or will become empty, including %u at the end of the table.\n"
+"%u pages containing %.0f free bytes are potential move destinations.\n"
+"%s"
+msgstr ""
+
+#: commands/vacuum.c:2270
+#, c-format
+msgid "\"%s\": moved %u row versions, truncated %u to %u pages"
+msgstr ""
+
+#: commands/vacuum.c:2273 commands/vacuumlazy.c:517 commands/vacuumlazy.c:820
+#: nodes/print.c:86 storage/lmgr/deadlock.c:888 tcop/postgres.c:3341
+#, c-format
+msgid "%s"
+msgstr ""
+
+#: commands/vacuum.c:2812 commands/vacuumlazy.c:817
+#, c-format
+msgid "\"%s\": truncated %u to %u pages"
+msgstr ""
+
+#: commands/vacuum.c:2902 commands/vacuum.c:2969 commands/vacuumlazy.c:630
+#: commands/vacuumlazy.c:705
+#, c-format
+msgid "index \"%s\" now contains %.0f row versions in %u pages"
+msgstr ""
+
+#: commands/vacuum.c:2906 commands/vacuumlazy.c:634
+#, c-format
+msgid ""
+"%u index pages have been deleted, %u are currently reusable.\n"
+"%s"
+msgstr ""
+
+#: commands/vacuum.c:2920 commands/vacuum.c:2989
+#, c-format
+msgid "index \"%s\" contains %.0f row versions, but table contains %.0f row versions"
+msgstr ""
+
+#: commands/vacuum.c:2923 commands/vacuum.c:2992
+msgid "Rebuild the index with REINDEX."
+msgstr ""
+
+#: commands/vacuum.c:2973 commands/vacuumlazy.c:709
+#, c-format
+msgid ""
+"%.0f index row versions were removed.\n"
+"%u index pages have been deleted, %u are currently reusable.\n"
+"%s"
+msgstr ""
+
 #: commands/typecmds.c:138
 #, c-format
 msgid "type names must be %d characters or less"
@@ -3872,140 +4034,7 @@ msgstr ""
 msgid "must be superuser to rename groups"
 msgstr ""
 
-#: commands/vacuum.c:586
-msgid "oldest xmin is far in the past"
-msgstr ""
-
-#: commands/vacuum.c:587
-msgid "Close open transactions soon to avoid wraparound problems."
-msgstr ""
-
-#: commands/vacuum.c:804
-msgid "some databases have not been vacuumed in over 2 billion transactions"
-msgstr ""
-
-#: commands/vacuum.c:805
-msgid "You may have already suffered transaction-wraparound data loss."
-msgstr ""
-
-#: commands/vacuum.c:816
-msgid "some databases have not been vacuumed in over 1 billion transactions"
-msgstr ""
-
-#: commands/vacuum.c:817
-msgid "Better vacuum them soon, or you may have a wraparound failure."
-msgstr ""
-
-#: commands/vacuum.c:824
-#, c-format
-msgid "some databases have not been vacuumed in %d transactions"
-msgstr ""
-
-#: commands/vacuum.c:826
-#, c-format
-msgid ""
-"Better vacuum them within %d transactions, or you may have a wraparound "
-"failure."
-msgstr ""
-
-#: commands/vacuum.c:922
-#, c-format
-msgid "skipping \"%s\" --- only table or database owner can vacuum it"
-msgstr ""
-
-#: commands/vacuum.c:937
-#, c-format
-msgid "skipping \"%s\" --- cannot vacuum indexes, views, or special system tables"
-msgstr ""
-
-#: commands/vacuum.c:1160 commands/vacuumlazy.c:205
-#, c-format
-msgid "vacuuming \"%s.%s\""
-msgstr ""
-
-#: commands/vacuum.c:1208 commands/vacuumlazy.c:263
-#, c-format
-msgid "relation \"%s\" page %u is uninitialized --- fixing"
-msgstr ""
-
-#: commands/vacuum.c:1331
-#, c-format
-msgid ""
-"relation \"%s\" TID %u/%u: InsertTransactionInProgress %u --- can't shrink "
-"relation"
-msgstr ""
-
-#: commands/vacuum.c:1344
-#, c-format
-msgid ""
-"relation \"%s\" TID %u/%u: DeleteTransactionInProgress %u --- can't shrink "
-"relation"
-msgstr ""
-
-#: commands/vacuum.c:1498 commands/vacuumlazy.c:422
-#, c-format
-msgid "\"%s\": found %.0f removable, %.0f nonremovable row versions in %u pages"
-msgstr ""
-
-#: commands/vacuum.c:1501
-#, c-format
-msgid ""
-"%.0f dead row versions cannot be removed yet.\n"
-"Nonremovable row versions range from %lu to %lu bytes long.\n"
-"There were %.0f unused item pointers.\n"
-"Total free space (including removable row versions) is %.0f bytes.\n"
-"%u pages are or will become empty, including %u at the end of the table.\n"
-"%u pages containing %.0f free bytes are potential move destinations.\n"
-"%s"
-msgstr ""
-
-#: commands/vacuum.c:2254
-#, c-format
-msgid "\"%s\": moved %u row versions, truncated %u to %u pages"
-msgstr ""
-
-#: commands/vacuum.c:2257 commands/vacuumlazy.c:483 commands/vacuumlazy.c:774
-#: nodes/print.c:86 storage/lmgr/deadlock.c:888 tcop/postgres.c:3320
-#, c-format
-msgid "%s"
-msgstr ""
-
-#: commands/vacuum.c:2769 commands/vacuumlazy.c:771
-#, c-format
-msgid "\"%s\": truncated %u to %u pages"
-msgstr ""
-
-#: commands/vacuum.c:2859 commands/vacuum.c:2926 commands/vacuumlazy.c:596
-#: commands/vacuumlazy.c:661
-#, c-format
-msgid "index \"%s\" now contains %.0f row versions in %u pages"
-msgstr ""
-
-#: commands/vacuum.c:2863 commands/vacuumlazy.c:600
-#, c-format
-msgid ""
-"%u index pages have been deleted, %u are currently reusable.\n"
-"%s"
-msgstr ""
-
-#: commands/vacuum.c:2877 commands/vacuum.c:2946
-#, c-format
-msgid "index \"%s\" contains %.0f row versions, but table contains %.0f row versions"
-msgstr ""
-
-#: commands/vacuum.c:2880 commands/vacuum.c:2949
-msgid "Rebuild the index with REINDEX."
-msgstr ""
-
-#: commands/vacuum.c:2930 commands/vacuumlazy.c:665
-#, c-format
-msgid ""
-"%.0f index row versions were removed.\n"
-"%u index pages have been deleted, %u are currently reusable.\n"
-"%s"
-msgstr ""
-
-#: commands/vacuumlazy.c:425
+#: commands/vacuumlazy.c:459
 #, c-format
 msgid ""
 "%.0f dead row versions cannot be removed yet.\n"
@@ -4014,7 +4043,7 @@ msgid ""
 "%s"
 msgstr ""
 
-#: commands/vacuumlazy.c:480
+#: commands/vacuumlazy.c:514
 #, c-format
 msgid "\"%s\": removed %d row versions in %d pages"
 msgstr ""
@@ -4106,79 +4135,79 @@ msgstr ""
 msgid "new row for relation \"%s\" violates check constraint \"%s\""
 msgstr ""
 
-#: executor/execQual.c:257 executor/execQual.c:285 executor/execQual.c:2065
+#: executor/execQual.c:260 executor/execQual.c:288 executor/execQual.c:2138
 #: utils/adt/array_userfuncs.c:362 utils/adt/arrayfuncs.c:216
 #: utils/adt/arrayfuncs.c:472 utils/adt/arrayfuncs.c:1153
-#: utils/adt/arrayfuncs.c:2421
+#: utils/adt/arrayfuncs.c:2427
 #, c-format
 msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
 msgstr ""
 
-#: executor/execQual.c:811
+#: executor/execQual.c:815
 msgid "functions and operators can take at most one set argument"
 msgstr ""
 
-#: executor/execQual.c:866 executor/execQual.c:910 executor/execQual.c:1086
-#: executor/execQual.c:1211 executor/execQual.c:3445 executor/functions.c:666
+#: executor/execQual.c:870 executor/execQual.c:914 executor/execQual.c:1090
+#: executor/execQual.c:1215 executor/execQual.c:3580 executor/functions.c:666
 #: executor/functions.c:705 utils/fmgr/funcapi.c:39
 msgid "set-valued function called in context that cannot accept a set"
 msgstr ""
 
-#: executor/execQual.c:1293
+#: executor/execQual.c:1297
 msgid "function returning set of rows cannot return null value"
 msgstr ""
 
-#: executor/execQual.c:1377
+#: executor/execQual.c:1381
 msgid "table-function protocol for materialize mode was not followed"
 msgstr ""
 
-#: executor/execQual.c:1384
+#: executor/execQual.c:1388
 #, c-format
 msgid "unrecognized table-function returnMode: %d"
 msgstr ""
 
-#: executor/execQual.c:1530
+#: executor/execQual.c:1534
 msgid "IS DISTINCT FROM does not support set arguments"
 msgstr ""
 
-#: executor/execQual.c:1604
+#: executor/execQual.c:1608
 msgid "op ANY/ALL (array) does not support set arguments"
 msgstr ""
 
-#: executor/execQual.c:2051
+#: executor/execQual.c:2124
 msgid "cannot merge incompatible arrays"
 msgstr ""
 
-#: executor/execQual.c:2052
+#: executor/execQual.c:2125
 #, c-format
 msgid ""
 "Array with element type %s cannot be included in ARRAY construct with "
 "element type %s."
 msgstr ""
 
-#: executor/execQual.c:2085 utils/adt/arrayfuncs.c:507
+#: executor/execQual.c:2158 utils/adt/arrayfuncs.c:507
 msgid "multidimensional arrays must have array expressions with matching dimensions"
 msgstr ""
 
-#: executor/execQual.c:2251
+#: executor/execQual.c:2324
 msgid "NULLIF does not support set arguments"
 msgstr ""
 
-#: executor/execQual.c:2432
+#: executor/execQual.c:2505
 #, c-format
 msgid "domain %s does not allow null values"
 msgstr ""
 
-#: executor/execQual.c:2462
+#: executor/execQual.c:2535
 #, c-format
 msgid "value for domain %s violates check constraint \"%s\""
 msgstr ""
 
-#: executor/execQual.c:2804 optimizer/util/clauses.c:428 parser/parse_agg.c:74
+#: executor/execQual.c:2877 optimizer/util/clauses.c:428 parser/parse_agg.c:74
 msgid "aggregate function calls may not be nested"
 msgstr ""
 
-#: executor/execQual.c:3066
+#: executor/execQual.c:3201
 #, c-format
 msgid "ROW() column has type %s instead of type %s"
 msgstr ""
@@ -4283,19 +4312,6 @@ msgstr ""
 msgid "could not write to hash-join temporary file: %m"
 msgstr ""
 
-#: executor/nodeMergejoin.c:1474
-msgid "RIGHT JOIN is only supported with merge-joinable join conditions"
-msgstr ""
-
-#: executor/nodeMergejoin.c:1491 optimizer/path/joinpath.c:839
-msgid "FULL JOIN is only supported with merge-joinable join conditions"
-msgstr ""
-
-#: executor/nodeSubplan.c:294 executor/nodeSubplan.c:336
-#: executor/nodeSubplan.c:972
-msgid "more than one row returned by a subquery used as an expression"
-msgstr ""
-
 #: executor/spi.c:190
 msgid "transaction left non-empty SPI stack"
 msgstr ""
@@ -4325,6 +4341,19 @@ msgstr ""
 msgid "SQL statement \"%s\""
 msgstr ""
 
+#: executor/nodeMergejoin.c:1474
+msgid "RIGHT JOIN is only supported with merge-joinable join conditions"
+msgstr ""
+
+#: executor/nodeMergejoin.c:1491 optimizer/path/joinpath.c:839
+msgid "FULL JOIN is only supported with merge-joinable join conditions"
+msgstr ""
+
+#: executor/nodeSubplan.c:294 executor/nodeSubplan.c:336
+#: executor/nodeSubplan.c:972
+msgid "more than one row returned by a subquery used as an expression"
+msgstr ""
+
 #: libpq/be-fsstubs.c:132 libpq/be-fsstubs.c:170 libpq/be-fsstubs.c:194
 #: libpq/be-fsstubs.c:222 libpq/be-fsstubs.c:274
 #, c-format
@@ -4379,7 +4408,7 @@ msgid ""
 "expected \"%s\")"
 msgstr ""
 
-#: libpq/auth.c:126 libpq/auth.c:306
+#: libpq/auth.c:126 libpq/auth.c:305
 #, c-format
 msgid ""
 "unexpected Kerberos user name received from client (received \"%s\", "
@@ -4390,164 +4419,164 @@ msgstr ""
 msgid "Kerberos 4 not implemented on this server"
 msgstr ""
 
-#: libpq/auth.c:201
+#: libpq/auth.c:200
 #, c-format
 msgid "Kerberos initialization returned error %d"
 msgstr ""
 
-#: libpq/auth.c:211
+#: libpq/auth.c:210
 #, c-format
 msgid "Kerberos keytab resolving returned error %d"
 msgstr ""
 
-#: libpq/auth.c:224
+#: libpq/auth.c:223
 #, c-format
 msgid "Kerberos sname_to_principal(\"%s\") returned error %d"
 msgstr ""
 
-#: libpq/auth.c:269
+#: libpq/auth.c:268
 #, c-format
 msgid "Kerberos recvauth returned error %d"
 msgstr ""
 
-#: libpq/auth.c:294
+#: libpq/auth.c:293
 #, c-format
 msgid "Kerberos unparse_name returned error %d"
 msgstr ""
 
-#: libpq/auth.c:327
+#: libpq/auth.c:326
 msgid "Kerberos 5 not implemented on this server"
 msgstr ""
 
-#: libpq/auth.c:366
+#: libpq/auth.c:365
 #, c-format
 msgid "authentication failed for user \"%s\": host rejected"
 msgstr ""
 
-#: libpq/auth.c:369
+#: libpq/auth.c:368
 #, c-format
 msgid "Kerberos 4 authentication failed for user \"%s\""
 msgstr ""
 
-#: libpq/auth.c:372
+#: libpq/auth.c:371
 #, c-format
 msgid "Kerberos 5 authentication failed for user \"%s\""
 msgstr ""
 
-#: libpq/auth.c:375
+#: libpq/auth.c:374
 #, c-format
 msgid "\"trust\" authentication failed for user \"%s\""
 msgstr ""
 
-#: libpq/auth.c:378
+#: libpq/auth.c:377
 #, c-format
 msgid "Ident authentication failed for user \"%s\""
 msgstr ""
 
-#: libpq/auth.c:383
+#: libpq/auth.c:382
 #, c-format
 msgid "password authentication failed for user \"%s\""
 msgstr ""
 
-#: libpq/auth.c:387
+#: libpq/auth.c:386
 #, c-format
 msgid "PAM authentication failed for user \"%s\""
 msgstr ""
 
-#: libpq/auth.c:391
+#: libpq/auth.c:390
 #, c-format
 msgid "authentication failed for user \"%s\": invalid authentication method"
 msgstr ""
 
-#: libpq/auth.c:420
+#: libpq/auth.c:419
 msgid "missing or erroneous pg_hba.conf file"
 msgstr ""
 
-#: libpq/auth.c:421
+#: libpq/auth.c:420
 msgid "See server log for details."
 msgstr ""
 
-#: libpq/auth.c:447
+#: libpq/auth.c:446
 #, c-format
 msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s"
 msgstr ""
 
-#: libpq/auth.c:449
+#: libpq/auth.c:448
 msgid "SSL on"
 msgstr ""
 
-#: libpq/auth.c:449
+#: libpq/auth.c:448
 msgid "SSL off"
 msgstr ""
 
-#: libpq/auth.c:453
+#: libpq/auth.c:452
 #, c-format
 msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\""
 msgstr ""
 
-#: libpq/auth.c:465
+#: libpq/auth.c:464
 msgid "Kerberos 4 only supports IPv4 connections"
 msgstr ""
 
-#: libpq/auth.c:498
+#: libpq/auth.c:497
 #, c-format
 msgid "could not enable credential reception: %m"
 msgstr ""
 
-#: libpq/auth.c:585
+#: libpq/auth.c:584
 #, c-format
 msgid "error from underlying PAM layer: %s"
 msgstr ""
 
-#: libpq/auth.c:590
+#: libpq/auth.c:589
 #, c-format
 msgid "unsupported PAM conversation %d/%s"
 msgstr ""
 
-#: libpq/auth.c:622
+#: libpq/auth.c:621
 msgid "empty password returned by client"
 msgstr ""
 
-#: libpq/auth.c:682
+#: libpq/auth.c:681
 #, c-format
 msgid "could not create PAM authenticator: %s"
 msgstr ""
 
-#: libpq/auth.c:693
+#: libpq/auth.c:692
 #, c-format
 msgid "pam_set_item(PAM_USER) failed: %s"
 msgstr ""
 
-#: libpq/auth.c:704
+#: libpq/auth.c:703
 #, c-format
 msgid "pam_set_item(PAM_CONV) failed: %s"
 msgstr ""
 
-#: libpq/auth.c:715
+#: libpq/auth.c:714
 #, c-format
 msgid "pam_authenticate failed: %s"
 msgstr ""
 
-#: libpq/auth.c:726
+#: libpq/auth.c:725
 #, c-format
 msgid "pam_acct_mgmt failed: %s"
 msgstr ""
 
-#: libpq/auth.c:737
+#: libpq/auth.c:736
 #, c-format
 msgid "could not release PAM authenticator: %s"
 msgstr ""
 
-#: libpq/auth.c:775
+#: libpq/auth.c:774
 #, c-format
 msgid "expected password response, got message type %d"
 msgstr ""
 
-#: libpq/auth.c:803
+#: libpq/auth.c:802
 msgid "invalid password packet size"
 msgstr ""
 
-#: libpq/auth.c:807
+#: libpq/auth.c:806
 msgid "received password packet"
 msgstr ""
 
@@ -4656,105 +4685,105 @@ msgstr ""
 msgid "cannot use authentication method \"crypt\" because password is MD5-encrypted"
 msgstr ""
 
-#: libpq/hba.c:156
+#: libpq/hba.c:158
 #, c-format
 msgid "authentication file token too long, skipping: \"%s\""
 msgstr ""
 
-#: libpq/hba.c:324
+#: libpq/hba.c:337
 #, c-format
 msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m"
 msgstr ""
 
-#: libpq/hba.c:741
+#: libpq/hba.c:766
 #, c-format
 msgid "invalid IP address \"%s\" in file \"%s\" line %d: %s"
 msgstr ""
 
-#: libpq/hba.c:776
+#: libpq/hba.c:801
 #, c-format
 msgid "invalid IP mask \"%s\" in file \"%s\" line %d: %s"
 msgstr ""
 
-#: libpq/hba.c:791
+#: libpq/hba.c:816
 #, c-format
 msgid "IP address and mask do not match in file \"%s\" line %d"
 msgstr ""
 
-#: libpq/hba.c:849 libpq/hba.c:1105
+#: libpq/hba.c:874 libpq/hba.c:1111
 #, c-format
 msgid "invalid entry in file \"%s\" at line %d, token \"%s\""
 msgstr ""
 
-#: libpq/hba.c:855
+#: libpq/hba.c:880
 #, c-format
 msgid "missing field in file \"%s\" at end of line %d"
 msgstr ""
 
-#: libpq/hba.c:1045 guc-file.l:151
+#: guc-file.l:151 libpq/hba.c:1051
 #, c-format
 msgid "could not open configuration file \"%s\": %m"
 msgstr ""
 
-#: libpq/hba.c:1111
+#: libpq/hba.c:1117
 #, c-format
 msgid "missing entry in file \"%s\" at end of line %d"
 msgstr ""
 
-#: libpq/hba.c:1142
+#: libpq/hba.c:1148
 msgid "cannot use Ident authentication without usermap field"
 msgstr ""
 
-#: libpq/hba.c:1187
+#: libpq/hba.c:1193
 #, c-format
 msgid "could not open Ident usermap file \"%s\": %m"
 msgstr ""
 
-#: libpq/hba.c:1365
+#: libpq/hba.c:1371
 #, c-format
 msgid "could not create socket for Ident connection: %m"
 msgstr ""
 
-#: libpq/hba.c:1381
+#: libpq/hba.c:1387
 #, c-format
 msgid "could not bind to local address \"%s\": %m"
 msgstr ""
 
-#: libpq/hba.c:1393
+#: libpq/hba.c:1399
 #, c-format
 msgid "could not connect to Ident server at address \"%s\", port %s: %m"
 msgstr ""
 
-#: libpq/hba.c:1413
+#: libpq/hba.c:1419
 #, c-format
 msgid "could not send query to Ident server at address \"%s\", port %s: %m"
 msgstr ""
 
-#: libpq/hba.c:1428
+#: libpq/hba.c:1434
 #, c-format
 msgid "could not receive response from Ident server at address \"%s\", port %s: %m"
 msgstr ""
 
-#: libpq/hba.c:1438
+#: libpq/hba.c:1444
 #, c-format
 msgid "invalidly formatted response from Ident server: \"%s\""
 msgstr ""
 
-#: libpq/hba.c:1473 libpq/hba.c:1504 libpq/hba.c:1572
+#: libpq/hba.c:1479 libpq/hba.c:1510 libpq/hba.c:1578
 #, c-format
 msgid "could not get peer credentials: %m"
 msgstr ""
 
-#: libpq/hba.c:1482 libpq/hba.c:1513 libpq/hba.c:1583
+#: libpq/hba.c:1488 libpq/hba.c:1519 libpq/hba.c:1589
 #, c-format
 msgid "local user with ID %d does not exist"
 msgstr ""
 
-#: libpq/hba.c:1595
+#: libpq/hba.c:1601
 msgid "Ident authentication is not supported on local connections on this platform"
 msgstr ""
 
-#: libpq/hba.c:1638
+#: libpq/hba.c:1644
 #, c-format
 msgid "Ident protocol identifies remote user as \"%s\""
 msgstr ""
@@ -4965,7 +4994,7 @@ msgstr ""
 msgid "SELECT FOR UPDATE is not allowed in subqueries"
 msgstr ""
 
-#: optimizer/util/clauses.c:2348
+#: optimizer/util/clauses.c:2357
 #, c-format
 msgid "SQL function \"%s\" during inlining"
 msgstr ""
@@ -4975,7 +5004,7 @@ msgstr ""
 msgid "JOIN/ON clause refers to \"%s\", which is not part of JOIN"
 msgstr ""
 
-#: parser/parse_clause.c:423 gram.y:5161
+#: gram.y:5161 parser/parse_clause.c:423
 msgid "subquery in FROM must have an alias"
 msgstr ""
 
@@ -5248,7 +5277,7 @@ msgstr ""
 msgid "misplaced NOT DEFERRABLE clause"
 msgstr ""
 
-#: parser/analyze.c:2906 parser/analyze.c:2930 gram.y:2368 gram.y:2383
+#: gram.y:2368 gram.y:2383 parser/analyze.c:2906 parser/analyze.c:2930
 msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE"
 msgstr ""
 
@@ -5280,68 +5309,115 @@ msgstr ""
 msgid "could not determine data type of parameter $%d"
 msgstr ""
 
-#: scan.l:312
-msgid "unterminated /* comment"
+#: parser/parse_agg.c:120
+msgid "aggregates not allowed in WHERE clause"
 msgstr ""
 
-#: scan.l:339
-msgid "unterminated bit string literal"
+#: parser/parse_agg.c:124
+msgid "aggregates not allowed in JOIN conditions"
 msgstr ""
 
-#: scan.l:358
-msgid "unterminated hexadecimal string literal"
+#: parser/parse_agg.c:143
+msgid "aggregates not allowed in GROUP BY clause"
 msgstr ""
 
-#: scan.l:407
-msgid "unterminated quoted string"
+#: parser/parse_agg.c:316
+#, c-format
+msgid ""
+"column \"%s.%s\" must appear in the GROUP BY clause or be used in an "
+"aggregate function"
 msgstr ""
 
-#: scan.l:441
-msgid "unterminated dollar-quoted string"
+#: parser/parse_agg.c:321
+#, c-format
+msgid "subquery uses ungrouped column \"%s.%s\" from outer query"
 msgstr ""
 
-#: scan.l:453
-msgid "zero-length delimited identifier"
+#: parser/parse_coerce.c:237
+#, c-format
+msgid "inconsistent types deduced for parameter $%d"
 msgstr ""
 
-#: scan.l:466
-msgid "unterminated quoted identifier"
+#: parser/parse_coerce.c:696 parser/parse_coerce.c:723
+#: parser/parse_coerce.c:739 parser/parse_coerce.c:753
+#: parser/parse_expr.c:1658
+#, c-format
+msgid "cannot cast type %s to %s"
 msgstr ""
 
-#. translator: %s is typically "syntax error"
-#: scan.l:621
+#: parser/parse_coerce.c:726
+msgid "Input has too few columns."
+msgstr ""
+
+#: parser/parse_coerce.c:742
 #, c-format
-msgid "%s at end of input"
+msgid "Cannot cast type %s to %s in column %d."
 msgstr ""
 
-#. translator: first %s is typically "syntax error"
-#: scan.l:629
+#: parser/parse_coerce.c:756
+msgid "Input has too many columns."
+msgstr ""
+
+#. translator: first %s is name of a SQL construct, eg WHERE
+#: parser/parse_coerce.c:790
 #, c-format
-msgid "%s at or near \"%s\""
+msgid "argument of %s must be type boolean, not type %s"
 msgstr ""
 
-#: parser/parse_agg.c:120
-msgid "aggregates not allowed in WHERE clause"
+#. translator: %s is name of a SQL construct, eg WHERE
+#: parser/parse_coerce.c:798 parser/parse_coerce.c:837
+#, c-format
+msgid "argument of %s must not return a set"
 msgstr ""
 
-#: parser/parse_agg.c:124
-msgid "aggregates not allowed in JOIN conditions"
+#. translator: first %s is name of a SQL construct, eg LIMIT
+#: parser/parse_coerce.c:829
+#, c-format
+msgid "argument of %s must be type integer, not type %s"
 msgstr ""
 
-#: parser/parse_agg.c:143
-msgid "aggregates not allowed in GROUP BY clause"
+#: parser/parse_coerce.c:891
+#, c-format
+msgid "%s types %s and %s cannot be matched"
 msgstr ""
 
-#: parser/parse_agg.c:316
+#. translator: first %s is name of a SQL construct, eg CASE
+#: parser/parse_coerce.c:953
 #, c-format
+msgid "%s could not convert type %s to %s"
+msgstr ""
+
+#: parser/parse_coerce.c:1129
+msgid "arguments declared \"anyelement\" are not all alike"
+msgstr ""
+
+#: parser/parse_coerce.c:1146
+msgid "arguments declared \"anyarray\" are not all alike"
+msgstr ""
+
+#: parser/parse_coerce.c:1175 parser/parse_coerce.c:1287
+#: parser/parse_coerce.c:1314
+#, c-format
+msgid "argument declared \"anyarray\" is not an array but type %s"
+msgstr ""
+
+#: parser/parse_coerce.c:1192
 msgid ""
-"column \"%s.%s\" must appear in the GROUP BY clause or be used in an "
-"aggregate function"
+"argument declared \"anyarray\" is not consistent with argument declared "
+"\"anyelement\""
 msgstr ""
 
-#: parser/parse_agg.c:321
+#: parser/parse_coerce.c:1203
+msgid ""
+"could not determine anyarray/anyelement type because input has type \"unknown"
+"\""
+msgstr ""
+
+#: parser/parse_coerce.c:1228 parser/parse_coerce.c:1245
+#: parser/parse_coerce.c:1299 parser/parse_expr.c:794 parser/parse_expr.c:1351
+#: parser/parse_expr.c:1390 parser/parse_oper.c:920
 #, c-format
-msgid "subquery uses ungrouped column \"%s.%s\" from outer query"
+msgid "could not find array type for data type %s"
 msgstr ""
 
 #: parser/parse_relation.c:174 parser/parse_relation.c:189
@@ -5407,93 +5483,6 @@ msgstr ""
 msgid "adding missing FROM-clause entry for table \"%s\""
 msgstr ""
 
-#: parser/parse_coerce.c:237
-#, c-format
-msgid "inconsistent types deduced for parameter $%d"
-msgstr ""
-
-#: parser/parse_coerce.c:691 parser/parse_coerce.c:718
-#: parser/parse_coerce.c:734 parser/parse_coerce.c:748
-#: parser/parse_expr.c:1654
-#, c-format
-msgid "cannot cast type %s to %s"
-msgstr ""
-
-#: parser/parse_coerce.c:721
-msgid "Input has too few columns."
-msgstr ""
-
-#: parser/parse_coerce.c:737
-#, c-format
-msgid "Cannot cast type %s to %s in column %d."
-msgstr ""
-
-#: parser/parse_coerce.c:751
-msgid "Input has too many columns."
-msgstr ""
-
-#. translator: first %s is name of a SQL construct, eg WHERE
-#: parser/parse_coerce.c:785
-#, c-format
-msgid "argument of %s must be type boolean, not type %s"
-msgstr ""
-
-#. translator: %s is name of a SQL construct, eg WHERE
-#: parser/parse_coerce.c:793 parser/parse_coerce.c:832
-#, c-format
-msgid "argument of %s must not return a set"
-msgstr ""
-
-#. translator: first %s is name of a SQL construct, eg LIMIT
-#: parser/parse_coerce.c:824
-#, c-format
-msgid "argument of %s must be type integer, not type %s"
-msgstr ""
-
-#: parser/parse_coerce.c:886
-#, c-format
-msgid "%s types %s and %s cannot be matched"
-msgstr ""
-
-#. translator: first %s is name of a SQL construct, eg CASE
-#: parser/parse_coerce.c:948
-#, c-format
-msgid "%s could not convert type %s to %s"
-msgstr ""
-
-#: parser/parse_coerce.c:1124
-msgid "arguments declared \"anyelement\" are not all alike"
-msgstr ""
-
-#: parser/parse_coerce.c:1141
-msgid "arguments declared \"anyarray\" are not all alike"
-msgstr ""
-
-#: parser/parse_coerce.c:1170 parser/parse_coerce.c:1282
-#: parser/parse_coerce.c:1309
-#, c-format
-msgid "argument declared \"anyarray\" is not an array but type %s"
-msgstr ""
-
-#: parser/parse_coerce.c:1187
-msgid ""
-"argument declared \"anyarray\" is not consistent with argument declared "
-"\"anyelement\""
-msgstr ""
-
-#: parser/parse_coerce.c:1198
-msgid ""
-"could not determine anyarray/anyelement type because input has type \"unknown"
-"\""
-msgstr ""
-
-#: parser/parse_coerce.c:1223 parser/parse_coerce.c:1240
-#: parser/parse_coerce.c:1294 parser/parse_expr.c:794 parser/parse_expr.c:1350
-#: parser/parse_expr.c:1389 parser/parse_oper.c:920
-#, c-format
-msgid "could not find array type for data type %s"
-msgstr ""
-
 #: parser/parse_expr.c:361
 msgid "NULLIF requires = operator to yield boolean"
 msgstr ""
@@ -5533,16 +5522,16 @@ msgstr ""
 msgid "subquery has too few columns"
 msgstr ""
 
-#: parser/parse_expr.c:1688 parser/parse_expr.c:1767
+#: parser/parse_expr.c:1692 parser/parse_expr.c:1771
 msgid "unequal number of entries in row expression"
 msgstr ""
 
-#: parser/parse_expr.c:1709
+#: parser/parse_expr.c:1713
 #, c-format
 msgid "operator %s is not supported for row expressions"
 msgstr ""
 
-#: parser/parse_expr.c:1804
+#: parser/parse_expr.c:1808
 msgid "IS DISTINCT FROM requires = operator to yield boolean"
 msgstr ""
 
@@ -5637,7 +5626,7 @@ msgstr ""
 msgid "operator does not exist: %s"
 msgstr ""
 
-#: parser/parse_oper.c:185 utils/adt/arrayfuncs.c:2581
+#: parser/parse_oper.c:185 utils/adt/arrayfuncs.c:2582
 #: utils/adt/ri_triggers.c:3642
 #, c-format
 msgid "could not identify an equality operator for type %s"
@@ -5732,6 +5721,76 @@ msgstr ""
 msgid "SELECT * with no tables specified is not valid"
 msgstr ""
 
+#: parser/parse_type.c:62
+#, c-format
+msgid "improper %%TYPE reference (too few dotted names): %s"
+msgstr ""
+
+#: parser/parse_type.c:83
+#, c-format
+msgid "improper %%TYPE reference (too many dotted names): %s"
+msgstr ""
+
+#: parser/parse_type.c:103
+#, c-format
+msgid "type reference %s converted to %s"
+msgstr ""
+
+#: parser/parse_type.c:206 parser/parse_type.c:237 utils/cache/typcache.c:155
+#, c-format
+msgid "type \"%s\" is only a shell"
+msgstr ""
+
+#: parser/parse_type.c:372 parser/parse_type.c:469
+#, c-format
+msgid "invalid type name \"%s\""
+msgstr ""
+
+#: parser/scansup.c:182
+#, c-format
+msgid "identifier \"%s\" will be truncated to \"%.*s\""
+msgstr ""
+
+#: scan.l:312
+msgid "unterminated /* comment"
+msgstr ""
+
+#: scan.l:339
+msgid "unterminated bit string literal"
+msgstr ""
+
+#: scan.l:358
+msgid "unterminated hexadecimal string literal"
+msgstr ""
+
+#: scan.l:407
+msgid "unterminated quoted string"
+msgstr ""
+
+#: scan.l:441
+msgid "unterminated dollar-quoted string"
+msgstr ""
+
+#: scan.l:453
+msgid "zero-length delimited identifier"
+msgstr ""
+
+#: scan.l:466
+msgid "unterminated quoted identifier"
+msgstr ""
+
+#. translator: %s is typically "syntax error"
+#: scan.l:621
+#, c-format
+msgid "%s at end of input"
+msgstr ""
+
+#. translator: first %s is typically "syntax error"
+#: scan.l:629
+#, c-format
+msgid "%s at or near \"%s\""
+msgstr ""
+
 #: y.tab.c:9499
 msgid "syntax error: cannot back up"
 msgstr ""
@@ -5750,14 +5809,14 @@ msgstr ""
 msgid "INTERVAL(%d) precision reduced to maximum allowed, %d"
 msgstr ""
 
-#: utils/adt/ri_triggers.c:302 utils/adt/ri_triggers.c:364
+#: gram.y:1886 utils/adt/ri_triggers.c:302 utils/adt/ri_triggers.c:364
 #: utils/adt/ri_triggers.c:543 utils/adt/ri_triggers.c:782
 #: utils/adt/ri_triggers.c:973 utils/adt/ri_triggers.c:1134
 #: utils/adt/ri_triggers.c:1318 utils/adt/ri_triggers.c:1487
 #: utils/adt/ri_triggers.c:1668 utils/adt/ri_triggers.c:1838
 #: utils/adt/ri_triggers.c:2056 utils/adt/ri_triggers.c:2236
 #: utils/adt/ri_triggers.c:2441 utils/adt/ri_triggers.c:2537
-#: utils/adt/ri_triggers.c:2660 gram.y:1886
+#: utils/adt/ri_triggers.c:2660
 msgid "MATCH PARTIAL not yet implemented"
 msgstr ""
 
@@ -5781,11 +5840,11 @@ msgstr ""
 msgid "CREATE FUNCTION / INOUT parameters are not implemented"
 msgstr ""
 
-#: utils/adt/regproc.c:639 gram.y:3491
+#: gram.y:3491 utils/adt/regproc.c:639
 msgid "missing argument"
 msgstr ""
 
-#: utils/adt/regproc.c:640 gram.y:3492
+#: gram.y:3492 utils/adt/regproc.c:640
 msgid "Use NONE to denote the missing argument of a unary operator."
 msgstr ""
 
@@ -5951,36 +6010,6 @@ msgstr ""
 msgid "multiple LIMIT clauses not allowed"
 msgstr ""
 
-#: parser/parse_type.c:62
-#, c-format
-msgid "improper %%TYPE reference (too few dotted names): %s"
-msgstr ""
-
-#: parser/parse_type.c:83
-#, c-format
-msgid "improper %%TYPE reference (too many dotted names): %s"
-msgstr ""
-
-#: parser/parse_type.c:103
-#, c-format
-msgid "type reference %s converted to %s"
-msgstr ""
-
-#: parser/parse_type.c:206 parser/parse_type.c:237 utils/cache/typcache.c:155
-#, c-format
-msgid "type \"%s\" is only a shell"
-msgstr ""
-
-#: parser/parse_type.c:372 parser/parse_type.c:467
-#, c-format
-msgid "invalid type name \"%s\""
-msgstr ""
-
-#: parser/scansup.c:182
-#, c-format
-msgid "identifier \"%s\" will be truncated to \"%.*s\""
-msgstr ""
-
 #: port/pg_shmem.c:101 port/sysv_shmem.c:101
 #, c-format
 msgid "could not create shared memory segment: %m"
@@ -6032,7 +6061,7 @@ msgid ""
 "configuration."
 msgstr ""
 
-#: port/pg_shmem.c:408 port/sysv_shmem.c:408
+#: port/pg_shmem.c:380 port/sysv_shmem.c:380
 #, c-format
 msgid "could not stat data directory \"%s\": %m"
 msgstr ""
@@ -6348,157 +6377,157 @@ msgstr ""
 msgid "sorry, too many clients already"
 msgstr ""
 
-#: postmaster/postmaster.c:1791
+#: postmaster/postmaster.c:1789
 msgid "received SIGHUP, reloading configuration files"
 msgstr ""
 
-#: postmaster/postmaster.c:1843
+#: postmaster/postmaster.c:1841
 msgid "received smart shutdown request"
 msgstr ""
 
-#: postmaster/postmaster.c:1879
+#: postmaster/postmaster.c:1877
 msgid "received fast shutdown request"
 msgstr ""
 
-#: postmaster/postmaster.c:1886
+#: postmaster/postmaster.c:1884
 msgid "aborting any active transactions"
 msgstr ""
 
-#: postmaster/postmaster.c:1924
+#: postmaster/postmaster.c:1922
 msgid "received immediate shutdown request"
 msgstr ""
 
-#: postmaster/postmaster.c:1997
+#: postmaster/postmaster.c:1995
 msgid "startup process"
 msgstr ""
 
-#: postmaster/postmaster.c:2000
+#: postmaster/postmaster.c:1998
 msgid "aborting startup due to startup process failure"
 msgstr ""
 
-#: postmaster/postmaster.c:2063
+#: postmaster/postmaster.c:2061
 msgid "background writer process"
 msgstr ""
 
-#: postmaster/postmaster.c:2076
+#: postmaster/postmaster.c:2074
 msgid "archiver process"
 msgstr ""
 
-#: postmaster/postmaster.c:2093
+#: postmaster/postmaster.c:2091
 msgid "statistics collector process"
 msgstr ""
 
-#: postmaster/postmaster.c:2107
+#: postmaster/postmaster.c:2105
 msgid "system logger process"
 msgstr ""
 
-#: postmaster/postmaster.c:2128
+#: postmaster/postmaster.c:2126
 msgid "all server processes terminated; reinitializing"
 msgstr ""
 
-#: postmaster/postmaster.c:2174 postmaster/postmaster.c:2184
+#: postmaster/postmaster.c:2172 postmaster/postmaster.c:2182
 msgid "server process"
 msgstr ""
 
-#: postmaster/postmaster.c:2229
+#: postmaster/postmaster.c:2227
 msgid "terminating any other active server processes"
 msgstr ""
 
-#: postmaster/postmaster.c:2326
+#: postmaster/postmaster.c:2324
 #, c-format
 msgid "%s (PID %d) exited with exit code %d"
 msgstr ""
 
-#: postmaster/postmaster.c:2335
+#: postmaster/postmaster.c:2333
 #, c-format
 msgid "%s (PID %d) was terminated by signal %d"
 msgstr ""
 
-#: postmaster/postmaster.c:2344
+#: postmaster/postmaster.c:2342
 #, c-format
 msgid "%s (PID %d) exited with unexpected status %d"
 msgstr ""
 
-#: postmaster/postmaster.c:2469
+#: postmaster/postmaster.c:2467
 #, c-format
 msgid "could not fork new process for connection: %m"
 msgstr ""
 
-#: postmaster/postmaster.c:2508
+#: postmaster/postmaster.c:2506
 msgid "could not fork new process for connection: "
 msgstr ""
 
-#: postmaster/postmaster.c:2647
+#: postmaster/postmaster.c:2645
 #, c-format
 msgid "getnameinfo_all() failed: %s"
 msgstr ""
 
-#: postmaster/postmaster.c:2656
+#: postmaster/postmaster.c:2654
 #, c-format
 msgid "connection received: host=%s port=%s"
 msgstr ""
 
-#: postmaster/postmaster.c:2728
+#: postmaster/postmaster.c:2726
 #, c-format
 msgid "connection authorized: user=%s database=%s"
 msgstr ""
 
-#: postmaster/postmaster.c:2946
+#: postmaster/postmaster.c:2944
 #, c-format
 msgid "could not execute server process \"%s\": %m"
 msgstr ""
 
-#: postmaster/postmaster.c:3540
+#: postmaster/postmaster.c:3550
 #, c-format
 msgid "could not fork startup process: %m"
 msgstr ""
 
-#: postmaster/postmaster.c:3544
+#: postmaster/postmaster.c:3554
 #, c-format
 msgid "could not fork background writer process: %m"
 msgstr ""
 
-#: postmaster/postmaster.c:3548
+#: postmaster/postmaster.c:3558
 #, c-format
 msgid "could not fork process: %m"
 msgstr ""
 
-#: postmaster/postmaster.c:3722
+#: postmaster/postmaster.c:3732
 #, c-format
 msgid "could not duplicate socket %d for use in backend: error code %d"
 msgstr ""
 
-#: postmaster/postmaster.c:3751
+#: postmaster/postmaster.c:3761
 #, c-format
 msgid "could not create inherited socket: error code %d\n"
 msgstr ""
 
-#: postmaster/postmaster.c:3779 postmaster/postmaster.c:3786
+#: postmaster/postmaster.c:3790 postmaster/postmaster.c:3797
 #, c-format
 msgid "could not read from backend variables file \"%s\": %s\n"
 msgstr ""
 
-#: postmaster/postmaster.c:3795
+#: postmaster/postmaster.c:3806
 #, c-format
 msgid "could not remove file \"%s\": %s\n"
 msgstr ""
 
-#: postmaster/postmaster.c:3810
+#: postmaster/postmaster.c:3819
 #, c-format
 msgid "could not map view of backend variables: error code %d\n"
 msgstr ""
 
-#: postmaster/postmaster.c:3819
+#: postmaster/postmaster.c:3828
 #, c-format
 msgid "could not unmap view of backend variables: error code %d\n"
 msgstr ""
 
-#: postmaster/postmaster.c:3826
+#: postmaster/postmaster.c:3835
 #, c-format
 msgid "could not close handle to backend parameter variables: error code %d\n"
 msgstr ""
 
-#: postmaster/postmaster.c:4065
+#: postmaster/postmaster.c:4077
 #, c-format
 msgid "could not wait on child process handle: error code %d\n"
 msgstr ""
@@ -6584,7 +6613,7 @@ msgstr ""
 msgid "could not send test message on socket for statistics collector: %m"
 msgstr ""
 
-#: postmaster/pgstat.c:368 postmaster/pgstat.c:1567
+#: postmaster/pgstat.c:368 postmaster/pgstat.c:1565
 #, c-format
 msgid "select() failed in statistics collector: %m"
 msgstr ""
@@ -6602,111 +6631,111 @@ msgstr ""
 msgid "incorrect test message transmission on socket for statistics collector"
 msgstr ""
 
-#: postmaster/pgstat.c:420
-msgid "disabling statistics collector for lack of working socket"
-msgstr ""
-
-#: postmaster/pgstat.c:434
+#: postmaster/pgstat.c:429
 #, c-format
 msgid "could not set statistics collector socket to nonblocking mode: %m"
 msgstr ""
 
-#: postmaster/pgstat.c:567
+#: postmaster/pgstat.c:439
+msgid "disabling statistics collector for lack of working socket"
+msgstr ""
+
+#: postmaster/pgstat.c:565
 msgid "statistics collector startup skipped"
 msgstr ""
 
-#: postmaster/pgstat.c:601
+#: postmaster/pgstat.c:599
 #, c-format
 msgid "could not fork statistics buffer: %m"
 msgstr ""
 
-#: postmaster/pgstat.c:959
+#: postmaster/pgstat.c:957
 msgid "must be superuser to reset statistics counters"
 msgstr ""
 
-#: postmaster/pgstat.c:1381
+#: postmaster/pgstat.c:1379
 #, c-format
 msgid "could not create pipe for statistics buffer: %m"
 msgstr ""
 
-#: postmaster/pgstat.c:1393
+#: postmaster/pgstat.c:1391
 #, c-format
 msgid "could not fork statistics collector: %m"
 msgstr ""
 
-#: postmaster/pgstat.c:1608
+#: postmaster/pgstat.c:1606
 #, c-format
 msgid "could not read from statistics collector pipe: %m"
 msgstr ""
 
-#: postmaster/pgstat.c:1629
+#: postmaster/pgstat.c:1627
 msgid "invalid statistics message length"
 msgstr ""
 
-#: postmaster/pgstat.c:1774
+#: postmaster/pgstat.c:1772
 #, c-format
 msgid "could not set statistics collector pipe to nonblocking mode: %m"
 msgstr ""
 
-#: postmaster/pgstat.c:1805
+#: postmaster/pgstat.c:1803
 msgid "statistics buffer is full"
 msgstr ""
 
-#: postmaster/pgstat.c:1836
+#: postmaster/pgstat.c:1834
 #, c-format
 msgid "select() failed in statistics buffer: %m"
 msgstr ""
 
-#: postmaster/pgstat.c:1850
+#: postmaster/pgstat.c:1848
 #, c-format
 msgid "could not read statistics message: %m"
 msgstr ""
 
-#: postmaster/pgstat.c:1913
+#: postmaster/pgstat.c:1911
 #, c-format
 msgid "could not write to statistics collector pipe: %m"
 msgstr ""
 
-#: postmaster/pgstat.c:1988
+#: postmaster/pgstat.c:1986
 #, c-format
 msgid "invalid server process ID %d"
 msgstr ""
 
-#: postmaster/pgstat.c:2047 postmaster/pgstat.c:2122 postmaster/pgstat.c:2720
+#: postmaster/pgstat.c:2045 postmaster/pgstat.c:2120 postmaster/pgstat.c:2718
 msgid "out of memory in statistics collector --- abort"
 msgstr ""
 
-#: postmaster/pgstat.c:2170
+#: postmaster/pgstat.c:2168
 #, c-format
 msgid "could not open temporary statistics file \"%s\": %m"
 msgstr ""
 
-#: postmaster/pgstat.c:2196
+#: postmaster/pgstat.c:2194
 msgid "database hash table corrupted during cleanup --- abort"
 msgstr ""
 
-#: postmaster/pgstat.c:2231
+#: postmaster/pgstat.c:2229
 #, c-format
 msgid "tables hash table for database %u corrupted during cleanup --- abort"
 msgstr ""
 
-#: postmaster/pgstat.c:2279
+#: postmaster/pgstat.c:2277
 #, c-format
 msgid "could not close temporary statistics file \"%s\": %m"
 msgstr ""
 
-#: postmaster/pgstat.c:2288
+#: postmaster/pgstat.c:2286
 #, c-format
 msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m"
 msgstr ""
 
-#: postmaster/pgstat.c:2310
+#: postmaster/pgstat.c:2308
 msgid "dead-server-process hash table corrupted during cleanup --- abort"
 msgstr ""
 
-#: postmaster/pgstat.c:2417 postmaster/pgstat.c:2437 postmaster/pgstat.c:2483
-#: postmaster/pgstat.c:2504 postmaster/pgstat.c:2521 postmaster/pgstat.c:2555
-#: postmaster/pgstat.c:2584
+#: postmaster/pgstat.c:2415 postmaster/pgstat.c:2435 postmaster/pgstat.c:2481
+#: postmaster/pgstat.c:2502 postmaster/pgstat.c:2519 postmaster/pgstat.c:2553
+#: postmaster/pgstat.c:2582
 msgid "corrupted pgstat.stat file"
 msgstr ""
 
@@ -6905,12 +6934,6 @@ msgstr ""
 msgid "conditional utility statements are not implemented"
 msgstr ""
 
-#: storage/buffer/buf_table.c:93 storage/freespace/freespace.c:1014
-#: storage/ipc/shmem.c:185 storage/ipc/shmem.c:246 storage/ipc/shmem.c:386
-#: storage/lmgr/lock.c:558 storage/lmgr/lock.c:621 storage/lmgr/proc.c:179
-msgid "out of shared memory"
-msgstr ""
-
 #: storage/buffer/bufmgr.c:217
 #, c-format
 msgid "invalid page header in block %u of relation \"%s\"; zeroing out page"
@@ -6921,34 +6944,40 @@ msgstr ""
 msgid "invalid page header in block %u of relation \"%s\""
 msgstr ""
 
-#: storage/buffer/bufmgr.c:1998
+#: storage/buffer/bufmgr.c:2017
 #, c-format
 msgid "could not write block %u of %u/%u/%u"
 msgstr ""
 
-#: storage/buffer/bufmgr.c:2003
+#: storage/buffer/bufmgr.c:2022
 msgid "Multiple failures --- write error may be permanent."
 msgstr ""
 
-#: storage/buffer/bufmgr.c:2021
+#: storage/buffer/bufmgr.c:2040
 #, c-format
 msgid "writing block %u of relation %u/%u/%u"
 msgstr ""
 
+#: storage/buffer/buf_table.c:93 storage/freespace/freespace.c:1014
+#: storage/ipc/shmem.c:185 storage/ipc/shmem.c:246 storage/ipc/shmem.c:386
+#: storage/lmgr/lock.c:558 storage/lmgr/lock.c:621 storage/lmgr/proc.c:179
+msgid "out of shared memory"
+msgstr ""
+
 #: storage/buffer/localbuf.c:103
 msgid "no empty local buffer available"
 msgstr ""
 
-#: storage/file/fd.c:355
+#: storage/file/fd.c:356
 msgid "insufficient file descriptors available to start server process"
 msgstr ""
 
-#: storage/file/fd.c:356
+#: storage/file/fd.c:357
 #, c-format
 msgid "System allows %d, we need at least %d."
 msgstr ""
 
-#: storage/file/fd.c:397 storage/file/fd.c:1180 storage/file/fd.c:1295
+#: storage/file/fd.c:398 storage/file/fd.c:1181 storage/file/fd.c:1296
 #, c-format
 msgid "out of file descriptors: %m; release and retry"
 msgstr ""
@@ -7086,7 +7115,7 @@ msgid "could not sync relation %u/%u/%u: %m"
 msgstr ""
 
 #: tcop/postgres.c:337 tcop/postgres.c:349 tcop/postgres.c:360
-#: tcop/postgres.c:372 tcop/postgres.c:3197
+#: tcop/postgres.c:372 tcop/postgres.c:3218
 #, c-format
 msgid "invalid frontend message type %d"
 msgstr ""
@@ -7268,36 +7297,36 @@ msgstr ""
 msgid "assert checking is not compiled in"
 msgstr ""
 
-#: tcop/postgres.c:2607
+#: tcop/postgres.c:2652
 msgid "invalid command-line arguments for server process"
 msgstr ""
 
-#: tcop/postgres.c:2608 tcop/postgres.c:2624
+#: tcop/postgres.c:2653 tcop/postgres.c:2669
 #, c-format
 msgid "Try \"%s --help\" for more information."
 msgstr ""
 
-#: tcop/postgres.c:2622
+#: tcop/postgres.c:2667
 #, c-format
 msgid "%s: invalid command-line arguments"
 msgstr ""
 
-#: tcop/postgres.c:2632
+#: tcop/postgres.c:2677
 #, c-format
 msgid "%s: no database nor user name specified"
 msgstr ""
 
-#: tcop/postgres.c:3110
+#: tcop/postgres.c:3131
 #, c-format
 msgid "invalid CLOSE message subtype %d"
 msgstr ""
 
-#: tcop/postgres.c:3140
+#: tcop/postgres.c:3161
 #, c-format
 msgid "invalid DESCRIBE message subtype %d"
 msgstr ""
 
-#: tcop/postgres.c:3381
+#: tcop/postgres.c:3402
 #, c-format
 msgid "disconnection: session time: %s%s%s%s%s"
 msgstr ""
@@ -7396,20 +7425,20 @@ msgstr ""
 msgid "argument must be empty or one-dimensional array"
 msgstr ""
 
-#: utils/adt/array_userfuncs.c:198 utils/adt/array_userfuncs.c:210
+#: utils/adt/array_userfuncs.c:175 utils/adt/array_userfuncs.c:214
 #: utils/adt/array_userfuncs.c:247 utils/adt/array_userfuncs.c:280
 #: utils/adt/array_userfuncs.c:308
 msgid "cannot concatenate incompatible arrays"
 msgstr ""
 
-#: utils/adt/array_userfuncs.c:199
+#: utils/adt/array_userfuncs.c:176
 #, c-format
-msgid "Arrays of %d and %d dimensions are not compatible for concatenation."
+msgid "Arrays with element types %s and %s are not compatible for concatenation."
 msgstr ""
 
-#: utils/adt/array_userfuncs.c:211
+#: utils/adt/array_userfuncs.c:215
 #, c-format
-msgid "Arrays with element types %s and %s are not compatible for concatenation."
+msgid "Arrays of %d and %d dimensions are not compatible for concatenation."
 msgstr ""
 
 #: utils/adt/array_userfuncs.c:248
@@ -7428,7 +7457,7 @@ msgid "invalid array element type OID: %u"
 msgstr ""
 
 #: utils/adt/array_userfuncs.c:358 utils/adt/arrayfuncs.c:1149
-#: utils/adt/arrayfuncs.c:2417
+#: utils/adt/arrayfuncs.c:2423
 #, c-format
 msgid "invalid number of dimensions: %d"
 msgstr ""
@@ -7523,11 +7552,11 @@ msgstr ""
 msgid "function \"%s\" does not exist"
 msgstr ""
 
-#: utils/adt/like.c:453 utils/adt/like_match.c:291 utils/adt/regexp.c:461
+#: utils/adt/like.c:453 utils/adt/like_match.c:291 utils/adt/regexp.c:480
 msgid "invalid escape string"
 msgstr ""
 
-#: utils/adt/like.c:454 utils/adt/like_match.c:292 utils/adt/regexp.c:462
+#: utils/adt/like.c:454 utils/adt/like_match.c:292 utils/adt/regexp.c:481
 msgid "Escape string must be empty or one character."
 msgstr ""
 
@@ -7614,32 +7643,32 @@ msgstr ""
 msgid "source array too small"
 msgstr ""
 
-#: utils/adt/arrayfuncs.c:2319 utils/adt/arrayfuncs.c:3321
+#: utils/adt/arrayfuncs.c:2325 utils/adt/arrayfuncs.c:3322
 msgid "null array elements not supported"
 msgstr ""
 
-#: utils/adt/arrayfuncs.c:2559 utils/adt/arrayfuncs.c:2714
+#: utils/adt/arrayfuncs.c:2560 utils/adt/arrayfuncs.c:2715
 msgid "cannot compare arrays of different element types"
 msgstr ""
 
-#: utils/adt/arrayfuncs.c:2731
+#: utils/adt/arrayfuncs.c:2732
 #, c-format
 msgid "could not identify a comparison function for type %s"
 msgstr ""
 
-#: utils/adt/arrayfuncs.c:3130
+#: utils/adt/arrayfuncs.c:3131
 msgid "could not determine target array type"
 msgstr ""
 
-#: utils/adt/arrayfuncs.c:3136
+#: utils/adt/arrayfuncs.c:3137
 msgid "target type is not an array"
 msgstr ""
 
-#: utils/adt/arrayfuncs.c:3148
+#: utils/adt/arrayfuncs.c:3149
 msgid "array coercion to domain type elements not currently supported"
 msgstr ""
 
-#: utils/adt/ascii.c:68
+#: utils/adt/ascii.c:76
 #, c-format
 msgid "encoding conversion from %s to ASCII not supported"
 msgstr ""
@@ -7661,7 +7690,7 @@ msgstr ""
 #: utils/adt/int.c:1001 utils/adt/int.c:1025 utils/adt/int.c:1040
 #: utils/adt/int.c:1055 utils/adt/int.c:1070 utils/adt/int8.c:597
 #: utils/adt/int8.c:642 utils/adt/int8.c:765 utils/adt/int8.c:855
-#: utils/adt/numeric.c:3820 utils/adt/timestamp.c:2197
+#: utils/adt/numeric.c:3820 utils/adt/timestamp.c:2196
 msgid "division by zero"
 msgstr ""
 
@@ -7677,20 +7706,20 @@ msgstr ""
 #: utils/adt/date.c:1374 utils/adt/date.c:2252 utils/adt/formatting.c:2895
 #: utils/adt/formatting.c:2920 utils/adt/formatting.c:2979
 #: utils/adt/nabstime.c:570 utils/adt/nabstime.c:613 utils/adt/nabstime.c:643
-#: utils/adt/nabstime.c:686 utils/adt/timestamp.c:153
-#: utils/adt/timestamp.c:187 utils/adt/timestamp.c:395
-#: utils/adt/timestamp.c:431 utils/adt/timestamp.c:1929
-#: utils/adt/timestamp.c:1950 utils/adt/timestamp.c:2008
-#: utils/adt/timestamp.c:2031 utils/adt/timestamp.c:2413
-#: utils/adt/timestamp.c:2524 utils/adt/timestamp.c:2746
-#: utils/adt/timestamp.c:2819 utils/adt/timestamp.c:2866
-#: utils/adt/timestamp.c:2962 utils/adt/timestamp.c:3245
-#: utils/adt/timestamp.c:3378 utils/adt/timestamp.c:3385
-#: utils/adt/timestamp.c:3398 utils/adt/timestamp.c:3406
-#: utils/adt/timestamp.c:3469 utils/adt/timestamp.c:3604
-#: utils/adt/timestamp.c:3612 utils/adt/timestamp.c:3879
-#: utils/adt/timestamp.c:3886 utils/adt/timestamp.c:3914
-#: utils/adt/timestamp.c:3918
+#: utils/adt/nabstime.c:686 utils/adt/timestamp.c:152
+#: utils/adt/timestamp.c:186 utils/adt/timestamp.c:394
+#: utils/adt/timestamp.c:430 utils/adt/timestamp.c:1928
+#: utils/adt/timestamp.c:1949 utils/adt/timestamp.c:2007
+#: utils/adt/timestamp.c:2030 utils/adt/timestamp.c:2412
+#: utils/adt/timestamp.c:2530 utils/adt/timestamp.c:2752
+#: utils/adt/timestamp.c:2825 utils/adt/timestamp.c:2872
+#: utils/adt/timestamp.c:2968 utils/adt/timestamp.c:3251
+#: utils/adt/timestamp.c:3384 utils/adt/timestamp.c:3391
+#: utils/adt/timestamp.c:3404 utils/adt/timestamp.c:3412
+#: utils/adt/timestamp.c:3475 utils/adt/timestamp.c:3610
+#: utils/adt/timestamp.c:3618 utils/adt/timestamp.c:3885
+#: utils/adt/timestamp.c:3892 utils/adt/timestamp.c:3920
+#: utils/adt/timestamp.c:3924
 msgid "timestamp out of range"
 msgstr ""
 
@@ -7723,7 +7752,7 @@ msgstr ""
 msgid "\"time with time zone\" units \"%s\" not recognized"
 msgstr ""
 
-#: utils/adt/date.c:2510 utils/adt/timestamp.c:3810 utils/adt/timestamp.c:3959
+#: utils/adt/date.c:2510 utils/adt/timestamp.c:3816 utils/adt/timestamp.c:3965
 #, c-format
 msgid "time zone \"%s\" not recognized"
 msgstr ""
@@ -8372,7 +8401,12 @@ msgstr ""
 msgid "cannot display a value of type anyelement"
 msgstr ""
 
-#: utils/adt/regexp.c:178
+#: utils/adt/regexp.c:155 utils/adt/regexp.c:241
+#, c-format
+msgid "regular expression failed: %s"
+msgstr ""
+
+#: utils/adt/regexp.c:187
 #, c-format
 msgid "invalid regular expression: %s"
 msgstr ""
@@ -8549,97 +8583,97 @@ msgstr ""
 msgid "improper binary format in record column %d"
 msgstr ""
 
-#: utils/adt/timestamp.c:98 utils/adt/timestamp.c:339
+#: utils/adt/timestamp.c:97 utils/adt/timestamp.c:338
 #, c-format
 msgid "timestamp out of range: \"%s\""
 msgstr ""
 
-#: utils/adt/timestamp.c:116 utils/adt/timestamp.c:357
-#: utils/adt/timestamp.c:536
+#: utils/adt/timestamp.c:115 utils/adt/timestamp.c:356
+#: utils/adt/timestamp.c:535
 #, c-format
 msgid "date/time value \"%s\" is no longer supported"
 msgstr ""
 
-#: utils/adt/timestamp.c:271
+#: utils/adt/timestamp.c:270
 #, c-format
 msgid "timestamp(%d) precision must be between %d and %d"
 msgstr ""
 
-#: utils/adt/timestamp.c:529 utils/adt/timestamp.c:2408
-#: utils/adt/timestamp.c:2519 utils/adt/timestamp.c:3054
+#: utils/adt/timestamp.c:528 utils/adt/timestamp.c:2407
+#: utils/adt/timestamp.c:2525 utils/adt/timestamp.c:3060
 msgid "interval out of range"
 msgstr ""
 
-#: utils/adt/timestamp.c:882
+#: utils/adt/timestamp.c:881
 #, c-format
 msgid "interval(%d) precision must be between %d and %d"
 msgstr ""
 
-#: utils/adt/timestamp.c:1882
+#: utils/adt/timestamp.c:1881
 msgid "cannot subtract infinite timestamps"
 msgstr ""
 
-#: utils/adt/timestamp.c:2579
+#: utils/adt/timestamp.c:2585
 #, c-format
 msgid "invalid input syntax for type timestamp: \"%s\""
 msgstr ""
 
-#: utils/adt/timestamp.c:2639
+#: utils/adt/timestamp.c:2645
 #, c-format
 msgid "invalid input syntax for type timestamp with time zone: \"%s\""
 msgstr ""
 
-#: utils/adt/timestamp.c:2700
+#: utils/adt/timestamp.c:2706
 #, c-format
 msgid "invalid input syntax for type interval: \"%s\""
 msgstr ""
 
-#: utils/adt/timestamp.c:2811 utils/adt/timestamp.c:3357
-#: utils/adt/timestamp.c:3414
+#: utils/adt/timestamp.c:2817 utils/adt/timestamp.c:3363
+#: utils/adt/timestamp.c:3420
 #, c-format
 msgid "timestamp units \"%s\" not supported"
 msgstr ""
 
-#: utils/adt/timestamp.c:2825 utils/adt/timestamp.c:3424
+#: utils/adt/timestamp.c:2831 utils/adt/timestamp.c:3430
 #, c-format
 msgid "timestamp units \"%s\" not recognized"
 msgstr ""
 
-#: utils/adt/timestamp.c:2951 utils/adt/timestamp.c:3582
-#: utils/adt/timestamp.c:3620
+#: utils/adt/timestamp.c:2957 utils/adt/timestamp.c:3588
+#: utils/adt/timestamp.c:3626
 #, c-format
 msgid "timestamp with time zone units \"%s\" not supported"
 msgstr ""
 
-#: utils/adt/timestamp.c:2968 utils/adt/timestamp.c:3629
+#: utils/adt/timestamp.c:2974 utils/adt/timestamp.c:3635
 #, c-format
 msgid "timestamp with time zone units \"%s\" not recognized"
 msgstr ""
 
-#: utils/adt/timestamp.c:3047 utils/adt/timestamp.c:3735
+#: utils/adt/timestamp.c:3053 utils/adt/timestamp.c:3741
 #, c-format
 msgid "interval units \"%s\" not supported"
 msgstr ""
 
-#: utils/adt/timestamp.c:3063 utils/adt/timestamp.c:3765
+#: utils/adt/timestamp.c:3069 utils/adt/timestamp.c:3771
 #, c-format
 msgid "interval units \"%s\" not recognized"
 msgstr ""
 
-#: utils/adt/timestamp.c:3087
+#: utils/adt/timestamp.c:3093
 msgid "cannot calculate week number without year information"
 msgstr ""
 
-#: utils/adt/timestamp.c:3836 utils/adt/timestamp.c:3985
+#: utils/adt/timestamp.c:3842 utils/adt/timestamp.c:3991
 #, c-format
 msgid "interval time zone \"%s\" must not specify month"
 msgstr ""
 
-#: utils/adt/selfuncs.c:3370 utils/adt/selfuncs.c:3757
+#: utils/adt/selfuncs.c:3370 utils/adt/selfuncs.c:3775
 msgid "case insensitive matching not supported on type bytea"
 msgstr ""
 
-#: utils/adt/selfuncs.c:3475 utils/adt/selfuncs.c:3918
+#: utils/adt/selfuncs.c:3477 utils/adt/selfuncs.c:3936
 msgid "regular-expression matching not supported on type bytea"
 msgstr ""
 
@@ -8846,17 +8880,17 @@ msgstr ""
 msgid "PANIC"
 msgstr ""
 
-#: utils/fmgr/fmgr.c:247
+#: utils/fmgr/fmgr.c:246
 #, c-format
 msgid "internal function \"%s\" is not in internal lookup table"
 msgstr ""
 
-#: utils/fmgr/fmgr.c:449
+#: utils/fmgr/fmgr.c:448
 #, c-format
 msgid "unrecognized API version %d reported by info function \"%s\""
 msgstr ""
 
-#: utils/fmgr/fmgr.c:760 utils/fmgr/fmgr.c:1635
+#: utils/fmgr/fmgr.c:759 utils/fmgr/fmgr.c:1634
 #, c-format
 msgid "function %u has too many arguments (%d, maximum is %d)"
 msgstr ""
@@ -9005,7 +9039,7 @@ msgstr ""
 msgid "could not write lock file \"%s\": %m"
 msgstr ""
 
-#: utils/init/miscinit.c:792 utils/misc/guc.c:4923
+#: utils/init/miscinit.c:792 utils/misc/guc.c:4939
 #, c-format
 msgid "could not read from file \"%s\": %m"
 msgstr ""
@@ -9036,20 +9070,24 @@ msgid ""
 "not compatible with this version %s."
 msgstr ""
 
-#: utils/init/miscinit.c:950
+#: utils/init/miscinit.c:945
 msgid "invalid list syntax for parameter \"preload_libraries\""
 msgstr ""
 
-#: utils/init/miscinit.c:996
+#: utils/init/miscinit.c:991
 #, c-format
 msgid "preloaded library \"%s\" with initialization function \"%s\""
 msgstr ""
 
-#: utils/init/miscinit.c:1000
+#: utils/init/miscinit.c:995
 #, c-format
 msgid "preloaded library \"%s\""
 msgstr ""
 
+#: utils/mb/encnames.c:445
+msgid "encoding name too long"
+msgstr ""
+
 #: utils/mb/conv.c:376
 #, c-format
 msgid "ignoring unconvertible UTF-8 character 0x%04x"
@@ -9065,8 +9103,13 @@ msgstr ""
 msgid "ignoring unconvertible %s character 0x%04x"
 msgstr ""
 
-#: utils/mb/encnames.c:445
-msgid "encoding name too long"
+#: utils/mb/wchar.c:832
+msgid "Unicode characters greater than or equal to 0x10000 are not supported"
+msgstr ""
+
+#: utils/mb/wchar.c:861
+#, c-format
+msgid "invalid byte sequence for encoding \"%s\": 0x%s"
 msgstr ""
 
 #: utils/mb/mbutils.c:252
@@ -9084,15 +9127,6 @@ msgstr ""
 msgid "invalid destination encoding name \"%s\""
 msgstr ""
 
-#: utils/mb/wchar.c:832
-msgid "Unicode characters greater than or equal to 0x10000 are not supported"
-msgstr ""
-
-#: utils/mb/wchar.c:861
-#, c-format
-msgid "invalid byte sequence for encoding \"%s\": 0x%s"
-msgstr ""
-
 #: utils/misc/help_config.c:125
 msgid "internal error: unrecognized run-time parameter type\n"
 msgstr ""
@@ -10023,55 +10057,55 @@ msgstr ""
 msgid "Sets the time zone for displaying and interpreting time stamps."
 msgstr ""
 
-#: utils/misc/guc.c:1739
+#: utils/misc/guc.c:1740
 msgid "Sets the current transaction's isolation level."
 msgstr ""
 
-#: utils/misc/guc.c:1749
+#: utils/misc/guc.c:1750
 msgid "Sets the owning group of the Unix-domain socket."
 msgstr ""
 
-#: utils/misc/guc.c:1750
+#: utils/misc/guc.c:1751
 msgid "(The owning user of the socket is always the user that starts the server.)"
 msgstr ""
 
-#: utils/misc/guc.c:1759
+#: utils/misc/guc.c:1760
 msgid "Sets the directory where the Unix-domain socket will be created."
 msgstr ""
 
-#: utils/misc/guc.c:1769
+#: utils/misc/guc.c:1770
 msgid "Sets the host name or IP address(es) to listen to."
 msgstr ""
 
-#: utils/misc/guc.c:1779
+#: utils/misc/guc.c:1780
 msgid "Selects the method used for forcing WAL updates out to disk."
 msgstr ""
 
-#: utils/misc/guc.c:1788
+#: utils/misc/guc.c:1789
 msgid "Sets the list of known custom variable classes."
 msgstr ""
 
-#: utils/misc/guc.c:1798
+#: utils/misc/guc.c:1799
 msgid "Sets the server's data directory."
 msgstr ""
 
-#: utils/misc/guc.c:1808
+#: utils/misc/guc.c:1809
 msgid "Sets the server's main configuration file."
 msgstr ""
 
-#: utils/misc/guc.c:1818
+#: utils/misc/guc.c:1819
 msgid "Sets the server's \"hba\" configuration file"
 msgstr ""
 
-#: utils/misc/guc.c:1828
+#: utils/misc/guc.c:1829
 msgid "Sets the server's \"ident\" configuration file"
 msgstr ""
 
-#: utils/misc/guc.c:1838
+#: utils/misc/guc.c:1839
 msgid "Writes the postmaster PID to the specified file."
 msgstr ""
 
-#: utils/misc/guc.c:2477
+#: utils/misc/guc.c:2478
 #, c-format
 msgid ""
 "%s does not know where to find the server configuration file.\n"
@@ -10079,12 +10113,12 @@ msgid ""
 "environment variable.\n"
 msgstr ""
 
-#: utils/misc/guc.c:2502
+#: utils/misc/guc.c:2503
 #, c-format
 msgid "%s cannot access the server configuration file \"%s\": %s\n"
 msgstr ""
 
-#: utils/misc/guc.c:2522
+#: utils/misc/guc.c:2523
 #, c-format
 msgid ""
 "%s does not know where to find the database system data.\n"
@@ -10092,7 +10126,7 @@ msgid ""
 "invocation option, or by the PGDATA environment variable.\n"
 msgstr ""
 
-#: utils/misc/guc.c:2545
+#: utils/misc/guc.c:2546
 #, c-format
 msgid ""
 "%s does not know where to find the \"hba\" configuration file.\n"
@@ -10100,7 +10134,7 @@ msgid ""
 "option, or by the PGDATA environment variable.\n"
 msgstr ""
 
-#: utils/misc/guc.c:2568
+#: utils/misc/guc.c:2569
 #, c-format
 msgid ""
 "%s does not know where to find the \"ident\" configuration file.\n"
@@ -10108,130 +10142,130 @@ msgid ""
 "option, or by the PGDATA environment variable.\n"
 msgstr ""
 
-#: utils/misc/guc.c:3274 utils/misc/guc.c:3800 utils/misc/guc.c:3840
-#: utils/misc/guc.c:3900 utils/misc/guc.c:4236 utils/misc/guc.c:4387
+#: utils/misc/guc.c:3275 utils/misc/guc.c:3801 utils/misc/guc.c:3841
+#: utils/misc/guc.c:3916 utils/misc/guc.c:4252 utils/misc/guc.c:4403
 #, c-format
 msgid "unrecognized configuration parameter \"%s\""
 msgstr ""
 
-#: utils/misc/guc.c:3293
+#: utils/misc/guc.c:3294
 #, c-format
 msgid "parameter \"%s\" cannot be changed"
 msgstr ""
 
-#: utils/misc/guc.c:3305
+#: utils/misc/guc.c:3306
 #, c-format
 msgid "parameter \"%s\" cannot be changed after server start"
 msgstr ""
 
-#: utils/misc/guc.c:3315
+#: utils/misc/guc.c:3316
 #, c-format
 msgid "parameter \"%s\" cannot be changed now"
 msgstr ""
 
-#: utils/misc/guc.c:3345
+#: utils/misc/guc.c:3346
 #, c-format
 msgid "parameter \"%s\" cannot be set after connection start"
 msgstr ""
 
-#: utils/misc/guc.c:3355
+#: utils/misc/guc.c:3356
 #, c-format
 msgid "permission denied to set parameter \"%s\""
 msgstr ""
 
-#: utils/misc/guc.c:3406
+#: utils/misc/guc.c:3407
 #, c-format
 msgid "parameter \"%s\" requires a Boolean value"
 msgstr ""
 
-#: utils/misc/guc.c:3422 utils/misc/guc.c:3506
+#: utils/misc/guc.c:3423 utils/misc/guc.c:3507
 #, c-format
 msgid "invalid value for parameter \"%s\": %d"
 msgstr ""
 
-#: utils/misc/guc.c:3482
+#: utils/misc/guc.c:3483
 #, c-format
 msgid "parameter \"%s\" requires an integer value"
 msgstr ""
 
-#: utils/misc/guc.c:3490
+#: utils/misc/guc.c:3491
 #, c-format
 msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)"
 msgstr ""
 
-#: utils/misc/guc.c:3566
+#: utils/misc/guc.c:3567
 #, c-format
 msgid "parameter \"%s\" requires a numeric value"
 msgstr ""
 
-#: utils/misc/guc.c:3574
+#: utils/misc/guc.c:3575
 #, c-format
 msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)"
 msgstr ""
 
-#: utils/misc/guc.c:3590
+#: utils/misc/guc.c:3591
 #, c-format
 msgid "invalid value for parameter \"%s\": %g"
 msgstr ""
 
-#: utils/misc/guc.c:3688
+#: utils/misc/guc.c:3689
 #, c-format
 msgid "invalid value for parameter \"%s\": \"%s\""
 msgstr ""
 
-#: utils/misc/guc.c:3804 utils/misc/guc.c:3844 utils/misc/guc.c:4391
+#: utils/misc/guc.c:3805 utils/misc/guc.c:3845 utils/misc/guc.c:4407
 #, c-format
 msgid "must be superuser to examine \"%s\""
 msgstr ""
 
-#: utils/misc/guc.c:3909
+#: utils/misc/guc.c:3925
 #, c-format
 msgid "SET %s takes only one argument"
 msgstr ""
 
-#: utils/misc/guc.c:4013
+#: utils/misc/guc.c:4029
 msgid "SET requires parameter name"
 msgstr ""
 
-#: utils/misc/guc.c:4077
+#: utils/misc/guc.c:4093
 #, c-format
 msgid "attempt to redefine parameter \"%s\""
 msgstr ""
 
-#: utils/misc/guc.c:5034
+#: utils/misc/guc.c:5050
 #, c-format
 msgid "could not parse setting for parameter \"%s\""
 msgstr ""
 
-#: utils/misc/guc.c:5232
+#: utils/misc/guc.c:5248
 msgid "invalid list syntax for parameter \"log_destination\""
 msgstr ""
 
-#: utils/misc/guc.c:5255
+#: utils/misc/guc.c:5271
 #, c-format
 msgid "unrecognized \"log_destination\" key word: \"%s\""
 msgstr ""
 
-#: utils/misc/guc.c:5483
+#: utils/misc/guc.c:5499
 msgid "SET AUTOCOMMIT TO OFF is no longer supported"
 msgstr ""
 
-#: utils/misc/guc.c:5531
+#: utils/misc/guc.c:5547
 #, c-format
 msgid "invalid syntax for \"custom_variable_classes\": \"%s\""
 msgstr ""
 
-#: utils/misc/guc.c:5560
+#: utils/misc/guc.c:5576
 msgid "cannot enable parameter when \"log_statement_stats\" is true"
 msgstr ""
 
-#: utils/misc/guc.c:5577
+#: utils/misc/guc.c:5593
 msgid ""
 "cannot enable \"log_statement_stats\" when \"log_parser_stats\", "
 "\"log_planner_stats\", or \"log_executor_stats\" is true"
 msgstr ""
 
-#: utils/misc/guc.c:5596
+#: utils/misc/guc.c:5612
 msgid "cannot set transaction read-write mode inside a read-only transaction"
 msgstr ""
 
@@ -10287,3 +10321,47 @@ msgstr ""
 msgid "Table contains duplicated values."
 msgstr ""
 
+#: ../port/copydir.c:67
+#, fuzzy, c-format
+msgid "could not copy file \"%s\": %m"
+msgstr "imposibil de deschis fi�ierul \"%s\": %m"
+
+#: ../port/dirmod.c:75 ../port/dirmod.c:88 ../port/dirmod.c:101
+msgid "out of memory\n"
+msgstr ""
+
+#: ../port/dirmod.c:283
+#, c-format
+msgid "Error setting junction for %s: %s"
+msgstr ""
+
+#: ../port/exec.c:193 ../port/exec.c:306 ../port/exec.c:349
+#, fuzzy, c-format
+msgid "could not identify current directory: %s"
+msgstr "imposibil de deschis directorul \"%s\": %m"
+
+#: ../port/exec.c:322 ../port/exec.c:358
+#, fuzzy, c-format
+msgid "could not change directory to \"%s\""
+msgstr "imposibil de deschis directorul \"%s\": %m"
+
+#: ../port/exec.c:337
+#, fuzzy, c-format
+msgid "could not read symbolic link \"%s\""
+msgstr "imposibil de citit fi�ierul \"%s\": %m"
+
+#: ../port/exec.c:585
+#, c-format
+msgid "child process exited with exit code %d"
+msgstr ""
+
+#: ../port/exec.c:588
+#, c-format
+msgid "child process was terminated by signal %d"
+msgstr ""
+
+#: ../port/exec.c:591
+#, c-format
+msgid "child process exited with unrecognized status %d"
+msgstr ""
+
diff --git a/src/backend/po/tr.po b/src/backend/po/tr.po
index c88b447..f5dcdb0 100644
--- a/src/backend/po/tr.po
+++ b/src/backend/po/tr.po
@@ -1,20 +1,22 @@
+# translation of postgres-tr.po to 
+# translation of postgres-tr.po to
 # translation of postgres-tr.po to Turkish
 # Nicolai Tufar <ntufar@tdmsoft.com>, 2002-2004.
 # Devrim GÜNDÜZ <devrim@tdmsoft.com>, 2003.
-# Devrim GUNDUZ <devrim@PostgreSQL.org>, 2004.
+# Devrim GUNDUZ <devrim@PostgreSQL.org>, 2004, 2005.
 #
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: postgres-tr\n"
 "POT-Creation-Date: 2005-01-04 18:59+0000\n"
-"PO-Revision-Date: 2005-01-15 14:05+0200\n"
-"Last-Translator: Nicolai Tufar <ntufar@tdmsoft.com>\n"
-"Language-Team: Turkish <pgsql-tr-genel@PostgreSQL.org>\n"
+"PO-Revision-Date: 2005-03-25 15:05+0200\n"
+"Last-Translator: \n"
+"Language-Team:  <en@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.3.1\n"
+"X-Generator: KBabel 1.9.1\n"
 "X-Poedit-Language: Turkish\n"
 "X-Poedit-Country: TURKEY\n"
 "X-Poedit-Basepath: c:\\pgsql\\src\\backend\n"
@@ -160,11 +162,11 @@ msgstr "\"%s\" indexi btree değildir."
 msgid "version mismatch in index \"%s\": file version %d, code version %d"
 msgstr "\"%s\" indexinde sürüm uyuşmazlığı: dosya sürümü %d, kod sürümü ise %d"
 
-#: access/rtree/rtree.c:646
+#: access/rtree/rtree.c:644
 msgid "variable-length rtree keys are not supported"
 msgstr "değişken uzunluklu rtree kayıtları desteklenmemektedir"
 
-#: access/rtree/rtree.c:786
+#: access/rtree/rtree.c:784
 #, c-format
 msgid "index row size %lu exceeds rtree maximum, %lu"
 msgstr "%lu index satır boyutu, rtree indexi için %lu olan en büyük satır büyüklüğünü aşmaktadır"
@@ -289,14 +291,14 @@ msgstr "\"%s\" dosyası \"%s\" dosyasına bağlanamıyor (log dosyası %u, segme
 #: access/transam/xlog.c:1799
 #, c-format
 msgid "could not rename file \"%s\" to \"%s\" (initialization of log file %u, segment %u): %m"
-msgstr "\"%s\" dosyası \"%s\" dosyasına taşınamıyor (log dosyası %u, segment %u iklendirme işlemi): %m"
+msgstr "\"%s\" dosyası \"%s\" dosyasına taşınamıyor (log dosyası %u, segment %u ilklendirme işlemi): %m"
 
 #: access/transam/xlog.c:1954
 #: access/transam/xlog.c:2056
 #: access/transam/xlog.c:5340
 #, c-format
 msgid "could not stat file \"%s\": %m"
-msgstr "\"%s\" dosyası stat hatası: %m"
+msgstr "\"%s\" dosyası durumlanamadı: %m"
 
 #: access/transam/xlog.c:1962
 #: access/transam/xlog.c:5502
@@ -304,12 +306,12 @@ msgstr "\"%s\" dosyası stat hatası: %m"
 #: commands/tablespace.c:589
 #, c-format
 msgid "could not remove file \"%s\": %m"
-msgstr "\"%s\" dosyası silme hatası: %m"
+msgstr "\"%s\" dosyası silinemedi: %m"
 
 #: access/transam/xlog.c:2037
 #, c-format
 msgid "archive file \"%s\" has wrong size: %lu instead of %lu"
-msgstr "\"%s\" archive dosyası yanlış boyuta sahiptir: %lu yerine %lu olmalıydı."
+msgstr "\"%s\" arşiv dosyası yanlış boyuta sahip: %lu yerine %lu olmalıydı."
 
 #: access/transam/xlog.c:2044
 #, c-format
@@ -324,17 +326,17 @@ msgstr "\"%s\" dosyası arşivden geri yüklenemiyor: dönüş kodu %d"
 #: access/transam/xlog.c:2137
 #, c-format
 msgid "could not open transaction log directory \"%s\": %m"
-msgstr "\"%s\" transaction log dizini açılamıyor: %m"
+msgstr "\"%s\" transaction kayıt dizini açılamıyor: %m"
 
 #: access/transam/xlog.c:2182
 #, c-format
 msgid "recycled transaction log file \"%s\""
-msgstr "\"%s\" transaction log dosyası yeniden kullanımda"
+msgstr "\"%s\" transaction kayıt dosyası yeniden kullanımda"
 
 #: access/transam/xlog.c:2190
 #, c-format
 msgid "removing transaction log file \"%s\""
-msgstr "\"%s\" transaction log dosyası kaldırılıyor"
+msgstr "\"%s\" transaction kayıt dosyası kaldırılıyor"
 
 #: access/transam/xlog.c:2213
 #, c-format
@@ -457,7 +459,7 @@ msgstr "Timeline ID daima artan sırayla olmalıdır."
 #: access/transam/xlog.c:2819
 #, c-format
 msgid "invalid data in history file \"%s\""
-msgstr "\"%s\" geçmişdosyasında geçersiz veri"
+msgstr "\"%s\" geçmiş dosyasında geçersiz veri"
 
 #: access/transam/xlog.c:2820
 msgid "Timeline IDs must be less than child timeline's ID."
@@ -466,7 +468,7 @@ msgstr "timeline ID, child timeline ID'sinden daha düşük olmalıdır."
 #: access/transam/xlog.c:3058
 #, c-format
 msgid "could not link file \"%s\" to \"%s\": %m"
-msgstr "\"%s\" dosyasından \"%s\" dosyasına link hatası: %m"
+msgstr "\"%s\" dosyası \"%s\" dosyasına bağlanamadı: %m"
 
 #: access/transam/xlog.c:3065
 #: access/transam/xlog.c:3847
@@ -614,12 +616,12 @@ msgstr "veritabanı dosyaları işletim sistemi ile uyumlu değildir"
 #: access/transam/xlog.c:3313
 #, c-format
 msgid "The database cluster was initialized with LC_COLLATE \"%s\", which is not recognized by setlocale()."
-msgstr "Veritabanı LC_COLLATE \"%s\", ile ilklendirilmiştir, ancak setlocale() bun yereli tanımamaktadır.."
+msgstr "Veritabanı LC_COLLATE \"%s\", ile ilklendirilmiştir, ancak setlocale() bu yereli tanımamaktadır.."
 
 #: access/transam/xlog.c:3316
 #: access/transam/xlog.c:3323
 msgid "It looks like you need to initdb or install locale support."
-msgstr "Yerel dil desteğini etkinleştirmek için initdb çalıştırmanız gerekir."
+msgstr "Yerel desteğini kurmanız ya da initdb çalıştırmanız gerekmektedir."
 
 #: access/transam/xlog.c:3320
 #, c-format
@@ -629,12 +631,12 @@ msgstr "Veritabanı LC_CTYPE \"%s\", ile ilklendirilmiştir, ancak setlocale() b
 #: access/transam/xlog.c:3546
 #, c-format
 msgid "could not write bootstrap transaction log file: %m"
-msgstr "bootstrap transaction log dosyası kapatma başarısız: %m"
+msgstr "bootstrap transaction log dosyası kapatılamadı: %m"
 
 #: access/transam/xlog.c:3552
 #, c-format
 msgid "could not fsync bootstrap transaction log file: %m"
-msgstr "bootstrap transaction log dosyası fsyanc başarısız: %m"
+msgstr "bootstrap transaction log dosyası fsync başarısız: %m"
 
 #: access/transam/xlog.c:3557
 #, c-format
@@ -697,7 +699,7 @@ msgstr "\"%s\" tanınmayan recovery parametresi"
 #: access/transam/xlog.c:3756
 #, c-format
 msgid "syntax error in recovery command file: %s"
-msgstr "%s recovery komut dosyasında söz dizim hatası"
+msgstr "%s recovery komut dosyasında sözdizimi hatası "
 
 #: access/transam/xlog.c:3758
 msgid "Lines should have the format parameter = 'value'."
@@ -720,36 +722,36 @@ msgstr "archive recovery tamamlandı"
 #: access/transam/xlog.c:3978
 #, c-format
 msgid "recovery stopping after commit of transaction %u, time %s"
-msgstr "recovery stopping after commit of transaction %u, time %s"
+msgstr "kurtarma işlemi %u transactionunun, %s zamanında commit edilmesinden sonra durdu"
 
 #: access/transam/xlog.c:3982
 #, c-format
 msgid "recovery stopping before commit of transaction %u, time %s"
-msgstr "recovery stopping before commit of transaction %u, time %s"
+msgstr "kurtarma işlemi %u transactionunun, %s zamanında commit edilmesinden önce durdu"
 
 #: access/transam/xlog.c:3989
 #, c-format
 msgid "recovery stopping after abort of transaction %u, time %s"
-msgstr "recovery stopping after abort of transaction %u, time %s"
+msgstr "kurtarma işlemi %u transactionunun, %s zamanunda iptal edilmesinden sonra duruyor"
 
 #: access/transam/xlog.c:3993
 #, c-format
 msgid "recovery stopping before abort of transaction %u, time %s"
-msgstr "recovery stopping before abort of transaction %u, time %s"
+msgstr "kurtarma işlemi %u transactionunun, %s zamanunda iptal edilmesinden önce duruyor"
 
 #: access/transam/xlog.c:4035
 msgid "control file contains invalid data"
-msgstr "kontrol dosyasında veri geçersiz"
+msgstr "kontrol dosyası geçersiz veri içeriyor"
 
 #: access/transam/xlog.c:4039
 #, c-format
 msgid "database system was shut down at %s"
-msgstr "veritabanı sunucusu %s tarihinde kapatılmıştır"
+msgstr "veritabanı sunucusu %s tarihinde kapatıldı"
 
 #: access/transam/xlog.c:4043
 #, c-format
 msgid "database system shutdown was interrupted at %s"
-msgstr "veritabanı kapatma işlemi %s tarihinde iptal edilmiştir"
+msgstr "veritabanı kapatma işlemi %s tarihinde iptal edildi"
 
 #: access/transam/xlog.c:4047
 #, c-format
@@ -822,7 +824,7 @@ msgstr "otomatik kurtarma sürüyor"
 
 #: access/transam/xlog.c:4209
 msgid "database system was not properly shut down; automatic recovery in progress"
-msgstr "veritabanı düzgün kapatılmamış otomatik kurtarma işlemi sürüyor"
+msgstr "veritabanı düzgün kapatılmamış; otomatik kurtarma işlemi sürüyor"
 
 #: access/transam/xlog.c:4246
 #, c-format
@@ -840,11 +842,11 @@ msgstr "redo işlemi gerekmiyor"
 
 #: access/transam/xlog.c:4332
 msgid "requested recovery stop point is before end time of backup dump"
-msgstr "talep edilen kutarma durma noktası yedek dump'ının bitiş tarihinden öncedir"
+msgstr "talep edilen kurtarma durma noktası yedek dump'ının bitiş tarihinden öncedir"
 
 #: access/transam/xlog.c:4336
 msgid "WAL ends before end time of backup dump"
-msgstr "WAL yedek dump'ının bitiş zamanından önce sona ermiştir"
+msgstr "WAL, yedek dump'ının bitiş zamanından önce sona ermiştir"
 
 #: access/transam/xlog.c:4351
 #, c-format
@@ -871,11 +873,11 @@ msgstr "veritabanı sunucusu hazır"
 
 #: access/transam/xlog.c:4556
 msgid "invalid primary checkpoint link in control file"
-msgstr "kontrol dosyasındaki ana checkpoint link geçersiz"
+msgstr "kontrol dosyasındaki ana checkpoint bağlantısı geçersiz"
 
 #: access/transam/xlog.c:4560
 msgid "invalid secondary checkpoint link in control file"
-msgstr "kontrol dosyasındaki ikincil checkpoint link geçersiz"
+msgstr "kontrol dosyasındaki ikincil checkpoint bağlantısı geçersiz"
 
 #: access/transam/xlog.c:4564
 msgid "invalid checkpoint link in backup_label file"
@@ -948,7 +950,7 @@ msgstr "veritabanının kapanması sırasında eşzamanlı transaction log harek
 #: access/transam/xlog.c:4998
 #, c-format
 msgid "checkpoint complete; %d transaction log file(s) added, %d removed, %d recycled"
-msgstr "checkpoint tamamlanmıştır; %d tane transaction log dosyası eklenmiştir, %d tane kaldırılmıştır, %d tane yeniden kullanıma alınmıştır"
+msgstr "checkpoint tamamlandı; %d tane transaction log dosyası eklendi, %d tane kaldırıldı, %d tane yeniden kullanıma alındı"
 
 #: access/transam/xlog.c:5058
 #, c-format
@@ -1015,7 +1017,7 @@ msgstr "\"%s\" dosyasında geçersiz veri"
 #: access/transam/slru.c:452
 #, c-format
 msgid "file \"%s\" doesn't exist, reading as zeroes"
-msgstr "\"%s\" dosyası mevcut değildir, sıfırlarla dolu dosya olarak okunmaktadır"
+msgstr "\"%s\" dosyası mevcut değilr, sıfırlarla dolu dosya olarak okunuyor"
 
 #: access/transam/slru.c:637
 #: access/transam/slru.c:644
@@ -1077,7 +1079,7 @@ msgstr "bir transaction içinde 2^32-1 komuttan fazla olamaz"
 #: access/transam/xact.c:2178
 #, c-format
 msgid "%s cannot run inside a transaction block"
-msgstr "%s bir transaction block içinde çalışamaz"
+msgstr "%s bir transaction bloğu içinde çalışamaz"
 
 #. translator: %s represents an SQL statement name
 #: access/transam/xact.c:2188
@@ -1104,7 +1106,7 @@ msgstr "bir transaction zaten başlatılmıştır"
 #: access/transam/xact.c:2549
 #: access/transam/xact.c:2640
 msgid "there is no transaction in progress"
-msgstr "yürüyen bir transaction yok"
+msgstr "çalışan bir transaction yok"
 
 #: access/transam/xact.c:2732
 #: access/transam/xact.c:2781
@@ -1160,7 +1162,7 @@ msgstr "diğer nesnelerin ona bağlı olması nedeniyle %s kaldırılamıyor"
 
 #: catalog/dependency.c:154
 msgid "Use DROP ... CASCADE to drop the dependent objects too."
-msgstr "Bağlı nesneleri de kaldırmak için DROP ... CASCADE kulanın."
+msgstr "Bağlı nesneleri de kaldırmak için DROP ... CASCADE kullanın."
 
 #: catalog/dependency.c:212
 #, c-format
@@ -1250,22 +1252,22 @@ msgstr "%s dili"
 #: catalog/dependency.c:1592
 #, c-format
 msgid "operator %s"
-msgstr "operator %s"
+msgstr "operatör %s"
 
 #: catalog/dependency.c:1626
 #, c-format
 msgid "operator class %s for access method %s"
-msgstr "%s erişim metodu için %s operator sınıfı"
+msgstr "%s erişim metodu için %s operatör sınıfı"
 
 #: catalog/dependency.c:1662
 #, c-format
 msgid "rule %s on "
-msgstr "rule %s etkin"
+msgstr "%s rule'u etkin"
 
 #: catalog/dependency.c:1697
 #, c-format
 msgid "trigger %s on "
-msgstr "%s triggeri açık"
+msgstr "%s triggeri etkin"
 
 #: catalog/dependency.c:1714
 #, c-format
@@ -1295,7 +1297,7 @@ msgstr "sequence %s"
 #: catalog/dependency.c:1774
 #, c-format
 msgid "uncataloged table %s"
-msgstr "katalog edilmemiş tablo %s"
+msgstr "%s kataloglanmamış tablosu"
 
 #: catalog/dependency.c:1778
 #, c-format
@@ -1436,8 +1438,8 @@ msgstr "tablespace için geçersiz hak tipi %s"
 #: catalog/aclchk.c:1080
 #: commands/dbcommands.c:277
 #: commands/indexcmds.c:171
-#: commands/tablecmds.c:324
-#: commands/tablecmds.c:5435
+#: commands/tablecmds.c:325
+#: commands/tablecmds.c:5489
 #: commands/tablespace.c:425
 #: commands/tablespace.c:750
 #: commands/tablespace.c:817
@@ -1447,204 +1449,195 @@ msgstr "tablespace için geçersiz hak tipi %s"
 msgid "tablespace \"%s\" does not exist"
 msgstr "\"%s\" tablespace'i mevcut değil"
 
-#: catalog/aclchk.c:1229
-#: commands/user.c:1535
-#: commands/user.c:1772
-#: commands/user.c:1807
-#: libpq/pqcomm.c:501
-#, c-format
-msgid "group \"%s\" does not exist"
-msgstr "\"%s\" grubu mevcut değil"
-
-#: catalog/aclchk.c:1264
+#: catalog/aclchk.c:1242
 #, c-format
 msgid "permission denied for relation %s"
 msgstr "%s nesnesine erişim engellendi"
 
-#: catalog/aclchk.c:1266
+#: catalog/aclchk.c:1244
 #, c-format
 msgid "permission denied for database %s"
 msgstr "%s veritabanına erişim engellendi"
 
-#: catalog/aclchk.c:1268
+#: catalog/aclchk.c:1246
 #, c-format
 msgid "permission denied for function %s"
 msgstr "%s fonksiyonuna erişim engellendi"
 
-#: catalog/aclchk.c:1270
+#: catalog/aclchk.c:1248
 #, c-format
 msgid "permission denied for operator %s"
 msgstr "%s operatorüne erişim engellendi"
 
-#: catalog/aclchk.c:1272
+#: catalog/aclchk.c:1250
 #, c-format
 msgid "permission denied for type %s"
 msgstr "%s tipine erişim engellendi"
 
-#: catalog/aclchk.c:1274
+#: catalog/aclchk.c:1252
 #, c-format
 msgid "permission denied for language %s"
 msgstr "%s diline erişim engellendi"
 
-#: catalog/aclchk.c:1276
+#: catalog/aclchk.c:1254
 #, c-format
 msgid "permission denied for schema %s"
 msgstr "%s şemasına erişim engellendi"
 
-#: catalog/aclchk.c:1278
+#: catalog/aclchk.c:1256
 #, c-format
 msgid "permission denied for operator class %s"
-msgstr "%s operator sınıfına erişim engellendi"
+msgstr "%s operatör sınıfına erişim engellendi"
 
-#: catalog/aclchk.c:1280
+#: catalog/aclchk.c:1258
 #, c-format
 msgid "permission denied for conversion %s"
 msgstr "%s dönüşümüne erişim engellendi"
 
-#: catalog/aclchk.c:1282
+#: catalog/aclchk.c:1260
 #, c-format
 msgid "permission denied for tablespace %s"
 msgstr "%s tablespace'ine erişim engellendi"
 
-#: catalog/aclchk.c:1288
+#: catalog/aclchk.c:1266
 #, c-format
 msgid "must be owner of relation %s"
 msgstr "%s nesnesinin sahibi olmalısınız"
 
-#: catalog/aclchk.c:1290
+#: catalog/aclchk.c:1268
 #, c-format
 msgid "must be owner of database %s"
 msgstr "%s veritabanının sahibi olmalısınız"
 
-#: catalog/aclchk.c:1292
+#: catalog/aclchk.c:1270
 #, c-format
 msgid "must be owner of function %s"
 msgstr "%s fonksiyonunun sahibi olmalısınız"
 
-#: catalog/aclchk.c:1294
+#: catalog/aclchk.c:1272
 #, c-format
 msgid "must be owner of operator %s"
 msgstr "%s operatörünün sahibi olmalısınız"
 
-#: catalog/aclchk.c:1296
+#: catalog/aclchk.c:1274
 #, c-format
 msgid "must be owner of type %s"
 msgstr "%s tipinin sahibi olmalısınız"
 
-#: catalog/aclchk.c:1298
+#: catalog/aclchk.c:1276
 #, c-format
 msgid "must be owner of language %s"
 msgstr "%s dilinin sahibi olmalısınız"
 
-#: catalog/aclchk.c:1300
+#: catalog/aclchk.c:1278
 #, c-format
 msgid "must be owner of schema %s"
 msgstr "%s şemasının sahibi olmalısınız"
 
-#: catalog/aclchk.c:1302
+#: catalog/aclchk.c:1280
 #, c-format
 msgid "must be owner of operator class %s"
-msgstr "%s operator sınıfının sahibi olmalısınız"
+msgstr "%s operatör sınıfının sahibi olmalısınız"
 
-#: catalog/aclchk.c:1304
+#: catalog/aclchk.c:1282
 #, c-format
 msgid "must be owner of conversion %s"
 msgstr "%s dönüşümünün sahibi olmalısınız"
 
-#: catalog/aclchk.c:1306
+#: catalog/aclchk.c:1284
 #, c-format
 msgid "must be owner of tablespace %s"
 msgstr "%s tablespace'inin sahibi olmalısınız"
 
-#: catalog/aclchk.c:1369
+#: catalog/aclchk.c:1347
 #, c-format
 msgid "user with ID %u does not exist"
 msgstr "ID'si %u olan kullanıcı mevcut değil"
 
-#: catalog/aclchk.c:1386
-#: catalog/aclchk.c:1889
+#: catalog/aclchk.c:1364
+#: catalog/aclchk.c:1867
 #, c-format
 msgid "relation with OID %u does not exist"
 msgstr "%u OID'li nesne mevcut değil"
 
-#: catalog/aclchk.c:1490
-#: catalog/aclchk.c:2107
+#: catalog/aclchk.c:1468
+#: catalog/aclchk.c:2085
 #, c-format
 msgid "database with OID %u does not exist"
 msgstr "%u OID'li veritabanı mevcut değil"
 
-#: catalog/aclchk.c:1548
-#: catalog/aclchk.c:1973
+#: catalog/aclchk.c:1526
+#: catalog/aclchk.c:1951
 #: tcop/fastpath.c:230
 #, c-format
 msgid "function with OID %u does not exist"
 msgstr "%u OID'li fonksiyon mevcut değil"
 
-#: catalog/aclchk.c:1604
+#: catalog/aclchk.c:1582
 #, c-format
 msgid "language with OID %u does not exist"
 msgstr "%u OID'li dil mevcut değil"
 
-#: catalog/aclchk.c:1689
-#: catalog/aclchk.c:2001
+#: catalog/aclchk.c:1667
+#: catalog/aclchk.c:1979
 #, c-format
 msgid "schema with OID %u does not exist"
 msgstr "%u OID'li şema mevcut değil"
 
-#: catalog/aclchk.c:1761
-#: catalog/aclchk.c:2039
+#: catalog/aclchk.c:1739
+#: catalog/aclchk.c:2017
 #, c-format
 msgid "tablespace with OID %u does not exist"
 msgstr "%u OID'li tablespace mevcut değil"
 
-#: catalog/aclchk.c:1917
+#: catalog/aclchk.c:1895
 #, c-format
 msgid "type with OID %u does not exist"
 msgstr "%u OID'li tip mevcut değil"
 
-#: catalog/aclchk.c:1945
+#: catalog/aclchk.c:1923
 #, c-format
 msgid "operator with OID %u does not exist"
 msgstr "%u OID'li operatör mevcut değil"
 
-#: catalog/aclchk.c:2068
+#: catalog/aclchk.c:2046
 #, c-format
 msgid "operator class with OID %u does not exist"
 msgstr "%u OID'li operatör sınıfı mevcut değil"
 
-#: catalog/aclchk.c:2136
+#: catalog/aclchk.c:2114
 #, c-format
 msgid "conversion with OID %u does not exist"
 msgstr "%u OID'li dönüşüm mevcut değil"
 
-#: catalog/pg_aggregate.c:80
+#: catalog/pg_aggregate.c:83
 msgid "cannot determine transition data type"
 msgstr "geçiş veri tipi belirlenemedi"
 
-#: catalog/pg_aggregate.c:81
+#: catalog/pg_aggregate.c:84
 msgid "An aggregate using \"anyarray\" or \"anyelement\" as transition type must have one of them as its base type."
 msgstr "Transition tipi \"anyarray\" ya da \"anyelement\" olan aggregatın temel tipi onlardan biri olmalıdır."
 
-#: catalog/pg_aggregate.c:110
+#: catalog/pg_aggregate.c:113
 #, c-format
 msgid "return type of transition function %s is not %s"
 msgstr "%s geçiş fonksiyonunun tipi %s değildir"
 
-#: catalog/pg_aggregate.c:132
+#: catalog/pg_aggregate.c:135
 msgid "must not omit initial value when transition function is strict and transition type is not compatible with input type"
 msgstr "geçiş fonksiyonu strict olduğunda ve giriş parametresinin tipi uyumsuz olduğunda başlangıç değeri mutlaka verilmelidir"
 
-#: catalog/pg_aggregate.c:165
+#: catalog/pg_aggregate.c:168
 #: catalog/pg_proc.c:124
 #: executor/functions.c:1082
 msgid "cannot determine result data type"
 msgstr "sonuç veri tipi belirlenemiyor"
 
-#: catalog/pg_aggregate.c:166
+#: catalog/pg_aggregate.c:169
 msgid "An aggregate returning \"anyarray\" or \"anyelement\" must have one of them as its base type."
 msgstr "\"anyarray\" veya \"anyelement\" döndüren aggregatın temel tipi onlardan biri olmalıdır."
 
-#: catalog/pg_aggregate.c:281
+#: catalog/pg_aggregate.c:285
 #: commands/typecmds.c:919
 #: commands/typecmds.c:989
 #: commands/typecmds.c:1021
@@ -1656,30 +1649,30 @@ msgstr "\"anyarray\" veya \"anyelement\" döndüren aggregatın temel tipi onlar
 msgid "function %s does not exist"
 msgstr "%s fonksiyonu mevcut değildir"
 
-#: catalog/pg_aggregate.c:286
+#: catalog/pg_aggregate.c:290
 #, c-format
 msgid "function %s returns a set"
 msgstr "%s fonksiyonu bir küme döndürüyor"
 
-#: catalog/pg_aggregate.c:317
-#: catalog/pg_aggregate.c:326
+#: catalog/pg_aggregate.c:321
+#: catalog/pg_aggregate.c:330
 #, c-format
 msgid "function %s requires run-time type coercion"
-msgstr "%s fonksiyonu çalışma zamanı tip düzeltmesini gerektirir"
+msgstr "%s fonksiyonu çalışma zamanı tipi zorlaması gerektirir"
 
 #: catalog/heap.c:221
 #, c-format
 msgid "permission denied to create \"%s.%s\""
-msgstr "\"%s.%s\" oluşturma izni yok"
+msgstr "\"%s.%s\" oluşturulmasına izin verilmedi"
 
 #: catalog/heap.c:223
 msgid "System catalog modifications are currently disallowed."
-msgstr "System catalog değişikliklerine şu anda izin verilmez."
+msgstr "System catalog değişikliklerine şu anda izin verilmiyor."
 
 #: catalog/heap.c:382
-#: commands/tablecmds.c:697
-#: commands/tablecmds.c:1007
-#: commands/tablecmds.c:2927
+#: commands/tablecmds.c:723
+#: commands/tablecmds.c:1033
+#: commands/tablecmds.c:2954
 #, c-format
 msgid "tables can have at most %d columns"
 msgstr "bir tablo en fazla %d sütun içerebilir"
@@ -1692,12 +1685,12 @@ msgstr "\"%s\" kolon adı sistem kolonu ile çakışmaktadır"
 #: catalog/heap.c:415
 #, c-format
 msgid "column name \"%s\" is duplicated"
-msgstr "\"%s\" sütun adı mukerrerdir"
+msgstr "\"%s\" sütun adı mükerrer"
 
 #: catalog/heap.c:452
 #, c-format
 msgid "column \"%s\" has type \"unknown\""
-msgstr "\"%s\" sütunu \"unknown\" tipine sahiptir"
+msgstr "\"%s\" sütunu \"unknown\" tipine sahip"
 
 #: catalog/heap.c:453
 msgid "Proceeding with relation creation anyway."
@@ -1710,7 +1703,7 @@ msgstr "\"%s\" sütunu %s pseudo-tipine sahip"
 
 #: catalog/heap.c:732
 #: catalog/index.c:514
-#: commands/tablecmds.c:1501
+#: commands/tablecmds.c:1527
 #, c-format
 msgid "relation \"%s\" already exists"
 msgstr "\"%s\" nesnesi zaten mevcut"
@@ -1721,7 +1714,7 @@ msgid "only table \"%s\" can be referenced in check constraint"
 msgstr "check constraint içerisinde sadece \"%s\" tablosu kullanılabilir"
 
 #: catalog/heap.c:1593
-#: commands/typecmds.c:1872
+#: commands/typecmds.c:1873
 msgid "cannot use subquery in check constraint"
 msgstr "check constraint içinde subquery kullanılamaz"
 
@@ -1730,7 +1723,7 @@ msgid "cannot use aggregate function in check constraint"
 msgstr "check constraint içinde aggregate function kullanılamaz"
 
 #: catalog/heap.c:1614
-#: commands/tablecmds.c:3722
+#: commands/tablecmds.c:3776
 #, c-format
 msgid "constraint \"%s\" for relation \"%s\" already exists"
 msgstr "\"%s\" constraint 'i \"%s\" nesnesi için zaten mevcut"
@@ -1772,15 +1765,29 @@ msgstr "\"%s\" kolonunun tipi %s'dır, ancak öntanımlı ifadenin tipi %s'dir."
 msgid "You will need to rewrite or cast the expression."
 msgstr "Bu ifadeyi yinden yazmalı ya da sonucunu cast etmelisiniz."
 
-#: catalog/heap.c:2076
+#: catalog/heap.c:2115
+msgid "unsupported ON COMMIT and foreign key combination"
+msgstr "desteklenmeyen ON COMMIT ve foreign key birleştirmesi"
+
+#: catalog/heap.c:2116
+#, c-format
+msgid "Table \"%s\" references \"%s\" via foreign key constraint \"%s\", but they do not have the same ON COMMIT setting."
+msgstr "\"%s\" tablosu \"%s\" tablosunu, \"%s\" bütünlük kısıtlayıcısı ile referans ediyor, ancak bu iki tablonun ON COMMIT ayarı farklıdır."
+
+#: catalog/heap.c:2123
 msgid "cannot truncate a table referenced in a foreign key constraint"
 msgstr "ikincil anahtar bütünlük kısıtlamasının refere ettiği tabloyu truncate edemezsiniz"
 
-#: catalog/heap.c:2077
+#: catalog/heap.c:2124
 #, c-format
 msgid "Table \"%s\" references \"%s\" via foreign key constraint \"%s\"."
 msgstr "\"%s\" tablosu \"%s\" tablosunu, \"%s\" bütünlük kısıtlayıcısı ile referans ediyor."
 
+#: catalog/heap.c:2128
+#, c-format
+msgid "Truncate table \"%s\" at the same time."
+msgstr "Aynı zamanda \"%s\" tablosunu da kısaltın."
+
 #: catalog/index.c:495
 msgid "user-defined indexes on system catalog tables are not supported"
 msgstr "sistem katalog tabloları üzerinde kullanıcı tanımlı index oluşturulamaz"
@@ -1821,14 +1828,14 @@ msgid "no schema has been selected to create in"
 msgstr "oluşturma işlemi için şema adı belirtimemiş"
 
 #: catalog/namespace.c:1195
-#: parser/parse_expr.c:1171
+#: parser/parse_expr.c:463
 #: parser/parse_target.c:732
 #, c-format
 msgid "cross-database references are not implemented: %s"
 msgstr "veritabanı-arası referanslar oluşturulamaz: %s"
 
 #: catalog/namespace.c:1201
-#: parser/parse_expr.c:1197
+#: parser/parse_expr.c:489
 #: parser/parse_target.c:741
 #: gram.y:2515
 #: gram.y:7425
@@ -1975,36 +1982,36 @@ msgstr "SQL fonksiyonları %s tipinde argümana sahip olamaz"
 msgid "SQL function \"%s\""
 msgstr " \"%s\" SQL fonksiyonu"
 
-#: catalog/pg_type.c:198
+#: catalog/pg_type.c:197
 #, c-format
 msgid "invalid type internal size %d"
 msgstr "tip dahili boyutu geçersiz :%d"
 
-#: catalog/pg_type.c:204
+#: catalog/pg_type.c:203
 #, c-format
 msgid "internal size %d is invalid for passed-by-value type"
 msgstr "passed-by-value tipler için %d dahili tip geçersizdir"
 
-#: catalog/pg_type.c:211
+#: catalog/pg_type.c:210
 msgid "fixed-size types must have storage PLAIN"
 msgstr "sabit-boyutlu tipler PLAIN storage özelliği ile tanımlanmalıdır"
 
-#: catalog/pg_type.c:293
-#: catalog/pg_type.c:525
+#: catalog/pg_type.c:292
+#: catalog/pg_type.c:522
 #, c-format
 msgid "type \"%s\" already exists"
 msgstr "\"%s\" tipi zaten mevcut"
 
-#: catalog/pg_type.c:517
+#: catalog/pg_type.c:514
 #: commands/functioncmds.c:110
-#: commands/tablecmds.c:4632
+#: commands/tablecmds.c:4686
 #: commands/typecmds.c:423
 #: commands/typecmds.c:809
 #: commands/typecmds.c:1167
-#: commands/typecmds.c:1288
-#: commands/typecmds.c:1400
-#: commands/typecmds.c:1487
-#: commands/typecmds.c:2072
+#: commands/typecmds.c:1289
+#: commands/typecmds.c:1401
+#: commands/typecmds.c:1488
+#: commands/typecmds.c:2076
 #: parser/parse_func.c:1401
 #: parser/parse_type.c:201
 #: parser/parse_type.c:227
@@ -2054,9 +2061,9 @@ msgstr "%s fonksiyonu \"%s\" şemasında zaten mevcut"
 #: commands/opclasscmds.c:954
 #: commands/operatorcmds.c:303
 #: commands/schemacmds.c:319
-#: commands/tablecmds.c:5228
+#: commands/tablecmds.c:5282
 #: commands/tablespace.c:839
-#: commands/typecmds.c:2103
+#: commands/typecmds.c:2107
 msgid "must be superuser to change owner"
 msgstr "Sahibini değiştirmek için superuser olmalısınız."
 
@@ -2086,7 +2093,7 @@ msgid "there is no previously clustered index for table \"%s\""
 msgstr "\"%s\" tablosunda daha önce cluster edilmiş index yoktur"
 
 #: commands/cluster.c:147
-#: commands/tablecmds.c:5377
+#: commands/tablecmds.c:5431
 #, c-format
 msgid "index \"%s\" for table \"%s\" does not exist"
 msgstr "\"%s\"indexi, \"%s\" tablosunda mevcut değil"
@@ -2148,8 +2155,8 @@ msgstr "\"%s\" bir sequence değildir"
 #: commands/indexcmds.c:137
 #: commands/indexcmds.c:951
 #: commands/lockcmds.c:68
-#: commands/tablecmds.c:544
-#: commands/tablecmds.c:2624
+#: commands/tablecmds.c:556
+#: commands/tablecmds.c:2650
 #: commands/trigger.c:141
 #: commands/trigger.c:546
 #: tcop/utility.c:78
@@ -2165,14 +2172,14 @@ msgid "\"%s\" is not a view"
 msgstr "\"%s\" bir view değildir"
 
 #: commands/comment.c:404
-#: commands/tablecmds.c:3100
-#: commands/tablecmds.c:3193
-#: commands/tablecmds.c:3245
-#: commands/tablecmds.c:3341
-#: commands/tablecmds.c:3402
-#: commands/tablecmds.c:3468
-#: commands/tablecmds.c:4608
-#: commands/tablecmds.c:4745
+#: commands/tablecmds.c:3154
+#: commands/tablecmds.c:3247
+#: commands/tablecmds.c:3299
+#: commands/tablecmds.c:3395
+#: commands/tablecmds.c:3456
+#: commands/tablecmds.c:3522
+#: commands/tablecmds.c:4662
+#: commands/tablecmds.c:4799
 #: parser/parse_relation.c:1641
 #: parser/parse_relation.c:1700
 #: parser/parse_relation.c:1913
@@ -3070,8 +3077,8 @@ msgid "functions in index predicate must be marked IMMUTABLE"
 msgstr "index yüklemindeki kullanılacak fonksiyon IMMUTABLE olarak tanımlanmaıldır"
 
 #: commands/indexcmds.c:475
-#: commands/tablecmds.c:1329
-#: parser/parse_expr.c:1098
+#: commands/tablecmds.c:1355
+#: parser/parse_expr.c:390
 #, c-format
 msgid "column \"%s\" does not exist"
 msgstr "\"%s\" sütunu mevcut değil"
@@ -3200,21 +3207,21 @@ msgstr "\"%s\" portalı çalıştırılamıyor"
 msgid "could not reposition held cursor"
 msgstr "tutulan cursorun yerini değiştirilemez"
 
-#: commands/tablecmds.c:294
+#: commands/tablecmds.c:295
 msgid "ON COMMIT can only be used on temporary tables"
 msgstr "ON COMMIT sadece geçici tablolarda kullanılabilir"
 
-#: commands/tablecmds.c:399
+#: commands/tablecmds.c:400
 #, c-format
 msgid "duplicate check constraint name \"%s\""
 msgstr "mukerrer check constraint adı: \"%s\""
 
-#: commands/tablecmds.c:555
-#: commands/tablecmds.c:1274
-#: commands/tablecmds.c:1480
-#: commands/tablecmds.c:2636
-#: commands/tablecmds.c:3798
-#: commands/tablecmds.c:5427
+#: commands/tablecmds.c:567
+#: commands/tablecmds.c:1300
+#: commands/tablecmds.c:1506
+#: commands/tablecmds.c:2662
+#: commands/tablecmds.c:3852
+#: commands/tablecmds.c:5481
 #: commands/trigger.c:147
 #: commands/trigger.c:552
 #: tcop/utility.c:182
@@ -3223,49 +3230,49 @@ msgstr "mukerrer check constraint adı: \"%s\""
 msgid "permission denied: \"%s\" is a system catalog"
 msgstr "erişim engellendi: \"%s\" bir sistem kataloğudur"
 
-#: commands/tablecmds.c:566
+#: commands/tablecmds.c:578
 #, c-format
 msgid "cannot truncate system relation \"%s\""
 msgstr "sistem tablosu \"%s\" truncate edilemez"
 
-#: commands/tablecmds.c:576
+#: commands/tablecmds.c:588
 msgid "cannot truncate temporary tables of other sessions"
 msgstr "diğer oturumların geçici tablolarını truncate edemezsiniz"
 
-#: commands/tablecmds.c:719
+#: commands/tablecmds.c:745
 #, c-format
 msgid "column \"%s\" duplicated"
 msgstr "\"%s\" sütunu mukerrerdir"
 
-#: commands/tablecmds.c:744
+#: commands/tablecmds.c:770
 #: parser/analyze.c:1067
 #: parser/analyze.c:1273
 #, c-format
 msgid "inherited relation \"%s\" is not a table"
 msgstr "inherited relation \"%s\" bir tablo değildir"
 
-#: commands/tablecmds.c:750
+#: commands/tablecmds.c:776
 #, c-format
 msgid "cannot inherit from temporary relation \"%s\""
 msgstr "\"%s\" geçici nesnesinden inherit yapılamaz"
 
-#: commands/tablecmds.c:767
+#: commands/tablecmds.c:793
 #, c-format
 msgid "inherited relation \"%s\" duplicated"
 msgstr "inherited relation \"%s\" mukerrerdir"
 
-#: commands/tablecmds.c:821
+#: commands/tablecmds.c:847
 #, c-format
 msgid "merging multiple inherited definitions of column \"%s\""
 msgstr "\"%s\" sütununun birden fazla inherited tanımını birleştiriliyor"
 
-#: commands/tablecmds.c:828
+#: commands/tablecmds.c:854
 #, c-format
 msgid "inherited column \"%s\" has a type conflict"
 msgstr "\"%s\" inherited sütunu tip çakışması yaşıyor"
 
-#: commands/tablecmds.c:830
-#: commands/tablecmds.c:975
+#: commands/tablecmds.c:856
+#: commands/tablecmds.c:1001
 #: parser/parse_coerce.c:239
 #: parser/parse_coerce.c:1130
 #: parser/parse_coerce.c:1147
@@ -3274,283 +3281,283 @@ msgstr "\"%s\" inherited sütunu tip çakışması yaşıyor"
 msgid "%s versus %s"
 msgstr "%s versus %s"
 
-#: commands/tablecmds.c:966
+#: commands/tablecmds.c:992
 #, c-format
 msgid "merging column \"%s\" with inherited definition"
 msgstr "\"%s\" sütunu inherited tanımı ile birleştiriliyor"
 
-#: commands/tablecmds.c:973
+#: commands/tablecmds.c:999
 #, c-format
 msgid "column \"%s\" has a type conflict"
 msgstr "\"%s\" sütununda tip çakışması"
 
-#: commands/tablecmds.c:1024
+#: commands/tablecmds.c:1050
 #, c-format
 msgid "column \"%s\" inherits conflicting default values"
 msgstr "\"%s\" sütunu çakışan değerleri inherit ediyor"
 
-#: commands/tablecmds.c:1026
+#: commands/tablecmds.c:1052
 msgid "To resolve the conflict, specify a default explicitly."
 msgstr "Çakışmayı çözmek için varsayılan değeri açıkca belirtin."
 
-#: commands/tablecmds.c:1319
+#: commands/tablecmds.c:1345
 #, c-format
 msgid "inherited column \"%s\" must be renamed in child tables too"
 msgstr "\"%s\" inherited sütununun adı alt tablolarda da değiştirilmelidir"
 
-#: commands/tablecmds.c:1337
+#: commands/tablecmds.c:1363
 #, c-format
 msgid "cannot rename system column \"%s\""
 msgstr "\"%s\" sistem sütununun adı değiştirilemez"
 
-#: commands/tablecmds.c:1347
+#: commands/tablecmds.c:1373
 #, c-format
 msgid "cannot rename inherited column \"%s\""
 msgstr "\"%s\" inherited sütununun adı değiştirilemez"
 
-#: commands/tablecmds.c:1358
-#: commands/tablecmds.c:2919
+#: commands/tablecmds.c:1384
+#: commands/tablecmds.c:2946
 #, c-format
 msgid "column \"%s\" of relation \"%s\" already exists"
 msgstr "\"%2$s\" nesnesinin \"%1$s\" sütunu zaten mevcut"
 
-#: commands/tablecmds.c:2219
+#: commands/tablecmds.c:2245
 #, c-format
 msgid "cannot rewrite system relation \"%s\""
 msgstr "\"%s\" sistem tablosu yeniden yazılamaz"
 
-#: commands/tablecmds.c:2229
+#: commands/tablecmds.c:2255
 msgid "cannot rewrite temporary tables of other sessions"
 msgstr "diğer oturumların geçici tabloları yeniden yazılamaz"
 
-#: commands/tablecmds.c:2520
+#: commands/tablecmds.c:2546
 #, c-format
 msgid "check constraint \"%s\" is violated by some row"
 msgstr "\"%s\" bütünlük kısıtlaması bir(kaç) satır tarafından ihlal edilmiş"
 
-#: commands/tablecmds.c:2533
+#: commands/tablecmds.c:2559
 #, c-format
 msgid "column \"%s\" contains null values"
 msgstr "\"%s\" sütunu null değerleri içermektedir"
 
-#: commands/tablecmds.c:2618
+#: commands/tablecmds.c:2644
 #, c-format
 msgid "\"%s\" is not a table or view"
 msgstr "\"%s\" bir tablo veya view değildir"
 
-#: commands/tablecmds.c:2771
+#: commands/tablecmds.c:2797
 #, c-format
 msgid "cannot alter table \"%s\" because column \"%s\".\"%s\" uses its rowtype"
 msgstr "\"%2$s\".\"%3$s\" sütunu onun rowtype veri tipini kullandığı için \"%1$s\" tablosu değiştirilemez"
 
-#: commands/tablecmds.c:2837
+#: commands/tablecmds.c:2863
 msgid "column must be added to child tables too"
 msgstr "sütun, alt tablolarana da eklenmelidir"
 
-#: commands/tablecmds.c:2880
+#: commands/tablecmds.c:2907
 #, c-format
 msgid "child table \"%s\" has different type for column \"%s\""
 msgstr "\"%s\" alt tablosundaki  \"%s\" sütununun tipi farklıdır"
 
-#: commands/tablecmds.c:2892
+#: commands/tablecmds.c:2919
 #, c-format
 msgid "merging definition of column \"%s\" for child \"%s\""
 msgstr "\"%s\" sütunun tanımı \"%s\" alt tablo için birleştiriliyor"
 
-#: commands/tablecmds.c:3109
-#: commands/tablecmds.c:3202
-#: commands/tablecmds.c:3252
-#: commands/tablecmds.c:3348
-#: commands/tablecmds.c:3409
-#: commands/tablecmds.c:4617
+#: commands/tablecmds.c:3163
+#: commands/tablecmds.c:3256
+#: commands/tablecmds.c:3306
+#: commands/tablecmds.c:3402
+#: commands/tablecmds.c:3463
+#: commands/tablecmds.c:4671
 #, c-format
 msgid "cannot alter system column \"%s\""
 msgstr "\"%s\" sistem sütunu değiştirilemez"
 
-#: commands/tablecmds.c:3145
+#: commands/tablecmds.c:3199
 #, c-format
 msgid "column \"%s\" is in a primary key"
 msgstr "\"%s\" sütunu bir birincil anahtardır"
 
-#: commands/tablecmds.c:3295
-#: commands/tablecmds.c:5416
+#: commands/tablecmds.c:3349
+#: commands/tablecmds.c:5470
 #, c-format
 msgid "\"%s\" is not a table or index"
 msgstr "\"%s\" bir tablo veya index değil"
 
-#: commands/tablecmds.c:3322
+#: commands/tablecmds.c:3376
 #, c-format
 msgid "statistics target %d is too low"
 msgstr "statistics target %d çok düşüktür"
 
-#: commands/tablecmds.c:3330
+#: commands/tablecmds.c:3384
 #, c-format
 msgid "lowering statistics target to %d"
 msgstr "statistics target, %d değerine düşürülmektedir"
 
-#: commands/tablecmds.c:3390
+#: commands/tablecmds.c:3444
 #, c-format
 msgid "invalid storage type \"%s\""
 msgstr "geçersiz saklama tipi \"%s\""
 
-#: commands/tablecmds.c:3421
+#: commands/tablecmds.c:3475
 #, c-format
 msgid "column data type %s can only have storage PLAIN"
 msgstr "%s sütün veri tipleri sadece PLAIN depolama yöntemini kullanabilir"
 
-#: commands/tablecmds.c:3478
+#: commands/tablecmds.c:3532
 #, c-format
 msgid "cannot drop system column \"%s\""
 msgstr "\"%s\" sistem sütunu kaldırılamaz"
 
-#: commands/tablecmds.c:3485
+#: commands/tablecmds.c:3539
 #, c-format
 msgid "cannot drop inherited column \"%s\""
 msgstr "\"%s\" inherited sütunu kaldırılamaz"
 
-#: commands/tablecmds.c:3786
+#: commands/tablecmds.c:3840
 #, c-format
 msgid "referenced relation \"%s\" is not a table"
 msgstr " rerefans edilen \"%s\" nesnesi bir tablo değildir"
 
-#: commands/tablecmds.c:3820
+#: commands/tablecmds.c:3874
 msgid "cannot reference temporary table from permanent table constraint"
 msgstr "sürekli tablo kısıtlayıcısından geçici tablo referans edilemez"
 
-#: commands/tablecmds.c:3827
+#: commands/tablecmds.c:3881
 msgid "cannot reference permanent table from temporary table constraint"
 msgstr "geçeci tablo kısıtlayıcısından sürekli  tablo referans edilemez"
 
-#: commands/tablecmds.c:3872
-#: commands/tablecmds.c:4362
+#: commands/tablecmds.c:3926
+#: commands/tablecmds.c:4416
 msgid "number of referencing and referenced columns for foreign key disagree"
 msgstr "foreign key'in referans eden ve referans edilen sütun sayısı uyuşmuyor"
 
-#: commands/tablecmds.c:3893
+#: commands/tablecmds.c:3947
 #, c-format
 msgid "foreign key constraint \"%s\" cannot be implemented"
 msgstr "\"%s\" foreign key constrain oluşturulamaz"
 
-#: commands/tablecmds.c:3896
+#: commands/tablecmds.c:3950
 #, c-format
 msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s."
 msgstr "\"%s\" ve \"%s\" anahtar sütunların tipi farklı: %s ve %s."
 
-#: commands/tablecmds.c:3910
+#: commands/tablecmds.c:3964
 #, c-format
 msgid "foreign key constraint \"%s\" will require costly sequential scans"
 msgstr "\"%s\" foreign key constraint, parfomans düşüren sequential scan'lara sebep olacak"
 
-#: commands/tablecmds.c:3913
+#: commands/tablecmds.c:3967
 #, c-format
 msgid "Key columns \"%s\" and \"%s\" are of different types: %s and %s."
 msgstr "\"%s\" ve \"%s\" anahtar sütunların tipleri farklı: %s ve %s."
 
-#: commands/tablecmds.c:3998
+#: commands/tablecmds.c:4052
 #, c-format
 msgid "column \"%s\" referenced in foreign key constraint does not exist"
 msgstr "foreign key kısıtlaması tarafından referans edilen sütun \"%s\" mevcut değil"
 
-#: commands/tablecmds.c:4003
+#: commands/tablecmds.c:4057
 #, c-format
 msgid "cannot have more than %d keys in a foreign key"
 msgstr "foreign key kısıtlamasında %d'dan fazla anahtar olamaz"
 
-#: commands/tablecmds.c:4072
+#: commands/tablecmds.c:4126
 #, c-format
 msgid "there is no primary key for referenced table \"%s\""
 msgstr "referans edilen \"%s\" tablosunda primary key mevcut değil"
 
-#: commands/tablecmds.c:4190
+#: commands/tablecmds.c:4244
 #, c-format
 msgid "there is no unique constraint matching given keys for referenced table \"%s\""
 msgstr "\"%s\" referans edilen tablosunda belirtilen anahtarlara uyan bir unique constraint yok"
 
-#: commands/tablecmds.c:4574
+#: commands/tablecmds.c:4628
 #: commands/trigger.c:2785
 #, c-format
 msgid "constraint \"%s\" does not exist"
 msgstr "constraint \"%s\" mevcut değil"
 
-#: commands/tablecmds.c:4579
+#: commands/tablecmds.c:4633
 #, c-format
 msgid "multiple constraints named \"%s\" were dropped"
 msgstr "\"%s\" adlı birden fazla constraint drop edilmiş"
 
-#: commands/tablecmds.c:4624
+#: commands/tablecmds.c:4678
 #, c-format
 msgid "cannot alter inherited column \"%s\""
 msgstr "\"%s\" inherited sütunu değiştirilemez"
 
-#: commands/tablecmds.c:4664
+#: commands/tablecmds.c:4718
 msgid "transform expression must not return a set"
 msgstr "transform ifadesi bir set döndürmemelidir"
 
-#: commands/tablecmds.c:4670
+#: commands/tablecmds.c:4724
 msgid "cannot use subquery in transform expression"
 msgstr "transform ifadesinde set kullanılamaz"
 
-#: commands/tablecmds.c:4674
+#: commands/tablecmds.c:4728
 msgid "cannot use aggregate function in transform expression"
 msgstr "transform ifadesinde aggregate function kullanılamaz"
 
-#: commands/tablecmds.c:4691
+#: commands/tablecmds.c:4745
 #, c-format
 msgid "column \"%s\" cannot be cast to type \"%s\""
 msgstr "\"%s\" sütunu \"%s\" tipine dönüştürülemez"
 
-#: commands/tablecmds.c:4717
+#: commands/tablecmds.c:4771
 #, c-format
 msgid "type of inherited column \"%s\" must be changed in child tables too"
 msgstr "\"%s\" inherinted sütununların tipi çocuk tablolarında da değiştirilmelidir"
 
-#: commands/tablecmds.c:4755
+#: commands/tablecmds.c:4809
 #, c-format
 msgid "cannot alter type of column \"%s\" twice"
 msgstr "\"%s\" sütununun tipini iki kez değiştirilemez"
 
-#: commands/tablecmds.c:4789
+#: commands/tablecmds.c:4843
 #, c-format
 msgid "default for column \"%s\" cannot be cast to type \"%s\""
 msgstr "\"%s\" sütunun varsayılan tipi \"%s\" tipine dönüştürülemez"
 
-#: commands/tablecmds.c:4889
+#: commands/tablecmds.c:4943
 msgid "cannot alter type of a column used by a view or rule"
 msgstr "view veya rule tarafından kullanılan sütunun tipini değiştirilemedi"
 
-#: commands/tablecmds.c:4890
+#: commands/tablecmds.c:4944
 #, c-format
 msgid "%s depends on column \"%s\""
 msgstr "%s sütunu \"%s\" sütununa bağlıdır"
 
-#: commands/tablecmds.c:5206
+#: commands/tablecmds.c:5260
 #, c-format
 msgid "\"%s\" is not a table, TOAST table, index, view, or sequence"
 msgstr "\"%s\" bir tablo, TOAST tablosu, index, view ya da sequence değildir"
 
-#: commands/tablecmds.c:5446
+#: commands/tablecmds.c:5500
 msgid "cannot have multiple SET TABLESPACE subcommands"
 msgstr "birden fazla SET TABLESPACE alt komutu veremezsiniz"
 
-#: commands/tablecmds.c:5476
+#: commands/tablecmds.c:5530
 #, c-format
 msgid "cannot move system relation \"%s\""
 msgstr "\"%s\" sistem nesnesi taşınamaz"
 
-#: commands/tablecmds.c:5486
+#: commands/tablecmds.c:5540
 msgid "cannot move temporary tables of other sessions"
 msgstr "diğer oturumların geçici tabloları taşınamaz"
 
-#: commands/tablecmds.c:5694
+#: commands/tablecmds.c:5748
 msgid "shared tables cannot be toasted after initdb"
 msgstr "initdb işleminden sonra paylaşılmış tablolar toast edilemez"
 
-#: commands/tablecmds.c:5709
+#: commands/tablecmds.c:5763
 #, c-format
 msgid "table \"%s\" already has a TOAST table"
 msgstr "\"%s\" tablosunun zaten bir TOAST tablosu vardır"
 
-#: commands/tablecmds.c:5726
+#: commands/tablecmds.c:5780
 #, c-format
 msgid "table \"%s\" does not need a TOAST table"
 msgstr "\"%s\" tablosunun TOAST tablosuna gereksinmesi yoktur"
@@ -4102,7 +4109,7 @@ msgid "\"%s\" is not a valid base type for a domain"
 msgstr "\"%s\" tipi bir domain için geçerli bir tip değildir"
 
 #: commands/typecmds.c:617
-#: commands/typecmds.c:1504
+#: commands/typecmds.c:1505
 msgid "foreign key constraints not possible for domains"
 msgstr "domainlerde için foreign key constraint kullanılamaz"
 
@@ -4116,22 +4123,22 @@ msgid "conflicting NULL/NOT NULL constraints"
 msgstr "çakışan NULL/NOT NULL constraint"
 
 #: commands/typecmds.c:695
-#: commands/typecmds.c:1522
+#: commands/typecmds.c:1523
 msgid "unique constraints not possible for domains"
 msgstr "domainlerde için unique constraint kullanılamaz"
 
 #: commands/typecmds.c:701
-#: commands/typecmds.c:1528
+#: commands/typecmds.c:1529
 msgid "primary key constraints not possible for domains"
 msgstr "domainlerde için primary key constraint kullanılamaz"
 
 #: commands/typecmds.c:710
-#: commands/typecmds.c:1537
+#: commands/typecmds.c:1538
 msgid "specifying constraint deferrability not supported for domains"
 msgstr "constraint srtelenebirliği domainlerde belirtilemez"
 
 #: commands/typecmds.c:831
-#: commands/typecmds.c:1780
+#: commands/typecmds.c:1781
 #, c-format
 msgid "\"%s\" is not a domain"
 msgstr "\"%s\" bir domain değildir"
@@ -4155,31 +4162,31 @@ msgstr "%s tipi analiz fonksiyonu \"boolean\" tipini döndürmelidir"
 msgid "composite type must have at least one attribute"
 msgstr "compisite tipinde en az bir öğe olmalıdır"
 
-#: commands/typecmds.c:1341
+#: commands/typecmds.c:1342
 #, c-format
 msgid "column \"%s\" of table \"%s\" contains null values"
 msgstr "\"%2$s\" tablosunun \"%1$s\" sütununda null değerler mevcut"
 
-#: commands/typecmds.c:1608
+#: commands/typecmds.c:1609
 #, c-format
 msgid "column \"%s\" of table \"%s\" contains values that violate the new constraint"
 msgstr "\"%2$s\" tablosunun \"%1$s\" sütununda yeni constrainti ihlal eden değerler mevcut"
 
-#: commands/typecmds.c:1814
+#: commands/typecmds.c:1815
 #, c-format
 msgid "constraint \"%s\" for domain \"%s\" already exists"
 msgstr "\"%2$s\" domain için \"%1$s\" constraint için zaten mevcut"
 
-#: commands/typecmds.c:1855
-#: commands/typecmds.c:1864
+#: commands/typecmds.c:1856
+#: commands/typecmds.c:1865
 msgid "cannot use table references in domain check constraint"
 msgstr "domain check constraintte tablo referansları kullanılamaz"
 
-#: commands/typecmds.c:1876
+#: commands/typecmds.c:1877
 msgid "cannot use aggregate in check constraint"
 msgstr "check constraint içinde aggregate kullanılamaz"
 
-#: commands/typecmds.c:2090
+#: commands/typecmds.c:2094
 #, c-format
 msgid "\"%s\" is a table's row type"
 msgstr "\"%s\" bir tablo satrır tipidir"
@@ -4237,7 +4244,7 @@ msgstr "kullanıcı ID %d zaten mevcut"
 #: commands/user.c:1104
 #: commands/user.c:1233
 #: commands/variable.c:664
-#: utils/cache/lsyscache.c:2044
+#: utils/cache/lsyscache.c:2045
 #: utils/init/miscinit.c:335
 #, c-format
 msgid "user \"%s\" does not exist"
@@ -4319,6 +4326,15 @@ msgstr "group ID %d zaten atanmış"
 msgid "must be superuser to alter groups"
 msgstr "grupları değiştirmek için superuser olmalısınız"
 
+#: commands/user.c:1535
+#: commands/user.c:1772
+#: commands/user.c:1807
+#: libpq/pqcomm.c:501
+#: utils/cache/lsyscache.c:2074
+#, c-format
+msgid "group \"%s\" does not exist"
+msgstr "\"%s\" grubu mevcut değil"
+
 #: commands/user.c:1597
 #, c-format
 msgid "group \"%s\" does not have any members"
@@ -4612,15 +4628,32 @@ msgstr "Son SELECT az satır döndürüyor."
 msgid "return type %s is not supported for SQL functions"
 msgstr "SQL fonksiyonların içinde %s dönüş tipi desteklenmemektedir"
 
-#: executor/nodeAgg.c:1330
+#: executor/nodeAgg.c:1360
 #, c-format
 msgid "aggregate %u needs to have compatible input type and transition type"
 msgstr "%u aggregate fonksiyonu uyumlu giriş ve geçiş tiplerine sahip olmalıdır"
 
-#: executor/nodeFunctionscan.c:93
-msgid "query-specified return row and actual function return row do not match"
+#: executor/nodeFunctionscan.c:368
+#: executor/nodeFunctionscan.c:382
+#: executor/nodeFunctionscan.c:392
+msgid "function return row and query-specified return row do not match"
 msgstr "sorgu-tanımlı sonuç satırı ve gerçek sonuç satırı uyuşmamaktadır"
 
+#: executor/nodeFunctionscan.c:369
+#, c-format
+msgid "Returned row contains %d attributes, but query expects %d."
+msgstr "Sorgu, döndürülen satırın %2$d sütundan oluşmasını beklerken, %1$d sürun geldi."
+
+#: executor/nodeFunctionscan.c:383
+#, c-format
+msgid "Returned type %s at ordinal position %d, but query expects %s."
+msgstr "Sorgu, %2$d adresine döndürme tipi %1$s iken,  %3$s bekliyor."
+
+#: executor/nodeFunctionscan.c:393
+#, c-format
+msgid "Physical storage mismatch on dropped attribute at ordinal position %d."
+msgstr "%d adresinde düşürülmüş sütunda fiziksel saklam uyuşmazlığı."
+
 #: executor/nodeHashjoin.c:571
 #: executor/nodeHashjoin.c:581
 #, c-format
@@ -4674,7 +4707,7 @@ msgid "RIGHT JOIN is only supported with merge-joinable join conditions"
 msgstr "RIGHT JOIN ancak merge-join işlemine uygun şartlarında desteklenmektedir"
 
 #: executor/nodeMergejoin.c:1491
-#: optimizer/path/joinpath.c:839
+#: optimizer/path/joinpath.c:840
 msgid "FULL JOIN is only supported with merge-joinable join conditions"
 msgstr "FULL JOIN ancak merge-join işlemine uygun şartlarında desteklenmektedir"
 
@@ -5660,8 +5693,8 @@ msgstr "CREATE işleminin belirttiği şema (%s) yaratılacak (%s) olanından fa
 
 #: parser/analyze.c:3144
 #: parser/parse_coerce.c:221
-#: parser/parse_expr.c:116
-#: parser/parse_expr.c:122
+#: parser/parse_expr.c:516
+#: parser/parse_expr.c:522
 #, c-format
 msgid "there is no parameter $%d"
 msgstr "$%d parametresi yoktur"
@@ -5703,7 +5736,7 @@ msgstr "$%d parametresi için geçersiz tip bulundu"
 #: parser/parse_coerce.c:723
 #: parser/parse_coerce.c:739
 #: parser/parse_coerce.c:753
-#: parser/parse_expr.c:1671
+#: parser/parse_expr.c:1737
 #, c-format
 msgid "cannot cast type %s to %s"
 msgstr "%s tipi %s tipine dökülemiyor"
@@ -5777,9 +5810,9 @@ msgstr "giriş, \"unknown\" tipinde olduğu için anyarray/anyelement tipi belir
 #: parser/parse_coerce.c:1228
 #: parser/parse_coerce.c:1245
 #: parser/parse_coerce.c:1299
-#: parser/parse_expr.c:807
-#: parser/parse_expr.c:1364
-#: parser/parse_expr.c:1403
+#: parser/parse_expr.c:1159
+#: parser/parse_expr.c:1430
+#: parser/parse_expr.c:1469
 #: parser/parse_oper.c:920
 #, c-format
 msgid "could not find array type for data type %s"
@@ -5853,57 +5886,57 @@ msgstr "\"%s\" tablosu için subquery tanımında eksik FROM öğesi ekleniyor"
 msgid "adding missing FROM-clause entry for table \"%s\""
 msgstr "\"%s\" tablo öğesinde eksik FROM öğesi ekleniyor"
 
-#: parser/parse_expr.c:361
+#: parser/parse_expr.c:722
 msgid "NULLIF requires = operator to yield boolean"
 msgstr "boolean değerini almak için NULLIF, = işlemini kullanmalıdır"
 
-#: parser/parse_expr.c:486
+#: parser/parse_expr.c:966
 msgid "subquery must return a column"
 msgstr "subquery, sütün döndürmeli"
 
-#: parser/parse_expr.c:492
+#: parser/parse_expr.c:972
 msgid "subquery must return only one column"
 msgstr "subquery, bir tane sütun getirmelidir"
 
-#: parser/parse_expr.c:549
+#: parser/parse_expr.c:1028
 #, c-format
 msgid "row comparison cannot use operator %s"
 msgstr "satır kaşılaştırması %s işlemi kullanamıyor"
 
-#: parser/parse_expr.c:576
+#: parser/parse_expr.c:1054
 msgid "subquery has too many columns"
 msgstr "subquery çok fazla sütuna sahip"
 
-#: parser/parse_expr.c:594
+#: parser/parse_expr.c:1072
 #, c-format
 msgid "operator %s must return type boolean, not type %s"
 msgstr "%s operator %s tipini değil, boolean tipini döndürmelidir"
 
-#: parser/parse_expr.c:597
-#: parser/parse_expr.c:604
+#: parser/parse_expr.c:1075
+#: parser/parse_expr.c:1082
 msgid "The operator of a quantified predicate subquery must return type boolean."
 msgstr "Quantified predicate subquery işlemi boolean tipinde sonuç getirmelidir."
 
-#: parser/parse_expr.c:602
+#: parser/parse_expr.c:1080
 #, c-format
 msgid "operator %s must not return a set"
 msgstr "%s operatörü set döndürmemelidir"
 
-#: parser/parse_expr.c:614
+#: parser/parse_expr.c:1092
 msgid "subquery has too few columns"
 msgstr "subquery'de yetersiz sütun sayısı"
 
-#: parser/parse_expr.c:1705
-#: parser/parse_expr.c:1784
+#: parser/parse_expr.c:1771
+#: parser/parse_expr.c:1850
 msgid "unequal number of entries in row expression"
 msgstr "satır ifadesinde eşitsiz öğe sayısı"
 
-#: parser/parse_expr.c:1726
+#: parser/parse_expr.c:1792
 #, c-format
 msgid "operator %s is not supported for row expressions"
 msgstr "satır ifadelerinde %s işlemi kullanılamaz"
 
-#: parser/parse_expr.c:1821
+#: parser/parse_expr.c:1887
 msgid "IS DISTINCT FROM requires = operator to yield boolean"
 msgstr "boolean değerini almak için IS DISTINCT FROM, = işlemini kullanmalıdır"
 
@@ -6374,7 +6407,7 @@ msgstr "parse hatası; ayrıca vertual bellek de dolmuştur"
 #: gram.y:8242
 #: y.tab.c:19082
 msgid "syntax error"
-msgstr "söz dizim hatası"
+msgstr "söz dizim hatası "
 
 #: y.tab.c:19196
 msgid "parser stack overflow"
@@ -6788,23 +6821,23 @@ msgstr "veritabanı kurtarma modundadır"
 #: storage/ipc/sinval.c:105
 #: storage/lmgr/proc.c:246
 msgid "sorry, too many clients already"
-msgstr "özgünüm, istemci sayısı çok fazla"
+msgstr "üzgünüm, istemci sayısı çok fazla"
 
 #: postmaster/postmaster.c:1790
 msgid "received SIGHUP, reloading configuration files"
-msgstr "SIGHUP sinyali alınmıştır, konfigurasyon dosyaları yeniden okunuyor"
+msgstr "SIGHUP sinyali alınmıştır, yapılandırma dosyaları yeniden okunuyor"
 
 #: postmaster/postmaster.c:1842
 msgid "received smart shutdown request"
-msgstr "smart shutdown isteği alındı"
+msgstr "akıllı kapatma isteği alındı"
 
 #: postmaster/postmaster.c:1878
 msgid "received fast shutdown request"
-msgstr "fast shutdown isteği alındı"
+msgstr "hızlı kapatma isteği alındı"
 
 #: postmaster/postmaster.c:1885
 msgid "aborting any active transactions"
-msgstr "actif transactionlar iptal ediliyor"
+msgstr "aktif transactionlar iptal ediliyor"
 
 #: postmaster/postmaster.c:1923
 msgid "received immediate shutdown request"
@@ -6836,7 +6869,7 @@ msgstr "system logger süreci"
 
 #: postmaster/postmaster.c:2127
 msgid "all server processes terminated; reinitializing"
-msgstr "tüm sunucu süreçleri durdurulmuş; shared memory ve spamothorları yeniden tanımlanıyor"
+msgstr "tüm sunucu süreçleri durduruldu; yeniden ilklendiriliyor"
 
 #: postmaster/postmaster.c:2173
 #: postmaster/postmaster.c:2183
@@ -6850,17 +6883,17 @@ msgstr "diğer aktif sunucu süreçleri durduruluyor"
 #: postmaster/postmaster.c:2325
 #, c-format
 msgid "%s (PID %d) exited with exit code %d"
-msgstr "%s (PID %d) exit code %d ile sonlandırılmış"
+msgstr "%s (PID %d) exit code %d ile sonlandı"
 
 #: postmaster/postmaster.c:2334
 #, c-format
 msgid "%s (PID %d) was terminated by signal %d"
-msgstr "%s (PID %d) %d sinyali tarafından sonlandırılmış"
+msgstr "%s (PID %d) %d sinyali tarafından sonlandırıldı"
 
 #: postmaster/postmaster.c:2343
 #, c-format
 msgid "%s (PID %d) exited with unexpected status %d"
-msgstr "%s (PID %d) bekleynmeyen status kodu ile sonlandırılmış %d"
+msgstr "%s (PID %d) beklenmeyen status kodu ile sonlandırıldı %d"
 
 #: postmaster/postmaster.c:2468
 #, c-format
@@ -6879,7 +6912,7 @@ msgstr "getnameinfo_all() başarısız: %s"
 #: postmaster/postmaster.c:2655
 #, c-format
 msgid "connection received: host=%s port=%s"
-msgstr "connection alındı: host=%s port=%s"
+msgstr "bağlantı alındı: istemci=%s port=%s"
 
 #: postmaster/postmaster.c:2727
 #, c-format
@@ -6894,12 +6927,12 @@ msgstr "\"%s\" sunucu süreci başlatma hatası: %m"
 #: postmaster/postmaster.c:3551
 #, c-format
 msgid "could not fork startup process: %m"
-msgstr "startup süreci başlatma hatası: %m"
+msgstr "başlatma süreci fork edilemedi: %m"
 
 #: postmaster/postmaster.c:3555
 #, c-format
 msgid "could not fork background writer process: %m"
-msgstr "backgroun writer süreci başlatma hatası: %m"
+msgstr "background writer süreci başlatılamadı: %m"
 
 #: postmaster/postmaster.c:3559
 #, c-format
@@ -6925,15 +6958,17 @@ msgstr "\"%s\" backend parametreler dosyasından okunamıyor: %s\n"
 #: postmaster/postmaster.c:3807
 #, c-format
 msgid "could not remove file \"%s\": %s\n"
-msgstr "\"%s\" dosyası silme hatası: %s\n"
+msgstr "\"%s\" dosyası silinemedi: %s\n"
 
 #: postmaster/postmaster.c:3820
 #, c-format
+#, fuzzy
 msgid "could not map view of backend variables: error code %d\n"
 msgstr "backend değişkenleri map view hatası: hata kodu: %d\n"
 
 #: postmaster/postmaster.c:3829
 #, c-format
+#, fuzzy
 msgid "could not unmap view of backend variables: error code %d\n"
 msgstr "backend değişkenleri unmap view hatası: hata kodu: %d\n"
 
@@ -6954,11 +6989,11 @@ msgstr "checkpoint işlemi çok sık çağırılıyor (%d saniye aralıkla)"
 
 #: postmaster/bgwriter.c:338
 msgid "Consider increasing the configuration parameter \"checkpoint_segments\"."
-msgstr "\"checkpoint_segments\" konfigurasyon parametresi ile bu aralığı büyütebilirsiniz."
+msgstr "\"checkpoint_segments\" yapılandırma parametresi ile bu aralığı büyütebilirsiniz."
 
 #: postmaster/bgwriter.c:488
 msgid "not enough shared memory for background writer"
-msgstr "arka planı writer için sharem memory yeterli değildir"
+msgstr "arka planı writer için shared memory yeterli değildir"
 
 #: postmaster/bgwriter.c:553
 msgid "checkpoint request failed"
@@ -6981,22 +7016,22 @@ msgstr "transaction log dosyası \"%s\" arşivlenemedi: çok fazla başarısız
 #: postmaster/pgarch.c:474
 #, c-format
 msgid "archive command \"%s\" failed: return code %d"
-msgstr "arşıv komutu \"%s\" başarısız: döndürülen kod %d"
+msgstr "arşiv komutu \"%s\" başarısız: döndürülen kod %d"
 
 #: postmaster/pgarch.c:479
 #, c-format
 msgid "archived transaction log file \"%s\""
-msgstr "archived transaction log dosyası \"%s\""
+msgstr "arşivlenen transaction kayıt dosyası \"%s\""
 
 #: postmaster/pgarch.c:525
 #, c-format
 msgid "could not open archive status directory \"%s\": %m"
-msgstr "archive status dizini \"%s\" açılamıyor: %m"
+msgstr "arşiv durum dizini \"%s\" açılamıyor: %m"
 
 #: postmaster/pgarch.c:564
 #, c-format
 msgid "could not read archive status directory \"%s\": %m"
-msgstr "archive status dizini \"%s\" okunamıyor: %m"
+msgstr "arşiv durum dizini \"%s\" okunamıyor: %m"
 
 #: postmaster/pgstat.c:259
 #, c-format
@@ -7006,22 +7041,22 @@ msgstr "\"localhost\" adresi çözümlenemedi: %s"
 #: postmaster/pgstat.c:287
 #, c-format
 msgid "could not create socket for statistics collector: %m"
-msgstr "statistic collectror socket oluşturma hatası: %m"
+msgstr "istatistik toplayıcı socket oluşturma hatası: %m"
 
 #: postmaster/pgstat.c:299
 #, c-format
 msgid "could not bind socket for statistics collector: %m"
-msgstr "statistic collectror socket bind hatası: %m"
+msgstr "istatistik toplayıcı soket bind hatası: %m"
 
 #: postmaster/pgstat.c:310
 #, c-format
 msgid "could not get address of socket for statistics collector: %m"
-msgstr "istatistik toplayıcı sürecinin socket adresi alınamadı: %m"
+msgstr "istatistik toplayıcı sürecinin soket adresi alınamadı: %m"
 
 #: postmaster/pgstat.c:326
 #, c-format
 msgid "could not connect socket for statistics collector: %m"
-msgstr "statistic collectror socket bağlama hatası: %m"
+msgstr "statistic collectror soket bağlama hatası: %m"
 
 #: postmaster/pgstat.c:343
 #, c-format
@@ -7032,7 +7067,7 @@ msgstr "istatistik toplayıcı sürecine test mesajı gönderme hatası: %m"
 #: postmaster/pgstat.c:1565
 #, c-format
 msgid "select() failed in statistics collector: %m"
-msgstr "istatistik toplayıcı süreci select() hatası: %m"
+msgstr "istatistik toplayıcı sürecinde select() hatası: %m"
 
 #: postmaster/pgstat.c:383
 msgid "test message did not get through on socket for statistics collector"
@@ -7041,16 +7076,16 @@ msgstr "istatistik toplayıcı sürecine test mesajı gönderilemedi"
 #: postmaster/pgstat.c:395
 #, c-format
 msgid "could not receive test message on socket for statistics collector: %m"
-msgstr "istatistik toplayıcı süreci test mesajı alma hatası: %m"
+msgstr "istatistik toplayıcı süreci deneme mesajı alma hatası: %m"
 
 #: postmaster/pgstat.c:405
 msgid "incorrect test message transmission on socket for statistics collector"
-msgstr "istatistik toplayıcı socket aracılığı ile mesaj gönderme hatası"
+msgstr "istatistik toplayıcı sokket aracılığı ile mesaj gönderme hatası"
 
 #: postmaster/pgstat.c:429
 #, c-format
 msgid "could not set statistics collector socket to nonblocking mode: %m"
-msgstr "istatistik toplayıc socketi nonblocking durumuna getirilemedi: %m"
+msgstr "istatistik toplayıcı soketi nonblocking durumuna getirilemedi: %m"
 
 #: postmaster/pgstat.c:439
 msgid "disabling statistics collector for lack of working socket"
@@ -7067,31 +7102,31 @@ msgstr "istatistik tampon süreci başlatılamıyor: %m"
 
 #: postmaster/pgstat.c:957
 msgid "must be superuser to reset statistics counters"
-msgstr "istatistik sayaçları sadece veritabanı superuser sıfırlayabilir"
+msgstr "istatistik sayaçlarını sadece veritabanı superuserı sıfırlayabilir"
 
 #: postmaster/pgstat.c:1379
 #, c-format
 msgid "could not create pipe for statistics buffer: %m"
-msgstr "statistics tamponu için pipe oluşturma hatası: %m"
+msgstr "istatistik tamponu için pipe oluşturma hatası: %m"
 
 #: postmaster/pgstat.c:1391
 #, c-format
 msgid "could not fork statistics collector: %m"
-msgstr "statistics collector başlatılamıyor: %m"
+msgstr "istatistik toplayıcı başlatılamıyor: %m"
 
 #: postmaster/pgstat.c:1606
 #, c-format
 msgid "could not read from statistics collector pipe: %m"
-msgstr "statistics collector pipe okuma hatası: %m"
+msgstr "istatistik toplayıcı pipe okuma hatası: %m"
 
 #: postmaster/pgstat.c:1627
 msgid "invalid statistics message length"
-msgstr "istatistik mesaj uzunluğu yanlıştır"
+msgstr "geçersiz istatistik mesaj uzunluğu "
 
 #: postmaster/pgstat.c:1772
 #, c-format
 msgid "could not set statistics collector pipe to nonblocking mode: %m"
-msgstr "istatistik toplayıc pipe nonblocking durumuna getirilemedi: %m"
+msgstr "istatistik toplayıcı pipe nonblocking durumuna getirilemedi: %m"
 
 #: postmaster/pgstat.c:1803
 msgid "statistics buffer is full"
@@ -7105,7 +7140,7 @@ msgstr "istatistik toplama süreci içerisinde select() hatası: %m"
 #: postmaster/pgstat.c:1848
 #, c-format
 msgid "could not read statistics message: %m"
-msgstr "istatistik mesajı okuma hatası: %m"
+msgstr "istatistik mesajı okunamadı: %m"
 
 #: postmaster/pgstat.c:1911
 #, c-format
@@ -7115,13 +7150,13 @@ msgstr "statistics collector pipe yazma hatası: %m"
 #: postmaster/pgstat.c:1986
 #, c-format
 msgid "invalid server process ID %d"
-msgstr "sunucu süreci ID %d geçersiz"
+msgstr "geçersiz sunucu süreci ID %d"
 
 #: postmaster/pgstat.c:2045
 #: postmaster/pgstat.c:2120
 #: postmaster/pgstat.c:2718
 msgid "out of memory in statistics collector --- abort"
-msgstr "statistics collector sürecinde bellek yetersizliği --- abort"
+msgstr "istatistik toplayıcıda yetersiz bellek --- abort"
 
 #: postmaster/pgstat.c:2168
 #, c-format
@@ -7149,7 +7184,7 @@ msgstr "geçici istatistik dosyasının adı değiştirilemiyor eski: \"%s\" yen
 
 #: postmaster/pgstat.c:2308
 msgid "dead-server-process hash table corrupted during cleanup --- abort"
-msgstr "ölü backend hash tablosu başlatma sırasında bozulmuştur --- iptal"
+msgstr "ölü backend hash tablosu başlatma sırasında bozulmuş --- iptal"
 
 #: postmaster/pgstat.c:2415
 #: postmaster/pgstat.c:2435
@@ -7159,7 +7194,7 @@ msgstr "ölü backend hash tablosu başlatma sırasında bozulmuştur --- iptal"
 #: postmaster/pgstat.c:2553
 #: postmaster/pgstat.c:2582
 msgid "corrupted pgstat.stat file"
-msgstr "pgstat.stat dosysı bozulmuştur"
+msgstr "bozuk pgstat.stat dosyası"
 
 #: postmaster/syslogger.c:317
 #, c-format
@@ -7211,7 +7246,7 @@ msgstr "log file yazma hatası: %m"
 #: postmaster/syslogger.c:790
 #, c-format
 msgid "could not open new log file \"%s\": %m"
-msgstr "yeni log file \"%s\" açma hatası: %m"
+msgstr "yeni kayıt dosyası \"%s\" açma hatası: %m"
 
 #: postmaster/syslogger.c:802
 msgid "disabling automatic rotation (use SIGHUP to reenable)"
@@ -7221,27 +7256,27 @@ msgstr "otomatik dönüşüm etkisiz (yeniden yetkilendirmek için SIGHUP kullan
 #: rewrite/rewriteDefine.c:587
 #, c-format
 msgid "rule \"%s\" for relation \"%s\" already exists"
-msgstr "Rule \"%s\", \"%s\" için zaten mevcut"
+msgstr "\"%s\" kuralı(rule), \"%s\" nesnesi için zaten mevcut"
 
 #: rewrite/rewriteDefine.c:234
 msgid "rule actions on OLD are not implemented"
-msgstr "OLD için rule eylemleri emplemente edilmemiş"
+msgstr "OLD için rule eylemleri implement edilmemiş"
 
 #: rewrite/rewriteDefine.c:235
 msgid "Use views or triggers instead."
-msgstr "Yerine view veya trigger kullanın."
+msgstr "Bunun yerine view veya trigger kullanın."
 
 #: rewrite/rewriteDefine.c:239
 msgid "rule actions on NEW are not implemented"
-msgstr "NEW için rule eylemleri emplemente edilmemiş"
+msgstr "NEW için rule eylemleri implement edilmemiş"
 
 #: rewrite/rewriteDefine.c:240
 msgid "Use triggers instead."
-msgstr "lütfen yerine triggerleri kullanın."
+msgstr "Bunun yerine lütfen triggerleri kullanın."
 
 #: rewrite/rewriteDefine.c:257
 msgid "INSTEAD NOTHING rules on SELECT are not implemented"
-msgstr "SELECT üzerinde INSTEAD NOTHING rule emplemente edilmemiştir"
+msgstr "SELECT üzerinde INSTEAD NOTHING rule implement edilmemiştir"
 
 #: rewrite/rewriteDefine.c:258
 msgid "Use views instead."
@@ -7249,7 +7284,7 @@ msgstr "Lütfen yerine viewları kullanın"
 
 #: rewrite/rewriteDefine.c:266
 msgid "multiple actions for rules on SELECT are not implemented"
-msgstr "SELECT rule'ler için birden fazla eylem tanımlanma emplemente edilmemiş"
+msgstr "SELECT rule'ler için birden fazla eylem tanımlanma implement edilmemiştir"
 
 #: rewrite/rewriteDefine.c:275
 msgid "rules on SELECT must have action INSTEAD SELECT"
@@ -7257,7 +7292,7 @@ msgstr "SELECT rule tanımları INSTEAD SELECT öğesini taşımak zorundadır"
 
 #: rewrite/rewriteDefine.c:283
 msgid "event qualifications are not implemented for rules on SELECT"
-msgstr "SELECT rule'ler için olay tanımları emplemente edilmemiş"
+msgstr "SELECT rule'ler için olay tanımları implement edilmemiştir"
 
 #: rewrite/rewriteDefine.c:303
 msgid "SELECT rule's target list has too many entries"
@@ -7359,7 +7394,7 @@ msgstr "ON DELETE DO INSTEAD rule gerekmetedir."
 #: rewrite/rewriteManip.c:737
 #: rewrite/rewriteManip.c:793
 msgid "conditional utility statements are not implemented"
-msgstr "Conditional utility statements emplemente edilmemiş"
+msgstr "Conditional utility statements implement edilmemiş"
 
 #: storage/buffer/bufmgr.c:216
 #, c-format
@@ -7858,7 +7893,11 @@ msgstr "\"%s\" bir tip değildir"
 msgid "Use DROP TYPE to remove a type."
 msgstr "Bir tipi kaldırmak için DROP TYPE kullanın."
 
-#: tcop/utility.c:973
+#: tcop/utility.c:809
+msgid "must be superuser to do LOAD"
+msgstr "LOAD yapmak için superuser olmalısınız"
+
+#: tcop/utility.c:977
 msgid "must be superuser to do CHECKPOINT"
 msgstr "CHECKPOINT yapmak için superuser olmalısınız"
 
@@ -8082,7 +8121,7 @@ msgid "wrong element type"
 msgstr "element tipi yanlış"
 
 #: utils/adt/arrayfuncs.c:1211
-#: utils/cache/lsyscache.c:1764
+#: utils/cache/lsyscache.c:1765
 #, c-format
 msgid "no binary input function available for type %s"
 msgstr "%s tipi için ikili giriş fonksiyonu mevcut değil"
@@ -8093,7 +8132,7 @@ msgid "improper binary format in array element %d"
 msgstr "%d dizi öğesi için geçersiz ikili biçimi"
 
 #: utils/adt/arrayfuncs.c:1383
-#: utils/cache/lsyscache.c:1800
+#: utils/cache/lsyscache.c:1801
 #, c-format
 msgid "no binary output function available for type %s"
 msgstr "%s tipi için ikili çıkış fonksiyonu mevcut değil"
@@ -8635,11 +8674,11 @@ msgstr "dış \"polygon\" değerinde geçersiz nokta sayısı"
 
 #: utils/adt/geo_ops.c:3751
 msgid "function \"poly_distance\" not implemented"
-msgstr "\"poly_distance\" fonksiyonu emplemente edilmemiş"
+msgstr "\"poly_distance\" fonksiyonu implement edilmemiş"
 
 #: utils/adt/geo_ops.c:4063
 msgid "function \"path_center\" not implemented"
-msgstr "\"path_center\" fonksiyonu emplemente edilmemiş"
+msgstr "\"path_center\" fonksiyonu implement edilmemiş"
 
 #: utils/adt/geo_ops.c:4080
 msgid "open path cannot be converted to polygon"
@@ -9392,20 +9431,20 @@ msgstr "yeni bit 0 veya 1 olmalıdır"
 msgid "field position must be greater than zero"
 msgstr "alan yeri sıfırdan büyük olmalıdır"
 
-#: utils/cache/lsyscache.c:1687
-#: utils/cache/lsyscache.c:1723
-#: utils/cache/lsyscache.c:1759
-#: utils/cache/lsyscache.c:1795
+#: utils/cache/lsyscache.c:1688
+#: utils/cache/lsyscache.c:1724
+#: utils/cache/lsyscache.c:1760
+#: utils/cache/lsyscache.c:1796
 #, c-format
 msgid "type %s is only a shell"
 msgstr "%s tipi sadece bir shell"
 
-#: utils/cache/lsyscache.c:1692
+#: utils/cache/lsyscache.c:1693
 #, c-format
 msgid "no input function available for type %s"
 msgstr "%s tipi için giriş fonksiyonu mevcut değil"
 
-#: utils/cache/lsyscache.c:1728
+#: utils/cache/lsyscache.c:1729
 #, c-format
 msgid "no output function available for type %s"
 msgstr "%s tipi için çıkış fonksiyonu mevcut değil"
diff --git a/src/backend/port/darwin/system.c b/src/backend/port/darwin/system.c
index cfeaaa0..d05fa17 100644
--- a/src/backend/port/darwin/system.c
+++ b/src/backend/port/darwin/system.c
@@ -34,7 +34,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD$
+ * $FreeBSD: src/lib/libc/stdlib/system.c,v 1.6 2000/03/16 02:14:41 jasone Exp $
  */
 
 #if defined(LIBC_SCCS) && !defined(lint)
diff --git a/src/backend/storage/buffer/README b/src/backend/storage/buffer/README
index 2e020d8..5fa316f 100644
--- a/src/backend/storage/buffer/README
+++ b/src/backend/storage/buffer/README
@@ -172,30 +172,22 @@ Buffer replacement strategy
 ---------------------------
 
 The buffer replacement strategy actually used in freelist.c is a version of
-the Adaptive Replacement Cache (ARC) specially tailored for PostgreSQL.
+the Two Queue (2Q) algorithm specially tailored for PostgreSQL.
 
 The algorithm works as follows:
 
-C is the size of the cache in number of pages (a/k/a shared_buffers or
-NBuffers).  ARC uses 2*C Cache Directory Blocks (CDB). A cache directory block
-is always associated with one unique file page.  It may point to one shared
-buffer, or may indicate that the file page is not in a buffer but has been
-accessed recently.
+There are three lists of Cache Directory Blocks (CDBs), T1, T2, and B1.  The
+T1 and T2 lists are the "real" cache entries, linking a file page to a memory
+buffer where the page is currently cached. Consequently T1len+T2len <=
+NBuffers.  B1 is a list of pages that are not currently buffered but recently
+were.  We allocate a total of 1.5*NBuffers CDBs, so the maximum length of B1
+when cache is fully used is NBuffers/2.  The target size of T1 is NBuffers/4.
 
-All CDB entries are managed in 4 LRU lists named T1, T2, B1 and B2. The T1 and
-T2 lists are the "real" cache entries, linking a file page to a memory buffer
-where the page is currently cached. Consequently T1len+T2len <= C. B1 and B2
-are ghost cache directories that extend T1 and T2 so that the strategy
-remembers pages longer. The strategy tries to keep B1len+T1len and B2len+T2len
-both at C. T1len and T2len vary over the runtime depending on the lookup
-pattern and its resulting cache hits. The desired size of T1len is called
-T1target.
-
-Assuming we have a full cache, one of 5 cases happens on a lookup:
+Assuming we have a full cache, one of 4 cases happens on a lookup:
 
 MISS	On a cache miss, depending on T1target and the actual T1len
 	the LRU buffer of either T1 or T2 is evicted. Its CDB is removed
-	from the T list and added as MRU of the corresponding B list.
+	from the T list and added as MRU of B1.
 	The now free buffer is replaced with the requested page
 	and added as MRU of T1.
 
@@ -203,18 +195,12 @@ T1 hit	The T1 CDB is moved to the MRU position of the T2 list.
 
 T2 hit	The T2 CDB is moved to the MRU position of the T2 list.
 
-B1 hit	This means that a buffer that was evicted from the T1
-	list is now requested again, indicating that T1target is
-	too small (otherwise it would still be in T1 and thus in
-	memory). The strategy raises T1target, evicts a buffer
-	depending on T1target and T1len and places the CDB at
-	MRU of T2.
-
-B2 hit	This means the opposite of B1, the T2 list is probably too
-	small. So the strategy lowers T1target, evicts a buffer
-	and places the CDB at MRU of T2.
+B1 hit	This means that a page that was recently evicted from cache
+	is now requested again.  We evict a buffer the same as in
+	the normal cache miss case, but the reloaded page goes to the
+	MRU of T2 rather than T1.
 
-Thus, every page that is found on lookup in any of the four lists
+Thus, every page that is found on lookup in any of the three lists
 ends up as the MRU of the T2 list. The T2 list therefore is the
 "frequency" cache, holding frequently requested pages.
 
@@ -232,8 +218,7 @@ will not promote it from there into the T2 cache during the same transaction.
 
 Another specialty is the change of the strategy during VACUUM.  Lookups during
 VACUUM do not represent application needs, and do not suggest that the page
-will be hit again soon, so it would be wrong to change the cache balance
-T1target due to that or to cause massive cache evictions. Therefore, a page
+will be hit again soon. Therefore, a page
 read in to satisfy vacuum is placed at the LRU position of the T1 list, for
 immediate reuse.  Also, if we happen to get a hit on a CDB entry during
 VACUUM, we do not promote the page above its current position in the list.
diff --git a/src/backend/storage/buffer/buf_init.c b/src/backend/storage/buffer/buf_init.c
index 1420040..6cf3a84 100644
--- a/src/backend/storage/buffer/buf_init.c
+++ b/src/backend/storage/buffer/buf_init.c
@@ -73,7 +73,6 @@ long int	LocalBufferFlushCount;
  *		aborts, it should only unpin the buffers exactly the number of times it
  *		has pinned them, so that it will not blow away buffers of another
  *		backend.
- *
  */
 
 
@@ -120,14 +119,17 @@ InitBufferPool(void)
 		block = BufferBlocks;
 
 		/*
-		 * link the buffers into a single linked list. This will become
-		 * the LIFO list of unused buffers returned by
-		 * StrategyGetBuffer().
+		 * Initialize all the buffer headers.
 		 */
 		for (i = 0; i < NBuffers; block += BLCKSZ, buf++, i++)
 		{
 			Assert(ShmemIsValid((unsigned long) block));
 
+			/*
+			 * The bufNext fields link together all totally-unused buffers.
+			 * Subsequent management of this list is done by
+			 * StrategyGetBuffer().
+			 */
 			buf->bufNext = i + 1;
 
 			CLEAR_BUFFERTAG(buf->tag);
@@ -142,7 +144,7 @@ InitBufferPool(void)
 			buf->wait_backend_id = 0;
 		}
 
-		/* Correct last entry */
+		/* Correct last entry of linked list */
 		BufferDescriptors[NBuffers - 1].bufNext = -1;
 
 		LWLockRelease(BufMgrLock);
@@ -178,7 +180,8 @@ InitBufferPoolAccess(void)
 
 	/*
 	 * Convert shmem offsets into addresses as seen by this process. This
-	 * is just to speed up the BufferGetBlock() macro.
+	 * is just to speed up the BufferGetBlock() macro.  It is OK to do this
+	 * without any lock since the data pointers never change.
 	 */
 	for (i = 0; i < NBuffers; i++)
 		BufferBlockPointers[i] = (Block) MAKE_PTR(BufferDescriptors[i].data);
@@ -201,14 +204,8 @@ BufferShmemSize(void)
 	/* size of data pages */
 	size += NBuffers * MAXALIGN(BLCKSZ);
 
-	/* size of buffer hash table */
-	size += hash_estimate_size(NBuffers * 2, sizeof(BufferLookupEnt));
-
-	/* size of the shared replacement strategy control block */
-	size += MAXALIGN(sizeof(BufferStrategyControl));
-
-	/* size of the ARC directory blocks */
-	size += MAXALIGN(NBuffers * 2 * sizeof(BufferStrategyCDB));
+	/* size of stuff controlled by freelist.c */
+	size += StrategyShmemSize();
 
 	return size;
 }
diff --git a/src/backend/storage/buffer/buf_table.c b/src/backend/storage/buffer/buf_table.c
index 2825768..19d7adf 100644
--- a/src/backend/storage/buffer/buf_table.c
+++ b/src/backend/storage/buffer/buf_table.c
@@ -1,11 +1,11 @@
 /*-------------------------------------------------------------------------
  *
  * buf_table.c
- *	  routines for finding buffers in the buffer pool.
+ *	  routines for mapping BufferTags to buffer indexes.
  *
- * NOTE: these days, what this table actually provides is a mapping from
- * BufferTags to CDB indexes, not directly to buffers.	The function names
- * are thus slight misnomers.
+ * NOTE: this module is called only by freelist.c, and the "buffer IDs"
+ * it deals with are whatever freelist.c needs them to be; they may not be
+ * directly equivalent to Buffer numbers.
  *
  * Note: all routines in this file assume that the BufMgrLock is held
  * by the caller, so no synchronization is needed.
@@ -26,12 +26,29 @@
 #include "storage/bufmgr.h"
 
 
+/* entry for buffer lookup hashtable */
+typedef struct
+{
+	BufferTag	key;			/* Tag of a disk page */
+	int			id;				/* Associated buffer ID */
+} BufferLookupEnt;
+
 static HTAB *SharedBufHash;
 
 
 /*
+ * Estimate space needed for mapping hashtable
+ *		size is the desired hash table size (possibly more than NBuffers)
+ */
+int
+BufTableShmemSize(int size)
+{
+	return hash_estimate_size(size, sizeof(BufferLookupEnt));
+}
+
+/*
  * Initialize shmem hash table for mapping buffers
- *		size is the desired hash table size (2*NBuffers for ARC algorithm)
+ *		size is the desired hash table size (possibly more than NBuffers)
  */
 void
 InitBufTable(int size)
@@ -56,7 +73,7 @@ InitBufTable(int size)
 
 /*
  * BufTableLookup
- *		Lookup the given BufferTag; return CDB index, or -1 if not found
+ *		Lookup the given BufferTag; return buffer ID, or -1 if not found
  */
 int
 BufTableLookup(BufferTag *tagPtr)
@@ -76,10 +93,10 @@ BufTableLookup(BufferTag *tagPtr)
 
 /*
  * BufTableInsert
- *		Insert a hashtable entry for given tag and CDB index
+ *		Insert a hashtable entry for given tag and buffer ID
  */
 void
-BufTableInsert(BufferTag *tagPtr, int cdb_id)
+BufTableInsert(BufferTag *tagPtr, int buf_id)
 {
 	BufferLookupEnt *result;
 	bool		found;
@@ -92,15 +109,15 @@ BufTableInsert(BufferTag *tagPtr, int cdb_id)
 				(errcode(ERRCODE_OUT_OF_MEMORY),
 				 errmsg("out of shared memory")));
 
-	if (found)					/* found something else in the table? */
+	if (found)					/* found something already in the table? */
 		elog(ERROR, "shared buffer hash table corrupted");
 
-	result->id = cdb_id;
+	result->id = buf_id;
 }
 
 /*
  * BufTableDelete
- *		Delete the hashtable entry for given tag
+ *		Delete the hashtable entry for given tag (which must exist)
  */
 void
 BufTableDelete(BufferTag *tagPtr)
diff --git a/src/backend/storage/buffer/freelist.c b/src/backend/storage/buffer/freelist.c
index 6fc5efa..cd75f3b 100644
--- a/src/backend/storage/buffer/freelist.c
+++ b/src/backend/storage/buffer/freelist.c
@@ -3,6 +3,11 @@
  * freelist.c
  *	  routines for manipulating the buffer pool's replacement strategy.
  *
+ * The name "freelist.c" is now a bit of a misnomer, since this module
+ * controls not only the list of free buffers per se, but the entire
+ * mechanism for looking up existing shared buffers and the strategy
+ * for choosing replacement victims when needed.
+ *
  * Note: all routines in this file assume that the BufMgrLock is held
  * by the caller, so no synchronization is needed.
  *
@@ -25,6 +30,52 @@
 #include "storage/bufmgr.h"
 
 
+/*
+ * Definitions for the buffer replacement strategy
+ */
+#define STRAT_LIST_UNUSED	(-1)
+#define STRAT_LIST_B1		0	/* A1out */
+#define STRAT_LIST_T1		1	/* A1 */
+#define STRAT_LIST_T2		2	/* Am */
+#define STRAT_NUM_LISTS		3
+
+/*
+ * We have a cache directory block (CDB) for every file page currently being
+ * tracked by the strategy module.  There can be more CDBs than there are
+ * actual shared buffers, allowing pages no longer in cache to still be
+ * tracked.
+ */
+typedef struct
+{
+	int			prev;			/* list links */
+	int			next;
+	short		list;			/* ID of list it is currently in */
+	bool		t1_vacuum;		/* t => present only because of VACUUM */
+	TransactionId t1_xid;		/* the xid this entry went onto T1 */
+	BufferTag	buf_tag;		/* page identifier */
+	int			buf_id;			/* currently assigned data buffer, or -1 */
+} BufferStrategyCDB;
+
+/*
+ * The shared strategy control information.
+ */
+typedef struct
+{
+	int			target_T1_size; /* What T1 size are we aiming for */
+	int			listUnusedCDB;	/* All unused StrategyCDB */
+	int			listHead[STRAT_NUM_LISTS];		/* CDB lists */
+	int			listTail[STRAT_NUM_LISTS];
+	int			listSize[STRAT_NUM_LISTS];
+	Buffer		listFreeBuffers;	/* List of unused buffers */
+
+	long		num_lookup;		/* Some hit statistics */
+	long		num_hit[STRAT_NUM_LISTS];
+	time_t		stat_report;
+
+	/* Array of CDB's starts here */
+	BufferStrategyCDB cdb[1];	/* VARIABLE SIZE ARRAY */
+} BufferStrategyControl;
+
 /* GUC variable: time in seconds between statistics reports */
 int			DebugSharedBuffers = 0;
 
@@ -41,7 +92,6 @@ static TransactionId strategy_vacuum_xid;
 #define B1_LENGTH	(StrategyControl->listSize[STRAT_LIST_B1])
 #define T1_LENGTH	(StrategyControl->listSize[STRAT_LIST_T1])
 #define T2_LENGTH	(StrategyControl->listSize[STRAT_LIST_T2])
-#define B2_LENGTH	(StrategyControl->listSize[STRAT_LIST_B2])
 
 
 /*
@@ -128,8 +178,7 @@ StrategyStatsDump(void)
 		long		all_hit,
 					b1_hit,
 					t1_hit,
-					t2_hit,
-					b2_hit;
+					t2_hit;
 		int			id,
 					t1_clean,
 					t2_clean;
@@ -155,7 +204,7 @@ StrategyStatsDump(void)
 		}
 
 		if (StrategyControl->num_lookup == 0)
-			all_hit = b1_hit = t1_hit = t2_hit = b2_hit = 0;
+			all_hit = b1_hit = t1_hit = t2_hit = 0;
 		else
 		{
 			b1_hit = (StrategyControl->num_hit[STRAT_LIST_B1] * 100 /
@@ -164,18 +213,16 @@ StrategyStatsDump(void)
 					  StrategyControl->num_lookup);
 			t2_hit = (StrategyControl->num_hit[STRAT_LIST_T2] * 100 /
 					  StrategyControl->num_lookup);
-			b2_hit = (StrategyControl->num_hit[STRAT_LIST_B2] * 100 /
-					  StrategyControl->num_lookup);
-			all_hit = b1_hit + t1_hit + t2_hit + b2_hit;
+			all_hit = b1_hit + t1_hit + t2_hit;
 		}
 
 		errcxtold = error_context_stack;
 		error_context_stack = NULL;
-		elog(DEBUG1, "ARC T1target=%5d B1len=%5d T1len=%5d T2len=%5d B2len=%5d",
-			 T1_TARGET, B1_LENGTH, T1_LENGTH, T2_LENGTH, B2_LENGTH);
-		elog(DEBUG1, "ARC total   =%4ld%% B1hit=%4ld%% T1hit=%4ld%% T2hit=%4ld%% B2hit=%4ld%%",
-			 all_hit, b1_hit, t1_hit, t2_hit, b2_hit);
-		elog(DEBUG1, "ARC clean buffers at LRU       T1=   %5d T2=   %5d",
+		elog(DEBUG1, "2Q T1target=%5d B1len=%5d T1len=%5d T2len=%5d",
+			 T1_TARGET, B1_LENGTH, T1_LENGTH, T2_LENGTH);
+		elog(DEBUG1, "2Q total   =%4ld%% B1hit=%4ld%% T1hit=%4ld%% T2hit=%4ld%%",
+			 all_hit, b1_hit, t1_hit, t2_hit);
+		elog(DEBUG1, "2Q clean buffers at LRU       T1=   %5d T2=   %5d",
 			 t1_clean, t2_clean);
 		error_context_stack = errcxtold;
 
@@ -183,7 +230,6 @@ StrategyStatsDump(void)
 		StrategyControl->num_hit[STRAT_LIST_B1] = 0;
 		StrategyControl->num_hit[STRAT_LIST_T1] = 0;
 		StrategyControl->num_hit[STRAT_LIST_T2] = 0;
-		StrategyControl->num_hit[STRAT_LIST_B2] = 0;
 		StrategyControl->stat_report = now;
 	}
 }
@@ -192,7 +238,7 @@ StrategyStatsDump(void)
  * StrategyBufferLookup
  *
  *	Lookup a page request in the cache directory. A buffer is only
- *	returned for a T1 or T2 cache hit. B1 and B2 hits are just
+ *	returned for a T1 or T2 cache hit. B1 hits are just
  *	remembered here, to possibly affect the behaviour later.
  *
  *	recheck indicates we are rechecking after I/O wait; do not change
@@ -296,55 +342,10 @@ StrategyBufferLookup(BufferTag *tagPtr, bool recheck,
 	}
 
 	/*
-	 * In the case of a recheck we don't care about B1 or B2 hits here.
-	 * The bufmgr does this call only to make sure no-one faulted in the
-	 * block while we where busy flushing another; we don't want to doubly
-	 * adjust the T1target.
-	 *
-	 * Now for this really to end up as a B1 or B2 cache hit, we must have
-	 * been flushing for quite some time as the block not only must have
-	 * been read, but also traveled through the queue and evicted from the
-	 * T cache again already.
-	 *
-	 * VACUUM re-reads shouldn't adjust the target either.
-	 */
-	if (recheck || strategy_hint_vacuum)
-		return NULL;
-
-	/*
-	 * Adjust the target size of the T1 cache depending on if this is a B1
-	 * or B2 hit.
-	 */
-	switch (cdb->list)
-	{
-		case STRAT_LIST_B1:
-
-			/*
-			 * B1 hit means that the T1 cache is probably too small.
-			 * Adjust the T1 target size and continue below.
-			 */
-			T1_TARGET = Min(T1_TARGET + Max(B2_LENGTH / B1_LENGTH, 1),
-							NBuffers);
-			break;
-
-		case STRAT_LIST_B2:
-
-			/*
-			 * B2 hit means that the T2 cache is probably too small.
-			 * Adjust the T1 target size and continue below.
-			 */
-			T1_TARGET = Max(T1_TARGET - Max(B1_LENGTH / B2_LENGTH, 1), 0);
-			break;
-
-		default:
-			elog(ERROR, "buffer hash table corrupted: CDB->list = %d",
-				 cdb->list);
-	}
-
-	/*
 	 * Even though we had seen the block in the past, its data is not
 	 * currently in memory ... cache miss to the bufmgr.
 	 */
+	Assert(cdb->list == STRAT_LIST_B1);
 	return NULL;
 }
 
@@ -373,7 +374,7 @@ StrategyGetBuffer(int *cdb_replace_index)
 		 * We don't have a free buffer, must take one from T1 or T2.
 		 * Choose based on trying to converge T1len to T1target.
 		 */
-		if (T1_LENGTH >= Max(1, T1_TARGET))
+		if (T1_LENGTH >= T1_TARGET)
 		{
 			/*
 			 * We should take the first unpinned buffer from T1.
@@ -503,7 +504,7 @@ StrategyReplaceBuffer(BufferDesc *buf, BufferTag *newTag,
 
 	if (cdb_found_index >= 0)
 	{
-		/* This must have been a ghost buffer cache hit (B1 or B2) */
+		/* This must have been a ghost buffer cache hit (B1 list) */
 		cdb_found = &StrategyCDB[cdb_found_index];
 
 		/* Assert that the buffer remembered in cdb_found is the one */
@@ -523,14 +524,14 @@ StrategyReplaceBuffer(BufferDesc *buf, BufferTag *newTag,
 			Assert(BUFFERTAGS_EQUAL(cdb_replace->buf_tag, buf->tag));
 
 			/*
-			 * Under normal circumstances we move the evicted T list entry
-			 * to the corresponding B list.  However, T1 entries that
-			 * exist only because of VACUUM are just thrown into the
-			 * unused list instead. We don't expect them to be touched
-			 * again by the VACUUM, and if we put them into B1 then VACUUM
-			 * would skew T1_target adjusting.
+			 * Under normal circumstances we move evicted T1 list entries
+			 * to the B1 list.  However, T1 entries that exist only because
+			 * of VACUUM are just thrown into the unused list instead,
+			 * since it's unlikely they'll be touched again soon.  Similarly,
+			 * evicted T2 entries are thrown away; the LRU T2 entry cannot
+			 * have been touched recently.
 			 */
-			if (cdb_replace->t1_vacuum)
+			if (cdb_replace->t1_vacuum || cdb_replace->list == STRAT_LIST_T2)
 			{
 				BufTableDelete(&(cdb_replace->buf_tag));
 				STRAT_LIST_REMOVE(cdb_replace);
@@ -539,16 +540,8 @@ StrategyReplaceBuffer(BufferDesc *buf, BufferTag *newTag,
 			}
 			else
 			{
-				if (cdb_replace->list == STRAT_LIST_T1)
-				{
-					STRAT_LIST_REMOVE(cdb_replace);
-					STRAT_MRU_INSERT(cdb_replace, STRAT_LIST_B1);
-				}
-				else
-				{
-					STRAT_LIST_REMOVE(cdb_replace);
-					STRAT_MRU_INSERT(cdb_replace, STRAT_LIST_B2);
-				}
+				STRAT_LIST_REMOVE(cdb_replace);
+				STRAT_MRU_INSERT(cdb_replace, STRAT_LIST_B1);
 			}
 			/* And clear its block reference */
 			cdb_replace->buf_id = -1;
@@ -558,7 +551,7 @@ StrategyReplaceBuffer(BufferDesc *buf, BufferTag *newTag,
 			/* We are satisfying it with an unused buffer */
 		}
 
-		/* Now the found B CDB gets the buffer and is moved to T2 */
+		/* Now the found B1 CDB gets the buffer and is moved to T2 */
 		cdb_found->buf_id = buf->buf_id;
 		STRAT_LIST_REMOVE(cdb_found);
 		STRAT_MRU_INSERT(cdb_found, STRAT_LIST_T2);
@@ -567,37 +560,23 @@ StrategyReplaceBuffer(BufferDesc *buf, BufferTag *newTag,
 	{
 		/*
 		 * This was a complete cache miss, so we need to create a new CDB.
-		 * The goal is to keep T1len+B1len <= c.
+		 * We use a free one if available, else reclaim the tail end of B1.
 		 */
-		if (B1_LENGTH > 0 && (T1_LENGTH + B1_LENGTH) >= NBuffers)
+		if (StrategyControl->listUnusedCDB >= 0)
+		{
+			cdb_found = &StrategyCDB[StrategyControl->listUnusedCDB];
+			StrategyControl->listUnusedCDB = cdb_found->next;
+		}
+		else
 		{
-			/* So if B1 isn't empty and T1len+B1len >= c we take B1-LRU */
+			/* Can't fail because we have more CDBs than buffers... */
+			if (B1_LENGTH == 0)
+				elog(PANIC, "StrategyReplaceBuffer: out of CDBs");
 			cdb_found = &StrategyCDB[StrategyControl->listHead[STRAT_LIST_B1]];
 
 			BufTableDelete(&(cdb_found->buf_tag));
 			STRAT_LIST_REMOVE(cdb_found);
 		}
-		else
-		{
-			/* Otherwise, we try to use a free one */
-			if (StrategyControl->listUnusedCDB >= 0)
-			{
-				cdb_found = &StrategyCDB[StrategyControl->listUnusedCDB];
-				StrategyControl->listUnusedCDB = cdb_found->next;
-			}
-			else
-			{
-				/* If there isn't, we take B2-LRU ... except if */
-				/* T1len+B1len+T2len = c ... oh my */
-				if (B2_LENGTH > 0)
-					cdb_found = &StrategyCDB[StrategyControl->listHead[STRAT_LIST_B2]];
-				else
-					cdb_found = &StrategyCDB[StrategyControl->listHead[STRAT_LIST_B1]];
-
-				BufTableDelete(&(cdb_found->buf_tag));
-				STRAT_LIST_REMOVE(cdb_found);
-			}
-		}
 
 		/* Set the CDB's buf_tag and insert it into the hash table */
 		cdb_found->buf_tag = *newTag;
@@ -607,7 +586,7 @@ StrategyReplaceBuffer(BufferDesc *buf, BufferTag *newTag,
 		{
 			/*
 			 * The buffer was formerly in a T list, move its CDB to the
-			 * corresponding B list
+			 * appropriate list: B1 if T1, else discard it, as above
 			 */
 			cdb_replace = &StrategyCDB[cdb_replace_index];
 
@@ -623,8 +602,10 @@ StrategyReplaceBuffer(BufferDesc *buf, BufferTag *newTag,
 			}
 			else
 			{
+				BufTableDelete(&(cdb_replace->buf_tag));
 				STRAT_LIST_REMOVE(cdb_replace);
-				STRAT_MRU_INSERT(cdb_replace, STRAT_LIST_B2);
+				cdb_replace->next = StrategyControl->listUnusedCDB;
+				StrategyControl->listUnusedCDB = cdb_replace_index;
 			}
 			/* And clear its block reference */
 			cdb_replace->buf_id = -1;
@@ -694,7 +675,7 @@ StrategyInvalidateBuffer(BufferDesc *buf)
 	cdb = &StrategyCDB[cdb_id];
 
 	/*
-	 * Remove the CDB from the hashtable and the ARC queue it is currently
+	 * Remove the CDB from the hashtable and the queue it is currently
 	 * on.
 	 */
 	BufTableDelete(&(cdb->buf_tag));
@@ -758,7 +739,7 @@ StrategyDirtyBufferList(BufferDesc **buffers, BufferTag *buftags,
 
 	/*
 	 * Traverse the T1 and T2 list LRU to MRU in "parallel" and add all
-	 * dirty buffers found in that order to the list. The ARC strategy
+	 * dirty buffers found in that order to the list. The 2Q strategy
 	 * keeps all used buffers including pinned ones in the T1 or T2 list.
 	 * So we cannot miss any dirty buffers.
 	 */
@@ -813,6 +794,30 @@ StrategyDirtyBufferList(BufferDesc **buffers, BufferTag *buftags,
 
 
 /*
+ * StrategyShmemSize
+ *
+ * estimate the size of shared memory used by the freelist-related structures.
+ */
+int
+StrategyShmemSize(void)
+{
+	/* A1out list can hold 50% of NBuffers, per Johnson and Shasha */
+	int			nCDBs = NBuffers + NBuffers / 2;
+	int			size = 0;
+
+	/* size of CDB lookup hash table */
+	size += BufTableShmemSize(nCDBs);
+
+	/* size of the shared replacement strategy control block */
+	size += MAXALIGN(sizeof(BufferStrategyControl));
+
+	/* size of the CDB directory */
+	size += MAXALIGN(nCDBs * sizeof(BufferStrategyCDB));
+
+	return size;
+}
+
+/*
  * StrategyInitialize -- initialize the buffer cache replacement
  *		strategy.
  *
@@ -822,13 +827,15 @@ StrategyDirtyBufferList(BufferDesc **buffers, BufferTag *buftags,
 void
 StrategyInitialize(bool init)
 {
+	/* A1out list can hold 50% of NBuffers, per Johnson and Shasha */
+	int			nCDBs = NBuffers + NBuffers / 2;
 	bool		found;
 	int			i;
 
 	/*
 	 * Initialize the shared CDB lookup hashtable
 	 */
-	InitBufTable(NBuffers * 2);
+	InitBufTable(nCDBs);
 
 	/*
 	 * Get or create the shared strategy control block and the CDB's
@@ -836,7 +843,7 @@ StrategyInitialize(bool init)
 	StrategyControl = (BufferStrategyControl *)
 		ShmemInitStruct("Buffer Strategy Status",
 						sizeof(BufferStrategyControl) +
-						sizeof(BufferStrategyCDB) * (NBuffers * 2 - 1),
+						sizeof(BufferStrategyCDB) * (nCDBs - 1),
 						&found);
 	StrategyCDB = &(StrategyControl->cdb[0]);
 
@@ -854,13 +861,13 @@ StrategyInitialize(bool init)
 		StrategyControl->listFreeBuffers = 0;
 
 		/*
-		 * We start off with a target T1 list size of half the available
-		 * cache blocks.
+		 * We set the target T1 size to 1/4th of available buffers.
+		 * Possibly this should be a runtime tunable.
 		 */
-		StrategyControl->target_T1_size = NBuffers / 2;
+		StrategyControl->target_T1_size = NBuffers / 4;
 
 		/*
-		 * Initialize B1, T1, T2 and B2 lists to be empty
+		 * Initialize all lists to be empty
 		 */
 		for (i = 0; i < STRAT_NUM_LISTS; i++)
 		{
@@ -875,14 +882,14 @@ StrategyInitialize(bool init)
 		/*
 		 * All CDB's are linked as the listUnusedCDB
 		 */
-		for (i = 0; i < NBuffers * 2; i++)
+		for (i = 0; i < nCDBs; i++)
 		{
 			StrategyCDB[i].next = i + 1;
 			StrategyCDB[i].list = STRAT_LIST_UNUSED;
 			CLEAR_BUFFERTAG(StrategyCDB[i].buf_tag);
 			StrategyCDB[i].buf_id = -1;
 		}
-		StrategyCDB[NBuffers * 2 - 1].next = -1;
+		StrategyCDB[nCDBs - 1].next = -1;
 		StrategyControl->listUnusedCDB = 0;
 	}
 	else
diff --git a/src/backend/storage/buffer/localbuf.c b/src/backend/storage/buffer/localbuf.c
index b466f09..7d44cae 100644
--- a/src/backend/storage/buffer/localbuf.c
+++ b/src/backend/storage/buffer/localbuf.c
@@ -241,3 +241,17 @@ AtEOXact_LocalBuffers(bool isCommit)
 	}
 #endif
 }
+
+/*
+ * AtProcExit_LocalBuffers - ensure we have dropped pins during backend exit.
+ *
+ * This is just like AtProcExit_Buffers, but for local buffers.  We have
+ * to drop pins to ensure that any attempt to drop temp files doesn't
+ * fail in DropRelFileNodeBuffers.
+ */
+void
+AtProcExit_LocalBuffers(void)
+{
+	/* just zero the refcounts ... */
+	MemSet(LocalRefCount, 0, NLocBuffer * sizeof(*LocalRefCount));
+}
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index ea73b5c..abf1828 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -803,6 +803,10 @@ ProcessUtility(Node *parsetree,
 			{
 				LoadStmt   *stmt = (LoadStmt *) parsetree;
 
+				if (!superuser())
+					ereport(ERROR,
+							(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
+							 errmsg("must be superuser to do LOAD")));
 				closeAllVfds(); /* probably not necessary... */
 				load_file(stmt->filename);
 			}
diff --git a/src/backend/utils/adt/inet_net_ntop.c b/src/backend/utils/adt/inet_net_ntop.c
index 54f4306..5fe0b24 100644
--- a/src/backend/utils/adt/inet_net_ntop.c
+++ b/src/backend/utils/adt/inet_net_ntop.c
@@ -1,33 +1,37 @@
 /*
- * Copyright (c) 1996 by Internet Software Consortium.
+ * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 1996,1999 by Internet Software Consortium.
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
  * copyright notice and this permission notice appear in all copies.
  *
- * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
- * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
- * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
- * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
+ * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  *
  *	  $PostgreSQL$
  */
 
+#if defined(LIBC_SCCS) && !defined(lint)
+static const char rcsid[] = "Id: inet_net_ntop.c,v 1.1.2.2 2004/03/09 09:17:27 marka Exp $";
+#endif
+
 #include "postgres.h"
 
+#include <sys/types.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
 
-#include <errno.h>
-
 #include "utils/inet.h"
 #include "utils/builtins.h"
 
+
 #define NS_IN6ADDRSZ 16
 #define NS_INT16SZ 2
 
@@ -81,7 +85,7 @@ inet_cidr_ntop(int af, const void *src, int bits, char *dst, size_t size)
  *	pointer to dst, or NULL if an error occurred (check errno).
  * note:
  *	network byte order assumed.  this means 192.5.5.240/28 has
- *	0x11110000 in its fourth octet.
+ *	0b11110000 in its fourth octet.
  * author:
  *	Paul Vixie (ISC), July 1996
  */
@@ -98,23 +102,28 @@ inet_cidr_ntop_ipv4(const u_char *src, int bits, char *dst, size_t size)
 		errno = EINVAL;
 		return (NULL);
 	}
+
 	if (bits == 0)
 	{
 		if (size < sizeof "0")
 			goto emsgsize;
 		*dst++ = '0';
+		size--;
 		*dst = '\0';
 	}
 
 	/* Format whole octets. */
 	for (b = bits / 8; b > 0; b--)
 	{
-		if (size < sizeof ".255")
+		if (size <= sizeof "255.")
 			goto emsgsize;
 		t = dst;
-		if (dst != odst)
-			*dst++ = '.';
 		dst += SPRINTF((dst, "%u", *src++));
+		if (b > 1)
+		{
+			*dst++ = '.';
+			*dst = '\0';
+		}
 		size -= (size_t) (dst - t);
 	}
 
@@ -122,7 +131,7 @@ inet_cidr_ntop_ipv4(const u_char *src, int bits, char *dst, size_t size)
 	b = bits % 8;
 	if (b > 0)
 	{
-		if (size < sizeof ".255")
+		if (size <= sizeof ".255")
 			goto emsgsize;
 		t = dst;
 		if (dst != odst)
@@ -133,10 +142,9 @@ inet_cidr_ntop_ipv4(const u_char *src, int bits, char *dst, size_t size)
 	}
 
 	/* Format CIDR /width. */
-	if (size < sizeof "/32")
+	if (size <= sizeof "/32")
 		goto emsgsize;
 	dst += SPRINTF((dst, "/%u", bits));
-
 	return (odst);
 
 emsgsize:
@@ -146,7 +154,7 @@ emsgsize:
 
 /*
  * static char *
- * inet_net_ntop_ipv6(src, bits, fakebits, dst, size)
+ * inet_cidr_ntop_ipv6(src, bits, fakebits, dst, size)
  *	convert IPv6 network number from network to presentation format.
  *	generates CIDR style result always. Picks the shortest representation
  *	unless the IP is really IPv4.
@@ -173,7 +181,6 @@ inet_cidr_ntop_ipv6(const u_char *src, int bits, char *dst, size_t size)
 				tmp_zero_l;
 	int			i;
 	int			is_ipv4 = 0;
-	int			double_colon = 0;
 	unsigned char inbuf[16];
 	char		outbuf[sizeof("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:255.255.255.255/128")];
 	char	   *cp;
@@ -187,14 +194,12 @@ inet_cidr_ntop_ipv6(const u_char *src, int bits, char *dst, size_t size)
 	}
 
 	cp = outbuf;
-	double_colon = 0;
 
 	if (bits == 0)
 	{
 		*cp++ = ':';
 		*cp++ = ':';
 		*cp = '\0';
-		double_colon = 1;
 	}
 	else
 	{
@@ -244,8 +249,8 @@ inet_cidr_ntop_ipv6(const u_char *src, int bits, char *dst, size_t size)
 		}
 
 		if (zero_l != words && zero_s == 0 && ((zero_l == 6) ||
-					  ((zero_l == 5 && s[10] == 0xff && s[11] == 0xff) ||
-					   ((zero_l == 7 && s[14] != 0 && s[15] != 1)))))
+						  ((zero_l == 5 && s[10] == 0xff && s[11] == 0xff) ||
+						   ((zero_l == 7 && s[14] != 0 && s[15] != 1)))))
 			is_ipv4 = 1;
 
 		/* Format whole words. */
@@ -257,10 +262,7 @@ inet_cidr_ntop_ipv6(const u_char *src, int bits, char *dst, size_t size)
 				if (p == zero_s)
 					*cp++ = ':';
 				if (p == words - 1)
-				{
 					*cp++ = ':';
-					double_colon = 1;
-				}
 				s++;
 				s++;
 				continue;
@@ -286,18 +288,8 @@ inet_cidr_ntop_ipv6(const u_char *src, int bits, char *dst, size_t size)
 			}
 		}
 	}
-
-	if (!double_colon)
-	{
-		if (bits < 128 - 32)
-			cp += SPRINTF((cp, "::"));
-		else if (bits < 128 - 16)
-			cp += SPRINTF((cp, ":0"));
-	}
-
 	/* Format CIDR /width. */
 	SPRINTF((cp, "/%u", bits));
-
 	if (strlen(outbuf) + 1 > size)
 		goto emsgsize;
 	strcpy(dst, outbuf);
@@ -309,6 +301,7 @@ emsgsize:
 	return (NULL);
 }
 
+
 /*
  * char *
  * inet_net_ntop(af, src, bits, dst, size)
@@ -368,7 +361,7 @@ inet_net_ntop_ipv4(const u_char *src, int bits, char *dst, size_t size)
 	/* Always format all four octets, regardless of mask length. */
 	for (b = len; b > 0; b--)
 	{
-		if (size < sizeof ".255")
+		if (size <= sizeof ".255")
 			goto emsgsize;
 		t = dst;
 		if (dst != odst)
@@ -380,7 +373,7 @@ inet_net_ntop_ipv4(const u_char *src, int bits, char *dst, size_t size)
 	/* don't print masklen if 32 bits */
 	if (bits != 32)
 	{
-		if (size < sizeof "/32")
+		if (size <= sizeof "/32")
 			goto emsgsize;
 		dst += SPRINTF((dst, "/%u", bits));
 	}
@@ -401,7 +394,7 @@ decoct(const u_char *src, int bytes, char *dst, size_t size)
 
 	for (b = 1; b <= bytes; b++)
 	{
-		if (size < sizeof "255.")
+		if (size <= sizeof "255.")
 			return (0);
 		t = dst;
 		dst += SPRINTF((dst, "%u", *src++));
diff --git a/src/backend/utils/adt/inet_net_pton.c b/src/backend/utils/adt/inet_net_pton.c
index 2967df9..5e97a8c 100644
--- a/src/backend/utils/adt/inet_net_pton.c
+++ b/src/backend/utils/adt/inet_net_pton.c
@@ -1,43 +1,47 @@
 /*
- * Copyright (c) 1996 by Internet Software Consortium.
+ * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 1996,1999 by Internet Software Consortium.
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
  * copyright notice and this permission notice appear in all copies.
  *
- * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
- * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
- * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
- * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
+ * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  *
  *	  $PostgreSQL$
  */
 
+#if defined(LIBC_SCCS) && !defined(lint)
+static const char rcsid[] = "Id: inet_net_pton.c,v 1.4.2.3 2004/03/17 00:40:11 marka Exp $";
+#endif
+
 #include "postgres.h"
 
+#include <sys/types.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
-
 #include <assert.h>
 #include <ctype.h>
-#include <errno.h>
 
 #include "utils/inet.h"
-
 #include "utils/builtins.h"
 
+
 static int	inet_net_pton_ipv4(const char *src, u_char *dst);
 static int	inet_cidr_pton_ipv4(const char *src, u_char *dst, size_t size);
 static int	inet_net_pton_ipv6(const char *src, u_char *dst);
 static int	inet_cidr_pton_ipv6(const char *src, u_char *dst, size_t size);
 
+
 /*
- * static int
+ * int
  * inet_net_pton(af, src, dst, size)
  *	convert network number from presentation to network format.
  *	accepts hex octets, hex strings, decimal octets, and /CIDR.
@@ -85,19 +89,18 @@ inet_net_pton(int af, const char *src, void *dst, size_t size)
  *	not an IPv4 network specification.
  * note:
  *	network byte order assumed.  this means 192.5.5.240/28 has
- *	0x11110000 in its fourth octet.
+ *	0b11110000 in its fourth octet.
  * author:
  *	Paul Vixie (ISC), June 1996
  */
 static int
 inet_cidr_pton_ipv4(const char *src, u_char *dst, size_t size)
 {
-	static const char
-				xdigits[] = "0123456789abcdef",
-				digits[] = "0123456789";
+	static const char xdigits[] = "0123456789abcdef";
+	static const char digits[] = "0123456789";
 	int			n,
 				ch,
-				tmp,
+				tmp = 0,
 				dirty,
 				bits;
 	const u_char *odst = dst;
@@ -107,10 +110,9 @@ inet_cidr_pton_ipv4(const char *src, u_char *dst, size_t size)
 		&& isxdigit((unsigned char) src[1]))
 	{
 		/* Hexadecimal: Eat nybble string. */
-		if (size <= 0)
+		if (size <= 0U)
 			goto emsgsize;
 		dirty = 0;
-		tmp = 0;
 		src++;					/* skip x or X. */
 		while ((ch = *src++) != '\0' && isxdigit((unsigned char) ch))
 		{
@@ -124,7 +126,7 @@ inet_cidr_pton_ipv4(const char *src, u_char *dst, size_t size)
 				tmp = (tmp << 4) | n;
 			if (++dirty == 2)
 			{
-				if (size-- <= 0)
+				if (size-- <= 0U)
 					goto emsgsize;
 				*dst++ = (u_char) tmp;
 				dirty = 0;
@@ -132,7 +134,7 @@ inet_cidr_pton_ipv4(const char *src, u_char *dst, size_t size)
 		}
 		if (dirty)
 		{						/* Odd trailing nybble? */
-			if (size-- <= 0)
+			if (size-- <= 0U)
 				goto emsgsize;
 			*dst++ = (u_char) (tmp << 4);
 		}
@@ -153,7 +155,7 @@ inet_cidr_pton_ipv4(const char *src, u_char *dst, size_t size)
 					goto enoent;
 			} while ((ch = *src++) != '\0' &&
 					 isdigit((unsigned char) ch));
-			if (size-- <= 0)
+			if (size-- <= 0U)
 				goto emsgsize;
 			*dst++ = (u_char) tmp;
 			if (ch == '\0' || ch == '/')
@@ -200,22 +202,28 @@ inet_cidr_pton_ipv4(const char *src, u_char *dst, size_t size)
 		if (*odst >= 240)		/* Class E */
 			bits = 32;
 		else if (*odst >= 224)	/* Class D */
-			bits = 4;
+			bits = 8;
 		else if (*odst >= 192)	/* Class C */
 			bits = 24;
 		else if (*odst >= 128)	/* Class B */
 			bits = 16;
-		else
-			/* Class A */
+		else					/* Class A */
 			bits = 8;
 		/* If imputed mask is narrower than specified octets, widen. */
-		if (bits >= 8 && bits < ((dst - odst) * 8))
+		if (bits < ((dst - odst) * 8))
 			bits = (dst - odst) * 8;
+
+		/*
+		 * If there are no additional bits specified for a class D address
+		 * adjust bits to 4.
+		 */
+		if (bits == 8 && *odst == 224)
+			bits = 4;
 	}
 	/* Extend network to cover the actual mask. */
 	while (bits > ((dst - odst) * 8))
 	{
-		if (size-- <= 0)
+		if (size-- <= 0U)
 			goto emsgsize;
 		*dst++ = '\0';
 	}
diff --git a/src/backend/utils/adt/nabstime.c b/src/backend/utils/adt/nabstime.c
index 8d6cf20..ea79b67 100644
--- a/src/backend/utils/adt/nabstime.c
+++ b/src/backend/utils/adt/nabstime.c
@@ -306,15 +306,13 @@ abstimein(PG_FUNCTION_ARGS)
 			   *tm = &date;
 	int			dterr;
 	char	   *field[MAXDATEFIELDS];
-	char		lowstr[MAXDATELEN + 1];
+	char		workbuf[MAXDATELEN + 1];
 	int			dtype;
 	int			nf,
 				ftype[MAXDATEFIELDS];
 
-	if (strlen(str) >= sizeof(lowstr))
-		dterr = DTERR_BAD_FORMAT;
-	else
-		dterr = ParseDateTime(str, lowstr, field, ftype, MAXDATEFIELDS, &nf);
+	dterr = ParseDateTime(str, workbuf, sizeof(workbuf),
+						  field, ftype, MAXDATEFIELDS, &nf);
 	if (dterr == 0)
 		dterr = DecodeDateTime(field, ftype, nf, &dtype, tm, &fsec, &tz);
 	if (dterr != 0)
@@ -711,12 +709,10 @@ reltimein(PG_FUNCTION_ARGS)
 	char	   *field[MAXDATEFIELDS];
 	int			nf,
 				ftype[MAXDATEFIELDS];
-	char		lowstr[MAXDATELEN + 1];
+	char		workbuf[MAXDATELEN + 1];
 
-	if (strlen(str) >= sizeof(lowstr))
-		dterr = DTERR_BAD_FORMAT;
-	else
-		dterr = ParseDateTime(str, lowstr, field, ftype, MAXDATEFIELDS, &nf);
+	dterr = ParseDateTime(str, workbuf, sizeof(workbuf),
+						  field, ftype, MAXDATEFIELDS, &nf);
 	if (dterr == 0)
 		dterr = DecodeInterval(field, ftype, nf, &dtype, tm, &fsec);
 	if (dterr != 0)
diff --git a/src/backend/utils/adt/quote.c b/src/backend/utils/adt/quote.c
index a638116..0838851 100644
--- a/src/backend/utils/adt/quote.c
+++ b/src/backend/utils/adt/quote.c
@@ -13,17 +13,9 @@
  */
 #include "postgres.h"
 
-#include <ctype.h>
-
-#include "mb/pg_wchar.h"
 #include "utils/builtins.h"
 
 
-static bool quote_ident_required(text *iptr);
-static text *do_quote_ident(text *iptr);
-static text *do_quote_literal(text *iptr);
-
-
 /*
  * quote_ident -
  *	  returns a properly quoted identifier
@@ -33,16 +25,22 @@ quote_ident(PG_FUNCTION_ARGS)
 {
 	text	   *t = PG_GETARG_TEXT_P(0);
 	text	   *result;
+	const char *qstr;
+	char	   *str;
+	int			len;
 
-	if (quote_ident_required(t))
-		result = do_quote_ident(t);
-	else
-	{
-		result = (text *) palloc(VARSIZE(t));
-		memcpy(result, t, VARSIZE(t));
-	}
+	/* We have to convert to a C string to use quote_identifier */
+	len = VARSIZE(t) - VARHDRSZ;
+	str = (char *) palloc(len + 1);
+	memcpy(str, VARDATA(t), len);
+	str[len] = '\0';
 
-	PG_FREE_IF_COPY(t, 0);
+	qstr = quote_identifier(str);
+
+	len = strlen(qstr);
+	result = (text *) palloc(len + VARHDRSZ);
+	VARATT_SIZEP(result) = len + VARHDRSZ;
+	memcpy(VARDATA(result), qstr, len);
 
 	PG_RETURN_TEXT_P(result);
 }
@@ -56,136 +54,30 @@ quote_literal(PG_FUNCTION_ARGS)
 {
 	text	   *t = PG_GETARG_TEXT_P(0);
 	text	   *result;
-
-	result = do_quote_literal(t);
-
-	PG_FREE_IF_COPY(t, 0);
-
-	PG_RETURN_TEXT_P(result);
-}
-
-/*
- * Check if a given identifier needs quoting
- */
-static bool
-quote_ident_required(text *iptr)
-{
-	char	   *cp;
-	char	   *ep;
-
-	cp = VARDATA(iptr);
-	ep = VARDATA(iptr) + VARSIZE(iptr) - VARHDRSZ;
-
-	if (cp >= ep)
-		return true;
-
-	if (pg_mblen(cp) != 1)
-		return true;
-	if (!(*cp == '_' || (*cp >= 'a' && *cp <= 'z')))
-		return true;
-
-	while ((++cp) < ep)
-	{
-		if (pg_mblen(cp) != 1)
-			return true;
-
-		if (*cp >= 'a' && *cp <= 'z')
-			continue;
-		if (*cp >= '0' && *cp <= '9')
-			continue;
-		if (*cp == '_')
-			continue;
-
-		return true;
-	}
-
-	return false;
-}
-
-/*
- * Return a properly quoted identifier
- */
-static text *
-do_quote_ident(text *iptr)
-{
-	text	   *result;
 	char	   *cp1;
 	char	   *cp2;
 	int			len;
-	int			wl;
 
-	len = VARSIZE(iptr) - VARHDRSZ;
-	result = (text *) palloc(len * 2 + VARHDRSZ + 2);
+	len = VARSIZE(t) - VARHDRSZ;
+	/* We make a worst-case result area; wasting a little space is OK */
+	result = (text *) palloc(len * 2 + 2 + VARHDRSZ);
 
-	cp1 = VARDATA(iptr);
-	cp2 = VARDATA(result);
-
-	*cp2++ = '"';
-	while (len > 0)
-	{
-		if ((wl = pg_mblen(cp1)) != 1)
-		{
-			len -= wl;
-
-			while (wl-- > 0)
-				*cp2++ = *cp1++;
-			continue;
-		}
-
-		if (*cp1 == '"')
-			*cp2++ = '"';
-		*cp2++ = *cp1++;
-
-		len--;
-	}
-	*cp2++ = '"';
-
-	VARATT_SIZEP(result) = cp2 - ((char *) result);
-
-	return result;
-}
-
-/*
- * Return a properly quoted literal value
- */
-static text *
-do_quote_literal(text *lptr)
-{
-	text	   *result;
-	char	   *cp1;
-	char	   *cp2;
-	int			len;
-	int			wl;
-
-	len = VARSIZE(lptr) - VARHDRSZ;
-	result = (text *) palloc(len * 2 + VARHDRSZ + 2);
-
-	cp1 = VARDATA(lptr);
+	cp1 = VARDATA(t);
 	cp2 = VARDATA(result);
 
 	*cp2++ = '\'';
-	while (len > 0)
+	while (len-- > 0)
 	{
-		if ((wl = pg_mblen(cp1)) != 1)
-		{
-			len -= wl;
-
-			while (wl-- > 0)
-				*cp2++ = *cp1++;
-			continue;
-		}
-
 		if (*cp1 == '\'')
 			*cp2++ = '\'';
-		if (*cp1 == '\\')
+		else if (*cp1 == '\\')
 			*cp2++ = '\\';
-		*cp2++ = *cp1++;
 
-		len--;
+		*cp2++ = *cp1++;
 	}
 	*cp2++ = '\'';
 
 	VARATT_SIZEP(result) = cp2 - ((char *) result);
 
-	return result;
+	PG_RETURN_TEXT_P(result);
 }
diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c
index 49d29ec..1688b4a 100644
--- a/src/backend/utils/init/postinit.c
+++ b/src/backend/utils/init/postinit.c
@@ -122,9 +122,11 @@ ReverifyMyDatabase(const char *name)
 
 	/*
 	 * Also check that the database is currently allowing connections.
+	 * (We do not enforce this in standalone mode, however, so that there is
+	 * a way to recover from "UPDATE pg_database SET datallowconn = false;")
 	 */
 	dbform = (Form_pg_database) GETSTRUCT(tup);
-	if (!dbform->datallowconn)
+	if (IsUnderPostmaster && !dbform->datallowconn)
 		ereport(FATAL,
 				(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 		 errmsg("database \"%s\" is not currently accepting connections",
@@ -470,13 +472,15 @@ ShutdownPostgres(int code, Datum arg)
 	 * since that just raises the odds of failure --- but there's some
 	 * stuff we need to do.
 	 *
-	 * Release any LW locks and buffer context locks we might be holding.
-	 * This is a kluge to improve the odds that we won't get into a
-	 * self-made stuck-lock scenario while trying to shut down.
+	 * Release any LW locks, buffer content locks, and buffer pins we might be
+	 * holding.  This is a kluge to improve the odds that we won't get into a
+	 * self-made stuck-lock scenario while trying to shut down.  We *must*
+	 * release buffer pins to make it safe to do file deletion, since we
+	 * might have some pins on pages of the target files.
 	 */
 	LWLockReleaseAll();
-	AbortBufferIO();
-	UnlockBuffers();
+	AtProcExit_Buffers();
+	AtProcExit_LocalBuffers();
 
 	/*
 	 * In case a transaction is open, delete any files it created.	This
diff --git a/src/backend/utils/mb/conversion_procs/Makefile b/src/backend/utils/mb/conversion_procs/Makefile
index fb69fe7..e915fe7 100644
--- a/src/backend/utils/mb/conversion_procs/Makefile
+++ b/src/backend/utils/mb/conversion_procs/Makefile
@@ -157,7 +157,7 @@ ifeq ($(enable_shared), yes)
 		func=$$1; shift; \
 		obj=$$1; shift; \
 		echo "-- $$se --> $$de"; \
-		echo "CREATE OR REPLACE FUNCTION $$func (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$$"libdir"/$$obj', '$$func' LANGUAGE 'c' STRICT;"; \
+		echo "CREATE OR REPLACE FUNCTION $$func (INTEGER, INTEGER, CSTRING, INTERNAL, INTEGER) RETURNS VOID AS '$$"libdir"/$$obj', '$$func' LANGUAGE 'c' STRICT;"; \
 		echo "DROP CONVERSION pg_catalog.$$name;"; \
 		echo "CREATE DEFAULT CONVERSION pg_catalog.$$name FOR '$$se' TO '$$de' FROM $$func;"; \
 	done > $@
diff --git a/src/backend/utils/mmgr/portalmem.c b/src/backend/utils/mmgr/portalmem.c
index 525ae8f..12fee76 100644
--- a/src/backend/utils/mmgr/portalmem.c
+++ b/src/backend/utils/mmgr/portalmem.c
@@ -416,18 +416,14 @@ DropDependentPortals(MemoryContext queryContext)
  *
  * Any holdable cursors created in this transaction need to be converted to
  * materialized form, since we are going to close down the executor and
- * release locks.  Remove all other portals created in this transaction.
- * Portals remaining from prior transactions should be left untouched.
+ * release locks.  Other portals are not touched yet.
  *
- * XXX This assumes that portals can be deleted in a random order, ie,
- * no portal has a reference to any other (at least not one that will be
- * exercised during deletion).	I think this is okay at the moment, but
- * we've had bugs of that ilk in the past.  Keep a close eye on cursor
- * references...
+ * Returns TRUE if any holdable cursors were processed, FALSE if not.
  */
-void
-AtCommit_Portals(void)
+bool
+CommitHoldablePortals(void)
 {
+	bool result = false;
 	HASH_SEQ_STATUS status;
 	PortalHashEnt *hentry;
 
@@ -437,27 +433,9 @@ AtCommit_Portals(void)
 	{
 		Portal		portal = hentry->portal;
 
-		/*
-		 * Do not touch active portals --- this can only happen in the
-		 * case of a multi-transaction utility command, such as VACUUM.
-		 *
-		 * Note however that any resource owner attached to such a portal is
-		 * still going to go away, so don't leave a dangling pointer.
-		 */
-		if (portal->status == PORTAL_ACTIVE)
-		{
-			portal->resowner = NULL;
-			continue;
-		}
-
-		/*
-		 * Do nothing else to cursors held over from a previous
-		 * transaction.
-		 */
-		if (portal->createSubid == InvalidSubTransactionId)
-			continue;
-
+		/* Is it a holdable portal created in the current xact? */
 		if ((portal->cursorOptions & CURSOR_OPT_HOLD) &&
+			portal->createSubid != InvalidSubTransactionId &&
 			portal->status == PORTAL_READY)
 		{
 			/*
@@ -484,12 +462,60 @@ AtCommit_Portals(void)
 			 * as not belonging to this transaction.
 			 */
 			portal->createSubid = InvalidSubTransactionId;
+
+			result = true;
 		}
-		else
+	}
+
+	return result;
+}
+
+/*
+ * Pre-commit processing for portals.
+ *
+ * Remove all non-holdable portals created in this transaction.
+ * Portals remaining from prior transactions should be left untouched.
+ *
+ * XXX This assumes that portals can be deleted in a random order, ie,
+ * no portal has a reference to any other (at least not one that will be
+ * exercised during deletion).	I think this is okay at the moment, but
+ * we've had bugs of that ilk in the past.  Keep a close eye on cursor
+ * references...
+ */
+void
+AtCommit_Portals(void)
+{
+	HASH_SEQ_STATUS status;
+	PortalHashEnt *hentry;
+
+	hash_seq_init(&status, PortalHashTable);
+
+	while ((hentry = (PortalHashEnt *) hash_seq_search(&status)) != NULL)
+	{
+		Portal		portal = hentry->portal;
+
+		/*
+		 * Do not touch active portals --- this can only happen in the
+		 * case of a multi-transaction utility command, such as VACUUM.
+		 *
+		 * Note however that any resource owner attached to such a portal is
+		 * still going to go away, so don't leave a dangling pointer.
+		 */
+		if (portal->status == PORTAL_ACTIVE)
 		{
-			/* Zap all non-holdable portals */
-			PortalDrop(portal, true);
+			portal->resowner = NULL;
+			continue;
 		}
+
+		/*
+		 * Do nothing to cursors held over from a previous transaction
+		 * (including holdable ones just frozen by CommitHoldablePortals).
+		 */
+		if (portal->createSubid == InvalidSubTransactionId)
+			continue;
+
+		/* Zap all non-holdable portals */
+		PortalDrop(portal, true);
 	}
 }
 
@@ -601,9 +627,11 @@ AtSubCommit_Portals(SubTransactionId mySubid,
 /*
  * Subtransaction abort handling for portals.
  *
- * Deactivate failed portals created during the failed subtransaction.
+ * Deactivate portals created during the failed subtransaction.
  * Note that per AtSubCommit_Portals, this will catch portals created
  * in descendants of the subtransaction too.
+ *
+ * We don't destroy any portals here; that's done in AtSubCleanup_Portals.
  */
 void
 AtSubAbort_Portals(SubTransactionId mySubid,
@@ -628,6 +656,8 @@ AtSubAbort_Portals(SubTransactionId mySubid,
 		 * will go FAILED if the underlying cursor fails.  (Note we do NOT
 		 * want to do this to upper-level portals, since they may be able
 		 * to continue.)
+		 *
+		 * This is only needed to dodge the sanity check in PortalDrop.
 		 */
 		if (portal->status == PORTAL_ACTIVE)
 			portal->status = PORTAL_FAILED;
@@ -635,7 +665,14 @@ AtSubAbort_Portals(SubTransactionId mySubid,
 		/*
 		 * If the portal is READY then allow it to survive into the parent
 		 * transaction; otherwise shut it down.
+		 *
+		 * Currently, we can't actually support that because the portal's
+		 * query might refer to objects created or changed in the failed
+		 * subtransaction, leading to crashes if execution is resumed.
+		 * So, even READY portals are deleted.  It would be nice to detect
+		 * whether the query actually depends on any such object, instead.
 		 */
+#ifdef NOT_USED
 		if (portal->status == PORTAL_READY)
 		{
 			portal->createSubid = parentSubid;
@@ -643,6 +680,7 @@ AtSubAbort_Portals(SubTransactionId mySubid,
 				ResourceOwnerNewParent(portal->resowner, parentXactOwner);
 		}
 		else
+#endif
 		{
 			/* let portalcmds.c clean up the state it knows about */
 			if (PointerIsValid(portal->cleanup))
diff --git a/src/backend/utils/sort/tuplesort.c b/src/backend/utils/sort/tuplesort.c
index a96ade0..3db8fcd 100644
--- a/src/backend/utils/sort/tuplesort.c
+++ b/src/backend/utils/sort/tuplesort.c
@@ -1804,13 +1804,12 @@ myFunctionCall2(FmgrInfo *flinfo, Datum arg1, Datum arg2)
 	FunctionCallInfoData fcinfo;
 	Datum		result;
 
-	/* MemSet(&fcinfo, 0, sizeof(fcinfo)); */
+	fcinfo.flinfo = flinfo;
 	fcinfo.context = NULL;
 	fcinfo.resultinfo = NULL;
 	fcinfo.isnull = false;
-
-	fcinfo.flinfo = flinfo;
 	fcinfo.nargs = 2;
+
 	fcinfo.arg[0] = arg1;
 	fcinfo.arg[1] = arg2;
 	fcinfo.argnull[0] = false;
diff --git a/src/bcc32.mak b/src/bcc32.mak
index d861c92..a2f6c92 100644
--- a/src/bcc32.mak
+++ b/src/bcc32.mak
@@ -29,19 +29,19 @@ ALL:
    if not exist pg_config.h copy pg_config.h.win32 pg_config.h
    cd ..
    cd interfaces\libpq
-   make -DCFG=$(CFG) /f bcc32.mak 
+   make -N -DCFG=$(CFG) /f bcc32.mak 
    cd ..\..\bin\psql
-   make -DCFG=$(CFG) /f bcc32.mak
+   make -N -DCFG=$(CFG) /f bcc32.mak
    cd ..\..
    echo All Win32 parts have been built!
 
 CLEAN:
    cd interfaces\libpq
-   make -DCFG=Release /f bcc32.mak CLEAN
-   make -DCFG=Debug /f bcc32.mak CLEAN
+   make -N -DCFG=Release /f bcc32.mak CLEAN
+   make -N -DCFG=Debug /f bcc32.mak CLEAN
    cd ..\..\bin\psql
-   make -DCFG=Release /f bcc32.mak CLEAN
-   make -DCFG=Debug /f bcc32.mak CLEAN
+   make -N -DCFG=Release /f bcc32.mak CLEAN
+   make -N -DCFG=Debug /f bcc32.mak CLEAN
    cd ..\..
    echo All Win32 parts have been cleaned!
 
diff --git a/src/bin/initdb/Makefile b/src/bin/initdb/Makefile
index 7e27ceb..4ea426f 100644
--- a/src/bin/initdb/Makefile
+++ b/src/bin/initdb/Makefile
@@ -21,7 +21,7 @@ OBJS=	initdb.o $(WIN32RES)
 all: submake-libpq submake-libpgport initdb
 
 initdb: $(OBJS) $(libpq_builddir)/libpq.a
-	$(CC) $(CFLAGS) $(OBJS) $(libpq) $(LDFLAGS) $(LIBS) -o $@$(X)
+	$(CC) $(CFLAGS) $(OBJS) $(libpq_pgport) $(LDFLAGS) $(LIBS) -o $@$(X)
 
 install: all installdirs
 	$(INSTALL_PROGRAM) initdb$(X) $(DESTDIR)$(bindir)/initdb$(X)
diff --git a/src/bin/initdb/po/pl.po b/src/bin/initdb/po/pl.po
new file mode 100644
index 0000000..d3fc4df
--- /dev/null
+++ b/src/bin/initdb/po/pl.po
@@ -0,0 +1,600 @@
+# INITDB Translated Messages into the Polish Language (ISO-8859-2)
+#
+# Copyright (c) 2005 toczek, xxxtoczekxxx@wp.pl
+# Distributed under the same licensing terms as PostgreSQL itself.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: initdb-cs\n"
+"POT-Creation-Date: 2005-01-31 02:07+0000\n"
+"PO-Revision-Date: 2005-01-12 15:24+0100\n"
+"Last-Translator: toczek <xxxtoczekxxx@wp.pl>\n"
+"Language-Team:\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: initdb.c:251 initdb.c:265
+#, c-format
+msgid "%s: out of memory\n"
+msgstr "%s: brak pami�ci\n"
+
+#: initdb.c:372 initdb.c:1403
+#, c-format
+msgid "%s: could not open file \"%s\" for reading: %s\n"
+msgstr "%s: nie mo�na otworzy� pliku \"%s\" do odczytu: %s\n"
+
+#: initdb.c:433 initdb.c:1030 initdb.c:1057
+#, c-format
+msgid "%s: could not open file \"%s\" for writing: %s\n"
+msgstr "%s: nie mo�na otworzy� pliku \"%s\" do zapisu: %s\n"
+
+#: initdb.c:441 initdb.c:449 initdb.c:1037 initdb.c:1063
+#, c-format
+msgid "%s: could not write file \"%s\": %s\n"
+msgstr "%s: nie mo�na zapisa� pliku \"%s\": %s\n"
+
+#: initdb.c:468
+#, c-format
+msgid "%s: could not execute command \"%s\": %s\n"
+msgstr "%s: nie mo�na wykona� komendy \"%s\": %s\n"
+
+#: initdb.c:588
+#, c-format
+msgid "%s: removing data directory \"%s\"\n"
+msgstr "%s: usuwanie katalogu danych \"%s\"\n"
+
+#: initdb.c:591
+#, c-format
+msgid "%s: failed to remove data directory\n"
+msgstr "%s: nie uda�o si� usuni�cie katalogu danych\n"
+
+#: initdb.c:597
+#, c-format
+msgid "%s: removing contents of data directory \"%s\"\n"
+msgstr "%s: usuwanie zawarto�ci w katalogu danych \"%s\"\n"
+
+#: initdb.c:600
+#, c-format
+msgid "%s: failed to remove contents of data directory\n"
+msgstr "%s: nie uda�o si� usun�� zawarto�ci w katalogu danych\n"
+
+#: initdb.c:609
+#, c-format
+msgid "%s: data directory \"%s\" not removed at user's request\n"
+msgstr "%s: katalog \"%s\" nie zosta� usuni�ty na �adanie u�ytkownika\n"
+
+#: initdb.c:635
+#, c-format
+msgid ""
+"%s: cannot be run as root\n"
+"Please log in (using, e.g., \"su\") as the (unprivileged) user that will\n"
+"own the server process.\n"
+msgstr ""
+"%s: nie mo�na uruchomi� jako root\n"
+"Prosz� zalogowa� (u�ywajac np: \"su\") si� na u�ytkownika kt�ry\n"
+"b�dzie w�a�cicielem procesu.\n"
+
+#: initdb.c:684
+#, c-format
+msgid "%s: \"%s\" is not a valid server encoding name\n"
+msgstr "%s: \"%s\" nie jest poprawn� nazw� kodowania\n"
+
+#: initdb.c:839
+#, c-format
+msgid "%s: warning: encoding mismatch\n"
+msgstr "%s: uwaga: b��dne kodowanie\n"
+
+#: initdb.c:841
+#, c-format
+msgid ""
+"The encoding you selected (%s) and the encoding that the selected\n"
+"locale uses (%s) are not known to match.  This may lead to\n"
+"misbehavior in various character string processing functions.  To fix\n"
+"this situation, rerun %s and either do not specify an encoding\n"
+"explicitly, or choose a matching combination.\n"
+msgstr ""
+"Kodowanie kt�re wybra�e� (%s) i kodowanie kt�re jest u�ywane przez\n"
+"regu�y j�zykowe (%s) nie zgadzaj� si�. Mo�e to prowadzi�\n"
+"do b��d�w w wielu funkcjach operuj�cuch na stringach.\n"
+"Aby poprawi� ten b��d uruchom ponownie %s i albo nie ustawiaj kodowania\n"
+"lub wybierz pasuj�c� kombinacj�.\n"
+
+#: initdb.c:971
+#, c-format
+msgid "%s: could not create directory \"%s\": %s\n"
+msgstr "%s: nie mo�na utworzy� katalogu \"%s\": %s\n"
+
+#: initdb.c:999
+#, c-format
+msgid ""
+"%s: file \"%s\" does not exist\n"
+"This means you have a corrupted installation or identified\n"
+"the wrong directory with the invocation option -L.\n"
+msgstr ""
+"%s: plik \"%s\" nie istnieje\n"
+"Oznacza to i� posiadasz uszkodzon� instalacj� lub wskaza�e�\n"
+"z�y katalog przy u�yciu opcji -L.\n"
+
+#: initdb.c:1081
+msgid "selecting default max_connections ... "
+msgstr "wybieranie standardowej warto�ci max_connections ... "
+
+#: initdb.c:1117
+msgid "selecting default shared_buffers ... "
+msgstr "wybieranie standardowej warto�ci shared_buffers ... "
+
+#: initdb.c:1150
+msgid "creating configuration files ... "
+msgstr "tworzenie plik�w konfiguracyjnych ... "
+
+#: initdb.c:1251
+#, c-format
+msgid "creating template1 database in %s/base/1 ... "
+msgstr "tworzenie bazy template1 w folderze %s/base/1 ... "
+
+#: initdb.c:1267
+#, c-format
+msgid ""
+"%s: input file \"%s\" does not belong to PostgreSQL %s\n"
+"Check your installation or specify the correct path using the option -L.\n"
+msgstr ""
+"%s: plik wej�ciowy \"%s\" nie nale�y do bazy danych PostgreSQL %s\n"
+"Sprawd� swoj� instalacj� lub podaj popraw� scie�k� przy pomocy zmiennej -L.\n"
+
+#: initdb.c:1342
+msgid "initializing pg_shadow ... "
+msgstr "przygotowywanie pg_shadow ... "
+
+#: initdb.c:1378
+msgid "Enter new superuser password: "
+msgstr "Podaj has�o superu�ytkownika: "
+
+#: initdb.c:1379
+msgid "Enter it again: "
+msgstr "Powt�rz podane has�o: "
+
+#: initdb.c:1382
+msgid "Passwords didn't match.\n"
+msgstr "Podane has�a r�ni� si�.\n"
+
+#: initdb.c:1409
+#, c-format
+msgid "%s: could not read password from file \"%s\": %s\n"
+msgstr "%s: nie mo�na odczyta� has�a z pliku \"%s\": %s\n"
+
+#: initdb.c:1422
+msgid "setting password ... "
+msgstr "ustawianie has�a ... "
+
+#: initdb.c:1443
+#, c-format
+msgid "%s: The password file was not generated. Please report this problem.\n"
+msgstr "%s: Plik z has�em nie zosta� stworzony. Prosz� zg�osi� ten problem.\n"
+
+#: initdb.c:1471
+msgid "enabling unlimited row size for system tables ... "
+msgstr "umo�liwienie niesko�czonego rozmiaru wiersza w tabeli systemowej ... "
+
+#: initdb.c:1544
+msgid "initializing pg_depend ... "
+msgstr "przygotowywanie pg_depend ... "
+
+#: initdb.c:1572
+msgid "creating system views ... "
+msgstr "tworzenie widok�w systemowych ... "
+
+#: initdb.c:1608
+msgid "loading pg_description ... "
+msgstr "�adowanie pg_decription ... "
+
+#: initdb.c:1647
+msgid "creating conversions ... "
+msgstr "tworzenie konwersji ... "
+
+#: initdb.c:1701
+msgid "setting privileges on built-in objects ... "
+msgstr "ustawianie uprawnie� dla wbudowanych obiekt�w ... "
+
+#: initdb.c:1759
+msgid "creating information schema ... "
+msgstr "tworzenie schematu informacyjnego ... "
+
+#: initdb.c:1816
+msgid "vacuuming database template1 ... "
+msgstr "czyszczenie bazy template1 ... "
+
+#: initdb.c:1870
+msgid "copying template1 to template0 ... "
+msgstr "kopiowanie bazy template1 do bazy template0 ... "
+
+#: initdb.c:1927
+msgid "caught signal\n"
+msgstr "sygna� otrzymany\n"
+
+#: initdb.c:1933
+#, c-format
+msgid "could not write to child process: %s\n"
+msgstr "nie mo�na zapisa� do procesu potomnego: %s\n"
+
+#: initdb.c:1941
+msgid "ok\n"
+msgstr "ok\n"
+
+#: initdb.c:1989
+#, c-format
+msgid "%s: invalid locale name \"%s\"\n"
+msgstr "%s: b��dna nazwa lokalna \"%s\"\n"
+
+#: initdb.c:2056
+#, c-format
+msgid ""
+"%s initializes a PostgreSQL database cluster.\n"
+"\n"
+msgstr ""
+"%s Przygotowanie bazy danych PostgreSQL.\n"
+"\n"
+
+#: initdb.c:2057
+msgid "Usage:\n"
+msgstr "Sk�adnia:\n"
+
+#: initdb.c:2058
+#, c-format
+msgid "  %s [OPTION]... [DATADIR]\n"
+msgstr "  %s [OPCJA]... [KATALOG-DOCELOWY]\n"
+
+#: initdb.c:2059
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"Opcje:\n"
+
+#: initdb.c:2060
+msgid " [-D, --pgdata=]DATADIR     location for this database cluster\n"
+msgstr " [-D, --pgdata=]KATALOG-DOCELOWY     lokalizacja bazy danych\n"
+
+#: initdb.c:2061
+msgid "  -E, --encoding=ENCODING   set default encoding for new databases\n"
+msgstr ""
+"  -E, --encoding=KODOWANIE   ustawia podstawowe kodowanie dla nowej bazy\n"
+
+#: initdb.c:2062
+msgid ""
+"  --locale=LOCALE           initialize database cluster with given locale\n"
+msgstr "  --locale=LOCALE\t\t\t przygotowanie klastra bazy danych z podanymi regu�ami j�zykowymi\n"
+
+#: initdb.c:2063
+msgid ""
+"  --lc-collate, --lc-ctype, --lc-messages=LOCALE\n"
+"  --lc-monetary, --lc-numeric, --lc-time=LOCALE\n"
+"                            initialize database cluster with given locale\n"
+"                            in the respective category (default taken from\n"
+"                            environment)\n"
+msgstr ""
+"  --lc-collate, --lc-ctype, --lc-messages=LOCALE\n"
+"  --lc-monetary, --lc-numeric, --lc-time=LOCALE\n"
+"                            przygotowanie klastra bazy danych z podamymi\n"
+"                            regu�ami j�zykowymi dla poszczeg�lnych kategori\n"
+
+#: initdb.c:2068
+msgid "  --no-locale               equivalent to --locale=C\n"
+msgstr " --no-locale               r�wnowa�ne z opcj� --locale=C\n"
+
+#: initdb.c:2069
+msgid ""
+"  -A, --auth=METHOD         default authentication method for local "
+"connections\n"
+msgstr "  -A, --auth=METODA          podstawowa metoda autoryzacji dla lokalnych po��cze�\n"
+
+#: initdb.c:2070
+msgid "  -U, --username=NAME       database superuser name\n"
+msgstr "  -U, --username=NAZWA       w�a�ciciel bazy danych\n"
+
+#: initdb.c:2071
+msgid ""
+"  -W, --pwprompt            prompt for a password for the new superuser\n"
+msgstr "  -W, --pwprompt            pro� o has�o dla w�a�ciciela bazy danych\n"
+
+#: initdb.c:2072
+msgid ""
+"  --pwfile=FILE             read password for the new superuser from file\n"
+msgstr "  --pwfile=PLIK            czytaj has�o dla w�a�ciciela bazy z pliku\n"
+
+#: initdb.c:2073
+msgid "  -?, --help                show this help, then exit\n"
+msgstr "  -?, --help                poka� ten komunikat i zako�cz dzia�anie\n"
+
+#: initdb.c:2074
+msgid "  -V, --version             output version information, then exit\n"
+msgstr "  -V, --versin             poka� informacje o wersji i zako�cz\n"
+
+#: initdb.c:2075
+msgid ""
+"\n"
+"Less commonly used options:\n"
+msgstr ""
+"\n"
+"Rzadziej u�ywane opcje:\n"
+
+#: initdb.c:2076
+msgid "  -d, --debug               generate lots of debugging output\n"
+msgstr "  -d, --debug               wy�wietlanie informacji debugger'a\n"
+
+#: initdb.c:2077
+msgid "  -s, --show                show internal settings\n"
+msgstr "  -s, --show                poka� wewn�trzne ustawienia\n"
+
+#: initdb.c:2078
+msgid "  -L DIRECTORY              where to find the input files\n"
+msgstr "  -L KATALOG              gdzie szuka� plik�w wej�ciowych\n"
+
+#: initdb.c:2079
+msgid "  -n, --noclean             do not clean up after errors\n"
+msgstr "  -n, --noclean             b��dy nie b�d� porz�dkowane\n"
+
+#: initdb.c:2080
+msgid ""
+"\n"
+"If the data directory is not specified, the environment variable PGDATA\n"
+"is used.\n"
+msgstr ""
+"\n"
+"Je�li katalog nie jest wskazany wtedy u�ywana jest zmienna PGDATA\n"
+"do okre�lenia tego� katalogu.\n"
+
+#: initdb.c:2082
+msgid ""
+"\n"
+"Report bugs to <pgsql-bugs@postgresql.org>.\n"
+msgstr ""
+"\n"
+"B��dy prosz� przesy�a� na adres <pgsql-bugs@postgresql.org>.\n"
+
+#: initdb.c:2175
+msgid "Running in debug mode.\n"
+msgstr "Dzia�anie w trybie debug.\n"
+
+#: initdb.c:2179
+msgid "Running in noclean mode.  Mistakes will not be cleaned up.\n"
+msgstr "Dzia�anie w trybie nonclean. B��dy nie b�d� porz�dkowane.\n"
+
+#: initdb.c:2216 initdb.c:2233 initdb.c:2453
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "Spr�buj \"%s --help\" aby uzyka� wiecej informacji.\n"
+
+#: initdb.c:2231
+#, c-format
+msgid "%s: too many command-line arguments (first is \"%s\")\n"
+msgstr "%s: za du�a ilo�� parametr�w (pierwszy to \"%s\")\n"
+
+#: initdb.c:2239
+#, c-format
+msgid "%s: password prompt and password file may not be specified together\n"
+msgstr "%s: podane has�o i plik has�a nie mog� by� podane jednocze�nie\n"
+
+#: initdb.c:2245
+msgid ""
+"\n"
+"WARNING: enabling \"trust\" authentication for local connections\n"
+"You can change this by editing pg_hba.conf or using the -A option the\n"
+"next time you run initdb.\n"
+msgstr ""
+"\n"
+"UWAGA: metoda autoryzacji ustawiona jako \"trust\" dla po��cze�.\n"
+"Metod� autoryzacji mo�esz zmieni� edytuj�c plik pg_hba.conf\n"
+"lub u�ywaj�c opcji -A przy uruchomieniu initdb.\n"
+
+#: initdb.c:2269
+#, c-format
+msgid "%s: unrecognized authentication method \"%s\"\n"
+msgstr "%s: b��dny spos�b autoryzacji \"%s\"\n"
+
+#: initdb.c:2279
+#, c-format
+msgid ""
+"%s: must specify a password for the superuser to enable %s authentication\n"
+msgstr "%s: musisz poda� has�o superu�ytkownika aby aktywowa� %s autoryzacj�\n"
+
+#: initdb.c:2294
+#, c-format
+msgid ""
+"%s: no data directory specified\n"
+"You must identify the directory where the data for this database system\n"
+"will reside.  Do this with either the invocation option -D or the\n"
+"environment variable PGDATA.\n"
+msgstr ""
+"%s: nie ustawiony katalog danych\n"
+"Musisz poda� katalog gdzie dane bazy danych b�d� przechowywane.\n"
+"Mo�esz tego dokona� u�ywaj�c opcj� -D lub przy pomocy\n"
+"zmiennej �rodowiskowej PGDATA.\n"
+
+#: initdb.c:2326
+#, c-format
+msgid ""
+"The program \"postgres\" is needed by %s but was not found in the\n"
+"same directory as \"%s\".\n"
+"Check your installation.\n"
+msgstr ""
+"Program \"postgres\" jest wymagany przez %s ale nie zosta� znaleziony \n"
+"w tym samym folderze co \"%s\".\n"
+"Sprawd� instalcj�.\n"
+
+#: initdb.c:2333
+#, c-format
+msgid ""
+"The program \"postgres\" was found by \"%s\"\n"
+"but was not the same version as %s.\n"
+"Check your installation.\n"
+msgstr ""
+"Program \"postgres\" zosta� znaleziony przez \"%s\"nale nie jest w tej samej wersji co %s.\n"
+"Sprawd� instalacj�.\n"
+
+#: initdb.c:2352
+#, c-format
+msgid "%s: input file location must be an absolute path\n"
+msgstr "%s: lokalizacja plik�w wej�ciowych musi by� bezwzgl�dna\n"
+
+#: initdb.c:2360
+#, c-format
+msgid "%s: could not determine valid short version string\n"
+msgstr "%s: nie mo�na ustali� poprawnego skr�conego opisu wersji\n"
+
+#: initdb.c:2413
+#, c-format
+msgid ""
+"The files belonging to this database system will be owned by user \"%s\".\n"
+"This user must also own the server process.\n"
+"\n"
+msgstr ""
+"W�a�cicielem plik�w nale��cych do sytemu bazy danych b�dzie u�ytkownik \"%s\".\n"
+"Ten u�ytkownik musi jednocze�nie by� w�a�cicielem procesu serwera.\n"
+
+#: initdb.c:2423
+#, c-format
+msgid "The database cluster will be initialized with locale %s.\n"
+msgstr "Klaster bazy zostanie utworzony z zestawem regu� j�zykowych %s.\n"
+
+#: initdb.c:2426
+#, c-format
+msgid ""
+"The database cluster will be initialized with locales\n"
+"  COLLATE:  %s\n"
+"  CTYPE:    %s\n"
+"  MESSAGES: %s\n"
+"  MONETARY: %s\n"
+"  NUMERIC:  %s\n"
+"  TIME:     %s\n"
+msgstr ""
+"Klaster bazy danych zostanie utowrzony z zestawem regu� j�zykowych\n"
+"  COLLATE: %s\n"
+"  CTYPE:    %s\n"
+"  MESSAGES: %s\n"
+"  MONETARY: %s\n"
+"  NUMERIC:  %s\n"
+"  TIME:     %s\n"
+
+#: initdb.c:2451
+#, c-format
+msgid "%s: could not find suitable encoding for locale \"%s\"\n"
+msgstr "%s: nie mo�na znale�� odpowiedniego kodowania dla regu� j�zykowych \"%s\"\n"
+
+#: initdb.c:2452
+#, c-format
+msgid "Rerun %s with the -E option.\n"
+msgstr "W��cz polecenie %s ponownie z opcj� -E.\n"
+
+#: initdb.c:2459
+#, c-format
+msgid "The default database encoding has accordingly been set to %s.\n"
+msgstr "Podstawowe kodowanie bazy danych zosta�o ustawione jako %s.\n"
+
+#: initdb.c:2500
+#, c-format
+msgid "creating directory %s ... "
+msgstr "tworzenie katalogu %s ... "
+
+#: initdb.c:2514
+#, c-format
+msgid "fixing permissions on existing directory %s ... "
+msgstr "ustalanie uprawnie� katalogu %s ... "
+
+#: initdb.c:2520
+#, c-format
+msgid "%s: could not change permissions of directory \"%s\": %s\n"
+msgstr "%s: nie mo�na zmieni� uprawnie� katalogu \"%s\": %s\n"
+
+#: initdb.c:2533
+#, c-format
+msgid ""
+"%s: directory \"%s\" exists but is not empty\n"
+"If you want to create a new database system, either remove or empty\n"
+"the directory \"%s\" or run %s\n"
+"with an argument other than \"%s\".\n"
+msgstr ""
+"%s: katalog \"%s\" istnieje ale nie jest pusty\n"
+"Je�li chcesz stworzy� now� baz� danych usu� ten katalog,\n"
+"wyczy�� katalog \"%s\" lub uruchom program %s\n"
+"z innym parametrem okre�laj�cym katalog ni� \"%s\".\n"
+
+#: initdb.c:2542
+#, c-format
+msgid "%s: could not access directory \"%s\": %s\n"
+msgstr "%s: brak dostepu do katalogu \"%s\": %s\n"
+
+#: initdb.c:2551
+#, c-format
+msgid "creating directory %s/%s ... "
+msgstr "tworzenie katalogu %s/%s ... "
+
+#: initdb.c:2619
+#, c-format
+msgid ""
+"\n"
+"Success. You can now start the database server using:\n"
+"\n"
+"    %s%s%s%spostmaster -D %s%s%s\n"
+"or\n"
+"    %s%s%s%spg_ctl -D %s%s%s -l logfile start\n"
+"\n"
+msgstr ""
+"\n"
+"Utworzono. Teraz mo�esz uruchomi� serwer bazy danych u�ywaj�c:\n"
+"\n"
+"    %s%s%s%spostmaster -D %s%s%s\n"
+"lub\n"
+"    %s%s%s%spg_ctl -D %s%s%s -l plik_z_logami start\n"
+"\n"
+
+#: ../../port/dirmod.c:75 ../../port/dirmod.c:88 ../../port/dirmod.c:101
+msgid "out of memory\n"
+msgstr "brak pami�ci\n"
+
+#: ../../port/exec.c:194 ../../port/exec.c:308 ../../port/exec.c:351
+#, c-format
+msgid "could not identify current directory: %s"
+msgstr "nie mo�na zidentyfikowa� aktualnego katalogu: %s"
+
+#: ../../port/exec.c:213
+#, c-format
+msgid "invalid binary \"%s\""
+msgstr "b��dna binarka \"%s\""
+
+#: ../../port/exec.c:262
+#, c-format
+msgid "could not read binary \"%s\""
+msgstr "nie mo�na odczyta� binarki \"%s\""
+
+#: ../../port/exec.c:269
+#, c-format
+msgid "could not find a \"%s\" to execute"
+msgstr "nie mo�na odnale�� \"%s\" do wykonania"
+
+#: ../../port/exec.c:324 ../../port/exec.c:360
+#, c-format
+msgid "could not change directory to \"%s\""
+msgstr "nie mo�na zmieni� katalogu na \"%s\""
+
+#: ../../port/exec.c:339
+#, c-format
+msgid "could not read symbolic link \"%s\""
+msgstr "nie mo�na odczyta� odwo�ania symbolicznego  \"%s\""
+
+#: ../../port/exec.c:587
+#, c-format
+msgid "child process exited with exit code %d"
+msgstr "proces potomny zako�czyl dzia�anie z kodem %d"
+
+#: ../../port/exec.c:590
+#, c-format
+msgid "child process was terminated by signal %d"
+msgstr "proces potomny zosta� przerwany przez sygna� %d"
+
+#: ../../port/exec.c:593
+#, c-format
+msgid "child process exited with unrecognized status %d"
+msgstr "proces potomny zako�czy� dzia�anie z nieznanym stanem %d"
diff --git a/src/bin/initdb/po/ru.po b/src/bin/initdb/po/ru.po
index 5faf368..f8ef047 100644
--- a/src/bin/initdb/po/ru.po
+++ b/src/bin/initdb/po/ru.po
@@ -7,14 +7,15 @@
 # $PostgreSQL$
 #
 # ChangeLog:
+#   - January 17, 2005: complete translation for 8.0, Serguei A. Mokhov <mokhov@cs.concordia.ca>
 #   - December, 2004: New translation by Oleg Bartunov <oleg@sai.msu.su>
 #   - March 27 - December 10, 2004: Initial Translation, Serguei A. Mokhov <mokhov@cs.concordia.ca>
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: PostgreSQL 8.0\n"
-"POT-Creation-Date: 2004-12-10 19:06+0000\n"
-"PO-Revision-Date: 2004-12-10 21:32-0500\n"
+"POT-Creation-Date: 2005-01-17 19:04+0000\n"
+"PO-Revision-Date: 2005-01-17 15:19-0500\n"
 "Last-Translator: Serguei A. Mokhov <mokhov@cs.concordia.ca>\n"
 "Language-Team: pgsql-ru-general <pgsql-ru-general@postgresql.org>\n"
 "MIME-Version: 1.0\n"
@@ -23,64 +24,64 @@ msgstr ""
 "X-Poedit-Language: Russian\n"
 "X-Poedit-Country: RUSSIAN FEDERATION\n"
 
-#: initdb.c:250
-#: initdb.c:264
+#: initdb.c:251
+#: initdb.c:265
 #, c-format
 msgid "%s: out of memory\n"
 msgstr "%s: �� ������� ������\n"
 
-#: initdb.c:374
-#: initdb.c:1403
+#: initdb.c:372
+#: initdb.c:1406
 #, c-format
 msgid "%s: could not open file \"%s\" for reading: %s\n"
 msgstr "%s: �� ������� ������� ���� \"%s\" ��� ������: %s\n"
 
-#: initdb.c:435
-#: initdb.c:1035
-#: initdb.c:1062
+#: initdb.c:433
+#: initdb.c:1033
+#: initdb.c:1060
 #, c-format
 msgid "%s: could not open file \"%s\" for writing: %s\n"
 msgstr "%s: �� ������� ������� ���� \"%s\" ��� ������: %s\n"
 
-#: initdb.c:443
-#: initdb.c:451
-#: initdb.c:1042
-#: initdb.c:1068
+#: initdb.c:441
+#: initdb.c:449
+#: initdb.c:1040
+#: initdb.c:1066
 #, c-format
 msgid "%s: could not write file \"%s\": %s\n"
 msgstr "%s: �� ������� �������� � ���� \"%s\": %s\n"
 
-#: initdb.c:470
+#: initdb.c:468
 #, c-format
 msgid "%s: could not execute command \"%s\": %s\n"
 msgstr "%s: �� ������� ��������� ������� \"%s\": %s\n"
 
-#: initdb.c:593
+#: initdb.c:591
 #, c-format
 msgid "%s: removing data directory \"%s\"\n"
 msgstr "%s: �������� ���������� ������ \"%s\"\n"
 
-#: initdb.c:596
+#: initdb.c:594
 #, c-format
 msgid "%s: failed to remove data directory\n"
 msgstr "%s: ������ ��� �������� ���������� ������\n"
 
-#: initdb.c:602
+#: initdb.c:600
 #, c-format
 msgid "%s: removing contents of data directory \"%s\"\n"
 msgstr "%s: �������� ����������� ���������� ������ \"%s\"\n"
 
-#: initdb.c:605
+#: initdb.c:603
 #, c-format
 msgid "%s: failed to remove contents of data directory\n"
 msgstr "%s: ������ ��� �������� ����������� ���������� ������\n"
 
-#: initdb.c:614
+#: initdb.c:612
 #, c-format
 msgid "%s: data directory \"%s\" not removed at user's request\n"
 msgstr "%s: ���������� ������ \"%s\" �� ������� �� ������� ������������\n"
 
-#: initdb.c:640
+#: initdb.c:638
 #, c-format
 msgid ""
 "%s: cannot be run as root\n"
@@ -91,17 +92,17 @@ msgstr ""
 "����������, ������� ��� (�������������������) ������������ (��������,\n"
 "��������� \"su\"), ��� ������� ����� ����������� ��������� �������.\n"
 
-#: initdb.c:689
+#: initdb.c:687
 #, c-format
 msgid "%s: \"%s\" is not a valid server encoding name\n"
 msgstr "%s: \"%s\" �� �������� ������ ���������� �������\n"
 
-#: initdb.c:844
+#: initdb.c:842
 #, c-format
 msgid "%s: warning: encoding mismatch\n"
 msgstr "%s: ��������: �������������� ���������\n"
 
-#: initdb.c:846
+#: initdb.c:844
 #, c-format
 msgid ""
 "The encoding you selected (%s) and the encoding that the selected\n"
@@ -116,12 +117,12 @@ msgstr ""
 "��� �����������  ������������� %s �, ���� �� ����������\n"
 "���������, ���� ������� ���������� ���������� ��������� � ������.\n"
 
-#: initdb.c:976
+#: initdb.c:974
 #, c-format
 msgid "%s: could not create directory \"%s\": %s\n"
 msgstr "%s: �� ������� ������� ���������� \"%s\": %s\n"
 
-#: initdb.c:1004
+#: initdb.c:1002
 #, c-format
 msgid ""
 "%s: file \"%s\" does not exist\n"
@@ -132,24 +133,24 @@ msgstr ""
 "��� ��������, ��� � ��� �������� � ���������� ��� �������\n"
 "������������ ���������� � ����� ������� -L.\n"
 
-#: initdb.c:1086
+#: initdb.c:1084
 msgid "selecting default max_connections ... "
 msgstr "���������� �������� ��-��������� ��� max_connections ... "
 
-#: initdb.c:1122
+#: initdb.c:1120
 msgid "selecting default shared_buffers ... "
 msgstr "���������� �������� ��-��������� ��� shared_buffers ... "
 
-#: initdb.c:1155
+#: initdb.c:1153
 msgid "creating configuration files ... "
 msgstr "�������� ���������������� ������ ... "
 
-#: initdb.c:1251
+#: initdb.c:1254
 #, c-format
 msgid "creating template1 database in %s/base/1 ... "
 msgstr "�������� ���� template1 � %s/base/1 ... "
 
-#: initdb.c:1267
+#: initdb.c:1270
 #, c-format
 msgid ""
 "%s: input file \"%s\" does not belong to PostgreSQL %s\n"
@@ -158,91 +159,91 @@ msgstr ""
 "%s: ������� ���� \"%s\" �� ����������� PostgreSQL %s\n"
 "��������� ���� ��������� ��� ������� ���������� ���� � ������� ����� -L.\n"
 
-#: initdb.c:1342
+#: initdb.c:1345
 msgid "initializing pg_shadow ... "
 msgstr "������������� pg_shadow ... "
 
-#: initdb.c:1378
+#: initdb.c:1381
 msgid "Enter new superuser password: "
 msgstr "������� ����� ������ ��������������: "
 
-#: initdb.c:1379
+#: initdb.c:1382
 msgid "Enter it again: "
 msgstr "������� ��� �����: "
 
-#: initdb.c:1382
+#: initdb.c:1385
 msgid "Passwords didn't match.\n"
 msgstr "������ �� ���������.\n"
 
-#: initdb.c:1409
+#: initdb.c:1412
 #, c-format
 msgid "%s: could not read password from file \"%s\": %s\n"
 msgstr "%s: �� ������� ������� ������ �� ����� \"%s\": %s\n"
 
-#: initdb.c:1422
+#: initdb.c:1425
 msgid "setting password ... "
 msgstr "��������� ������ ... "
 
-#: initdb.c:1443
+#: initdb.c:1446
 #, c-format
 msgid "%s: The password file was not generated. Please report this problem.\n"
 msgstr "%s: �� ������� ������������� ������. ����������, �������� �� ���� ��������.\n"
 
-#: initdb.c:1471
+#: initdb.c:1474
 msgid "enabling unlimited row size for system tables ... "
 msgstr "���������� ��������������� ������� ������ ��� ��������� ������ ... "
 
-#: initdb.c:1544
+#: initdb.c:1547
 msgid "initializing pg_depend ... "
 msgstr "������������� pg_depend ... "
 
-#: initdb.c:1572
+#: initdb.c:1575
 msgid "creating system views ... "
 msgstr "�������� ��������� ������������� ... "
 
-#: initdb.c:1608
+#: initdb.c:1611
 msgid "loading pg_description ... "
 msgstr "�������� pg_description ... "
 
-#: initdb.c:1647
+#: initdb.c:1650
 msgid "creating conversions ... "
 msgstr "�������� ��������� ... "
 
-#: initdb.c:1701
+#: initdb.c:1704
 msgid "setting privileges on built-in objects ... "
 msgstr "��������� ���������� ��� ���������� �������� ... "
 
-#: initdb.c:1759
+#: initdb.c:1762
 msgid "creating information schema ... "
 msgstr "�������� �������������� ����� ... "
 
-#: initdb.c:1816
+#: initdb.c:1819
 msgid "vacuuming database template1 ... "
 msgstr "������ ������ � ���� template1 ... "
 
-#: initdb.c:1870
+#: initdb.c:1873
 msgid "copying template1 to template0 ... "
 msgstr "����������� template1 � template0 ... "
 
-#: initdb.c:1927
+#: initdb.c:1930
 msgid "caught signal\n"
 msgstr "���������� ������\n"
 
-#: initdb.c:1933
+#: initdb.c:1936
 #, c-format
 msgid "could not write to child process: %s\n"
 msgstr "�� ������� �������� � �������� �������: %s\n"
 
-#: initdb.c:1941
+#: initdb.c:1944
 msgid "ok\n"
 msgstr "��\n"
 
-#: initdb.c:1989
+#: initdb.c:1992
 #, c-format
 msgid "%s: invalid locale name \"%s\"\n"
 msgstr "%s: ��������� ��� ������ \"%s\"\n"
 
-#: initdb.c:2056
+#: initdb.c:2059
 #, c-format
 msgid ""
 "%s initializes a PostgreSQL database cluster.\n"
@@ -251,16 +252,16 @@ msgstr ""
 "%s �������������� ������� PostgreSQL.\n"
 "\n"
 
-#: initdb.c:2057
+#: initdb.c:2060
 msgid "Usage:\n"
 msgstr "�������������:\n"
 
-#: initdb.c:2058
+#: initdb.c:2061
 #, c-format
 msgid "  %s [OPTION]... [DATADIR]\n"
 msgstr "  %s [OPTION]... [DATADIR]\n"
 
-#: initdb.c:2059
+#: initdb.c:2062
 msgid ""
 "\n"
 "Options:\n"
@@ -268,19 +269,19 @@ msgstr ""
 "\n"
 "�����:\n"
 
-#: initdb.c:2060
+#: initdb.c:2063
 msgid " [-D, --pgdata=]DATADIR     location for this database cluster\n"
 msgstr " [-D, --pgdata=]DATADIR   ��������������� ��� ����� �������� ��� ������\n"
 
-#: initdb.c:2061
+#: initdb.c:2064
 msgid "  -E, --encoding=ENCODING   set default encoding for new databases\n"
 msgstr "  -E, --encoding=ENCODING  ���������� ��������� ��-��������� ��� ����� ���\n"
 
-#: initdb.c:2062
+#: initdb.c:2065
 msgid "  --locale=LOCALE           initialize database cluster with given locale\n"
 msgstr "  --locale=LOCALE           ���������������� ������� ��� ������ � ��������� �������\n"
 
-#: initdb.c:2063
+#: initdb.c:2066
 msgid ""
 "  --lc-collate, --lc-ctype, --lc-messages=LOCALE\n"
 "  --lc-monetary, --lc-numeric, --lc-time=LOCALE\n"
@@ -294,35 +295,35 @@ msgstr ""
 "                            ��������� ������� � ��������������� ���������\n"
 "                            (�������� ��-��������� ������� �� ���������)\n"
 
-#: initdb.c:2068
+#: initdb.c:2071
 msgid "  --no-locale               equivalent to --locale=C\n"
 msgstr "  --no-locale               ������������ --locale=C\n"
 
-#: initdb.c:2069
+#: initdb.c:2072
 msgid "  -A, --auth=METHOD         default authentication method for local connections\n"
 msgstr "  -A, --auth=METHOD          ����� �������������� ��-��������� ��� ��������� ����������\n"
 
-#: initdb.c:2070
+#: initdb.c:2073
 msgid "  -U, --username=NAME       database superuser name\n"
 msgstr "  -U, --username=NAME       ��� �������������� ���� ������\n"
 
-#: initdb.c:2071
+#: initdb.c:2074
 msgid "  -W, --pwprompt            prompt for a password for the new superuser\n"
 msgstr "  -W, --pwprompt            ��������� ������ ��� ������ ��������������\n"
 
-#: initdb.c:2072
+#: initdb.c:2075
 msgid "  --pwfile=FILE             read password for the new superuser from file\n"
 msgstr "  --pwfile=FILE             ������� ������ ��� ������ �������������� �� �����\n"
 
-#: initdb.c:2073
+#: initdb.c:2076
 msgid "  -?, --help                show this help, then exit\n"
 msgstr "  -?, --help                �������� ��� ������ � �����\n"
 
-#: initdb.c:2074
+#: initdb.c:2077
 msgid "  -V, --version             output version information, then exit\n"
 msgstr "  -V, --version             �������� ������ � �����\n"
 
-#: initdb.c:2075
+#: initdb.c:2078
 msgid ""
 "\n"
 "Less commonly used options:\n"
@@ -330,23 +331,23 @@ msgstr ""
 "\n"
 "����� ������������ �����:\n"
 
-#: initdb.c:2076
+#: initdb.c:2079
 msgid "  -d, --debug               generate lots of debugging output\n"
 msgstr "  -d, --debug               �������� ����� ���������� ���������\n"
 
-#: initdb.c:2077
+#: initdb.c:2080
 msgid "  -s, --show                show internal settings\n"
 msgstr "  -s, --show                �������� ���������� ���������\n"
 
-#: initdb.c:2078
+#: initdb.c:2081
 msgid "  -L DIRECTORY              where to find the input files\n"
 msgstr "  -L DIRECTORY              ��� ����� ������� �����\n"
 
-#: initdb.c:2079
+#: initdb.c:2082
 msgid "  -n, --noclean             do not clean up after errors\n"
 msgstr "  -n, --noclean             �� ������� ����� ������\n"
 
-#: initdb.c:2080
+#: initdb.c:2083
 msgid ""
 "\n"
 "If the data directory is not specified, the environment variable PGDATA\n"
@@ -355,7 +356,7 @@ msgstr ""
 "\n"
 "���� ���������� ������ �� �������, ������������ �������� ���������� ��������� PGDATA.\n"
 
-#: initdb.c:2082
+#: initdb.c:2085
 msgid ""
 "\n"
 "Report bugs to <pgsql-bugs@postgresql.org>.\n"
@@ -363,32 +364,32 @@ msgstr ""
 "\n"
 "��������� �� �������: <pgsql-bugs@postgresql.org>.\n"
 
-#: initdb.c:2175
+#: initdb.c:2178
 msgid "Running in debug mode.\n"
 msgstr "���������� � ������ �������.\n"
 
-#: initdb.c:2179
+#: initdb.c:2182
 msgid "Running in noclean mode.  Mistakes will not be cleaned up.\n"
 msgstr "���������� � ������ 'noclean'.  ������ ������ � ������ ����� ������ ������������� �� �����.\n"
 
-#: initdb.c:2216
-#: initdb.c:2233
-#: initdb.c:2453
+#: initdb.c:2219
+#: initdb.c:2236
+#: initdb.c:2456
 #, c-format
 msgid "Try \"%s --help\" for more information.\n"
 msgstr "�������� \"%s --help\" ��� ����� ��������� ����������.\n"
 
-#: initdb.c:2231
+#: initdb.c:2234
 #, c-format
 msgid "%s: too many command-line arguments (first is \"%s\")\n"
 msgstr "%s: ������� ����� ���������� ��������� ������ (������: \"%s\")\n"
 
-#: initdb.c:2239
+#: initdb.c:2242
 #, c-format
 msgid "%s: password prompt and password file may not be specified together\n"
 msgstr "%s: ������ ������ � ���� ������� �� ����� ����������� ������\n"
 
-#: initdb.c:2245
+#: initdb.c:2248
 msgid ""
 "\n"
 "WARNING: enabling \"trust\" authentication for local connections\n"
@@ -400,17 +401,17 @@ msgstr ""
 "�� ������ ţ ��������, �������������� pg_hba.conf ��� ��������� ����� -A,\n"
 "��� ��������� ���������� initdb.\n"
 
-#: initdb.c:2269
+#: initdb.c:2272
 #, c-format
 msgid "%s: unrecognized authentication method \"%s\"\n"
 msgstr "%s: �������������� ����� �������������� \"%s\"\n"
 
-#: initdb.c:2279
+#: initdb.c:2282
 #, c-format
 msgid "%s: must specify a password for the superuser to enable %s authentication\n"
 msgstr "%s: ���������� ������� ������ �������������� ��� ��������� �������������� %s\n"
 
-#: initdb.c:2294
+#: initdb.c:2297
 #, c-format
 msgid ""
 "%s: no data directory specified\n"
@@ -423,7 +424,7 @@ msgstr ""
 "��� ���� �������.  ��� ����� ������� � ������� �������� ����� -D\n"
 "��� ��������� ���������� ��������� PGDATA.\n"
 
-#: initdb.c:2326
+#: initdb.c:2329
 #, c-format
 msgid ""
 "The program \"postgres\" is needed by %s but was not found in the\n"
@@ -434,7 +435,7 @@ msgstr ""
 "��� �� ����������, ��� � \"%s\".\n"
 "��������� ���� ���������.\n"
 
-#: initdb.c:2333
+#: initdb.c:2336
 #, c-format
 msgid ""
 "The program \"postgres\" was found by \"%s\"\n"
@@ -445,17 +446,17 @@ msgstr ""
 "� ��� �� ������� ��� %s.\n"
 "��������� ���� ���������.\n"
 
-#: initdb.c:2352
+#: initdb.c:2355
 #, c-format
 msgid "%s: input file location must be an absolute path\n"
 msgstr "%s: ��������������� �������� ����� ������ ���� ���������� ��ԣ�\n"
 
-#: initdb.c:2360
+#: initdb.c:2363
 #, c-format
 msgid "%s: could not determine valid short version string\n"
 msgstr "%s: �� � ��������� ���������� ���������� �������� ������ ������\n"
 
-#: initdb.c:2413
+#: initdb.c:2416
 #, c-format
 msgid ""
 "The files belonging to this database system will be owned by user \"%s\".\n"
@@ -466,12 +467,12 @@ msgstr ""
 "������������ ������������ \"%s\". ���� ������������\n"
 "����� ������ ���� ���������� �������� �������.\n"
 
-#: initdb.c:2423
+#: initdb.c:2426
 #, c-format
 msgid "The database cluster will be initialized with locale %s.\n"
 msgstr "������� ��� ������ ����� ��������������� � ������� %s.\n"
 
-#: initdb.c:2426
+#: initdb.c:2429
 #, c-format
 msgid ""
 "The database cluster will be initialized with locales\n"
@@ -490,37 +491,37 @@ msgstr ""
 "  NUMERIC:  %s\n"
 "  TIME:     %s\n"
 
-#: initdb.c:2451
+#: initdb.c:2454
 #, c-format
 msgid "%s: could not find suitable encoding for locale \"%s\"\n"
 msgstr "%s: �� ������� ����� ���������� ��������� ��� ������ \"%s\"\n"
 
-#: initdb.c:2452
+#: initdb.c:2455
 #, c-format
 msgid "Rerun %s with the -E option.\n"
 msgstr "������������� %s � ������ -E.\n"
 
-#: initdb.c:2459
+#: initdb.c:2462
 #, c-format
 msgid "The default database encoding has accordingly been set to %s.\n"
 msgstr "��������� ���� �� ��������� ����������� � %s.\n"
 
-#: initdb.c:2500
+#: initdb.c:2503
 #, c-format
 msgid "creating directory %s ... "
 msgstr "�������� ���������� %s ... "
 
-#: initdb.c:2514
+#: initdb.c:2517
 #, c-format
 msgid "fixing permissions on existing directory %s ... "
 msgstr "����������� ���� �� ������������ ���������� %s ... "
 
-#: initdb.c:2520
+#: initdb.c:2523
 #, c-format
 msgid "%s: could not change permissions of directory \"%s\": %s\n"
 msgstr "%s: �� ������� �������� ����� �� ���������� \"%s\": %s\n"
 
-#: initdb.c:2533
+#: initdb.c:2536
 #, c-format
 msgid ""
 "%s: directory \"%s\" exists but is not empty\n"
@@ -533,17 +534,17 @@ msgstr ""
 "���������� \"%s\" ��� ţ ���������� ��� ��������� %s\n"
 "� ���������� �������� �� \"%s\".\n"
 
-#: initdb.c:2542
+#: initdb.c:2545
 #, c-format
 msgid "%s: could not access directory \"%s\": %s\n"
 msgstr "%s: ��� ������� � ���������� \"%s\": %s\n"
 
-#: initdb.c:2551
+#: initdb.c:2554
 #, c-format
 msgid "creating directory %s/%s ... "
 msgstr "�������� ���������� %s/%s ... "
 
-#: initdb.c:2619
+#: initdb.c:2622
 #, c-format
 msgid ""
 "\n"
@@ -568,35 +569,50 @@ msgstr ""
 msgid "out of memory\n"
 msgstr "�������� ������\n"
 
-#: ../../port/exec.c:193
-#: ../../port/exec.c:307
-#: ../../port/exec.c:350
+#: ../../port/exec.c:194
+#: ../../port/exec.c:308
+#: ../../port/exec.c:351
 #, c-format
 msgid "could not identify current directory: %s"
 msgstr "�� ������� ���������������� ������� ����������: %s"
 
-#: ../../port/exec.c:323
-#: ../../port/exec.c:359
+#: ../../port/exec.c:213
+#, c-format
+msgid "invalid binary \"%s\""
+msgstr "�������� �������� \"%s\""
+
+#: ../../port/exec.c:262
+#, c-format
+msgid "could not read binary \"%s\""
+msgstr "�� ������� ������� �������� \"%s\""
+
+#: ../../port/exec.c:269
+#, c-format
+msgid "could not find a \"%s\" to execute"
+msgstr "\"%s\" �� ������ ��� ����������"
+
+#: ../../port/exec.c:324
+#: ../../port/exec.c:360
 #, c-format
 msgid "could not change directory to \"%s\""
 msgstr "�� ������� �������� ���������� �� \"%s\""
 
-#: ../../port/exec.c:338
+#: ../../port/exec.c:339
 #, c-format
 msgid "could not read symbolic link \"%s\""
 msgstr "�� ������� ������� ������������� ������ \"%s\""
 
-#: ../../port/exec.c:569
+#: ../../port/exec.c:587
 #, c-format
 msgid "child process exited with exit code %d"
 msgstr "�������� ������� ���������� � ����� �������� %d"
 
-#: ../../port/exec.c:572
+#: ../../port/exec.c:590
 #, c-format
 msgid "child process was terminated by signal %d"
 msgstr "�������� ������� �����ۣ� �������� %d"
 
-#: ../../port/exec.c:575
+#: ../../port/exec.c:593
 #, c-format
 msgid "child process exited with unrecognized status %d"
 msgstr "�������� ������� ���������� � �������������� �������� %d"
diff --git a/src/bin/initdb/po/tr.po b/src/bin/initdb/po/tr.po
index 290dc6d..a14c9aa 100644
--- a/src/bin/initdb/po/tr.po
+++ b/src/bin/initdb/po/tr.po
@@ -1,79 +1,74 @@
+# translation of initdb-tr.po to 
 # translation of initdb-tr.po to Turkish
 # translation of initdb.po to Turkish
-# Devrim GUNDUZ <devrim@PostgreSQL.org>, 2004.
+# Devrim GUNDUZ <devrim@PostgreSQL.org>, 2004, 2005.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: initdb-tr\n"
-"POT-Creation-Date: 2004-10-18 07:07+0100\n"
-"PO-Revision-Date: 2005-01-15 14:01+0200\n"
-"Last-Translator: Nicolai Tufar <ntufar@tdmsoft.com>\n"
-"Language-Team: Turkish <http://developer.postgresql.org/~petere/nlsstatus/po-current/libpq-tr.po>\n"
+"POT-Creation-Date: 2005-04-02 07:10+0100\n"
+"PO-Revision-Date: 2005-04-02 19:05+0300\n"
+"Last-Translator: \n"
+"Language-Team:  <en@li.org>\n"
+"current/libpq-tr.po>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.3.1\n"
+"X-Generator: KBabel 1.9.1\n"
 "X-Poedit-Language: Turkish\n"
 "X-Poedit-Country: TURKEY\n"
 
-#: initdb.c:251
-#: initdb.c:265
+#: initdb.c:247 initdb.c:261
 #, c-format
 msgid "%s: out of memory\n"
 msgstr "%s: yetersiz bellek\n"
 
-#: initdb.c:372
-#: initdb.c:1406
+#: initdb.c:368 initdb.c:1403
 #, c-format
 msgid "%s: could not open file \"%s\" for reading: %s\n"
 msgstr "%s: \"%s\"  dosyası, okunmak için açılamadı: %s\n"
 
-#: initdb.c:433
-#: initdb.c:1033
-#: initdb.c:1060
+#: initdb.c:429 initdb.c:1027 initdb.c:1054
 #, c-format
 msgid "%s: could not open file \"%s\" for writing: %s\n"
 msgstr "%s: \"%s\" dosyası, yazılmak için açılamadı: %s\n"
 
-#: initdb.c:441
-#: initdb.c:449
-#: initdb.c:1040
-#: initdb.c:1066
+#: initdb.c:437 initdb.c:445 initdb.c:1034 initdb.c:1060
 #, c-format
 msgid "%s: could not write file \"%s\": %s\n"
 msgstr "%s: \"%s\" dosyasına yazılamadı: %s\n"
 
-#: initdb.c:468
+#: initdb.c:464
 #, c-format
 msgid "%s: could not execute command \"%s\": %s\n"
 msgstr "%s: \"%s\" komutu yürütme başlatma hatası: %s\n"
 
-#: initdb.c:591
+#: initdb.c:584
 #, c-format
 msgid "%s: removing data directory \"%s\"\n"
 msgstr "%s: veri dizini siliniyor \"%s\"\n"
 
-#: initdb.c:594
+#: initdb.c:587
 #, c-format
 msgid "%s: failed to remove data directory\n"
 msgstr "%s: veri dizini silme başarısız\n"
 
-#: initdb.c:600
+#: initdb.c:593
 #, c-format
 msgid "%s: removing contents of data directory \"%s\"\n"
 msgstr "%s: veri dizininin içindekiler siliniyor \"%s\"\n"
 
-#: initdb.c:603
+#: initdb.c:596
 #, c-format
 msgid "%s: failed to remove contents of data directory\n"
 msgstr "%s: veri dizininin içindekilerinin silme işlemini başarısız\n"
 
-#: initdb.c:612
+#: initdb.c:605
 #, c-format
 msgid "%s: data directory \"%s\" not removed at user's request\n"
 msgstr "%s: \"%s\" veri dizini kullanıcının isteği üzerine silinmedi\n"
 
-#: initdb.c:638
+#: initdb.c:631
 #, c-format
 msgid ""
 "%s: cannot be run as root\n"
@@ -81,19 +76,20 @@ msgid ""
 "own the server process.\n"
 msgstr ""
 "%s: root olarak çalıştırılamaz.\n"
-"(Örneğin \"su\" kullanarak ) sunucu sürecinin sahibi olacak şekilde sisteme yetkisiz bir kullanıcı olarak giriş yapın.\n"
+"(Örneğin \"su\" kullanarak ) sunucu sürecinin sahibi olacak şekilde sisteme "
+"yetkisiz bir kullanıcı olarak giriş yapın.\n"
 
-#: initdb.c:687
+#: initdb.c:680
 #, c-format
 msgid "%s: \"%s\" is not a valid server encoding name\n"
 msgstr "%s: \"%s\" geçerli bir dil kodlaması adı değil\n"
 
-#: initdb.c:842
+#: initdb.c:836
 #, c-format
 msgid "%s: warning: encoding mismatch\n"
 msgstr "%s: uyarı: dil kodlaması uyuşmazlığı\n"
 
-#: initdb.c:844
+#: initdb.c:838
 #, c-format
 msgid ""
 "The encoding you selected (%s) and the encoding that the selected\n"
@@ -108,12 +104,12 @@ msgstr ""
 "%s komutunu yeniden çalıştırın ve de ya kodlama belirtmeyin\n"
 "ya da eşleştirilebilir bir kodlama seçin.\n"
 
-#: initdb.c:974
+#: initdb.c:968
 #, c-format
 msgid "%s: could not create directory \"%s\": %s\n"
 msgstr "%s: \"%s\" dizini oluşturma başarısız: %s\n"
 
-#: initdb.c:1002
+#: initdb.c:996
 #, c-format
 msgid ""
 "%s: file \"%s\" does not exist\n"
@@ -122,26 +118,27 @@ msgid ""
 msgstr ""
 "%s: \"%s\" dosyası bulunamadı\n"
 "Bu ileti, bozulmus bir kurulumunuz olduğu ya da\n"
-"initdb betiğine verdiğiniz -L parametresi ile yanlış dizin belirttiğiniz anlamına gelir..\n"
+"initdb betiğine verdiğiniz -L parametresi ile yanlış dizin belirttiğiniz "
+"anlamına gelir..\n"
 
-#: initdb.c:1084
+#: initdb.c:1078
 msgid "selecting default max_connections ... "
 msgstr "ön tanımlı max_connections seçiliyor ... "
 
-#: initdb.c:1120
+#: initdb.c:1114
 msgid "selecting default shared_buffers ... "
 msgstr "ön tanımlı shared_buffers seçiliyor ... "
 
-#: initdb.c:1153
+#: initdb.c:1147
 msgid "creating configuration files ... "
 msgstr "yapılandırma dosyaları yaratılıyor ... "
 
-#: initdb.c:1254
+#: initdb.c:1248
 #, c-format
 msgid "creating template1 database in %s/base/1 ... "
 msgstr "%s/base/1 içinde template1 veritabanı yaratılıyor."
 
-#: initdb.c:1270
+#: initdb.c:1264
 #, c-format
 msgid ""
 "%s: input file \"%s\" does not belong to PostgreSQL %s\n"
@@ -150,91 +147,91 @@ msgstr ""
 "%s: \"%s\" girdi dosyası PostgreSQL'e ait değil %s\n"
 "Kurulumunuzu kontrol edin ya da -L seçeneği ile doğru dizini belirtin.\n"
 
-#: initdb.c:1345
+#: initdb.c:1342
 msgid "initializing pg_shadow ... "
 msgstr "pg_shadow hazırlanıyor ... "
 
-#: initdb.c:1381
+#: initdb.c:1378
 msgid "Enter new superuser password: "
 msgstr "Yeni superuser şifresini giriniz: "
 
-#: initdb.c:1382
+#: initdb.c:1379
 msgid "Enter it again: "
 msgstr "Yeniden giriniz: "
 
-#: initdb.c:1385
+#: initdb.c:1382
 msgid "Passwords didn't match.\n"
 msgstr "Şifreler uyuşmadı.\n"
 
-#: initdb.c:1412
+#: initdb.c:1409
 #, c-format
 msgid "%s: could not read password from file \"%s\": %s\n"
 msgstr "%s: \"%s\" dosyasından şifre okunamadı: %s\n"
 
-#: initdb.c:1425
+#: initdb.c:1422
 msgid "setting password ... "
 msgstr "şifre ayarlanıyor ... "
 
-#: initdb.c:1446
+#: initdb.c:1443
 #, c-format
 msgid "%s: The password file was not generated. Please report this problem.\n"
 msgstr "%s: Şifre dosyası üretilemedi. Lütfen bu hatayı bildiriniz.\n"
 
-#: initdb.c:1474
+#: initdb.c:1471
 msgid "enabling unlimited row size for system tables ... "
 msgstr "Sistem tabloları için sınırsız satır sayısı etkinleştiriliyor ... "
 
-#: initdb.c:1547
+#: initdb.c:1544
 msgid "initializing pg_depend ... "
 msgstr "pg_depend hazırlanıyor ... "
 
-#: initdb.c:1575
+#: initdb.c:1572
 msgid "creating system views ... "
 msgstr "sistem viewları yaratılıyor ... "
 
-#: initdb.c:1611
+#: initdb.c:1608
 msgid "loading pg_description ... "
 msgstr "pg_description yükleniyor ... "
 
-#: initdb.c:1650
+#: initdb.c:1647
 msgid "creating conversions ... "
 msgstr "dönüşümler yükleniyor ... "
 
-#: initdb.c:1704
+#: initdb.c:1701
 msgid "setting privileges on built-in objects ... "
 msgstr "gömülü nesnelerdeki izinler ayarlanıyor ... "
 
-#: initdb.c:1762
+#: initdb.c:1759
 msgid "creating information schema ... "
 msgstr "information schema yaratılıyor ... "
 
-#: initdb.c:1819
+#: initdb.c:1816
 msgid "vacuuming database template1 ... "
 msgstr "template1 veritabanı vakumlanıyor ... "
 
-#: initdb.c:1873
+#: initdb.c:1870
 msgid "copying template1 to template0 ... "
 msgstr "template1 template0'a kopyalanıyor ... "
 
-#: initdb.c:1930
+#: initdb.c:1927
 msgid "caught signal\n"
 msgstr "sinyal yakalandı\n"
 
-#: initdb.c:1936
+#: initdb.c:1933
 #, c-format
 msgid "could not write to child process: %s\n"
 msgstr "çocuk sürece yazılamadı: %s\n"
 
-#: initdb.c:1944
+#: initdb.c:1941
 msgid "ok\n"
 msgstr "tamam\n"
 
-#: initdb.c:1992
+#: initdb.c:1989
 #, c-format
 msgid "%s: invalid locale name \"%s\"\n"
 msgstr "%s: geçersiz yerel adı \"%s\"\n"
 
-#: initdb.c:2059
+#: initdb.c:2056
 #, c-format
 msgid ""
 "%s initializes a PostgreSQL database cluster.\n"
@@ -243,16 +240,16 @@ msgstr ""
 "%sbir PostgreSQL Veritabanı kümesini ilklendirir.\n"
 "\n"
 
-#: initdb.c:2060
+#: initdb.c:2057
 msgid "Usage:\n"
 msgstr "Kullanımı:\n"
 
-#: initdb.c:2061
+#: initdb.c:2058
 #, c-format
 msgid "  %s [OPTION]... [DATADIR]\n"
 msgstr "  %s [SEÇENEK]... [DATADIR]\n"
 
-#: initdb.c:2062
+#: initdb.c:2059
 msgid ""
 "\n"
 "Options:\n"
@@ -260,19 +257,23 @@ msgstr ""
 "\n"
 "Seçenekler:\n"
 
-#: initdb.c:2063
+#: initdb.c:2060
 msgid " [-D, --pgdata=]DATADIR     location for this database cluster\n"
 msgstr "[-D, --pgdata=]DATADIR     bu veritabanı kümesi için yer\n"
 
-#: initdb.c:2064
+#: initdb.c:2061
 msgid "  -E, --encoding=ENCODING   set default encoding for new databases\n"
-msgstr "  -E, --encoding=ENCODING   yeni veritabanları için öntanımlı dil kodlamasını ayarlar\n"
+msgstr ""
+"  -E, --encoding=ENCODING   yeni veritabanları için öntanımlı dil "
+"kodlamasını ayarlar\n"
 
-#: initdb.c:2065
+#: initdb.c:2062
 msgid "  --locale=LOCALE           initialize database cluster with given locale\n"
-msgstr "  --locale=LOCALE           veritabanı kümesini verilen yerel ile ilklendirir\n"
+msgstr ""
+"  --locale=LOCALE           veritabanı kümesini verilen yerel ile "
+"ilklendirir\n"
 
-#: initdb.c:2066
+#: initdb.c:2063
 msgid ""
 "  --lc-collate, --lc-ctype, --lc-messages=LOCALE\n"
 "  --lc-monetary, --lc-numeric, --lc-time=LOCALE\n"
@@ -284,37 +285,44 @@ msgstr ""
 "  --lc-monetary, --lc-numeric, --lc-time=LOCALE\n"
 "                            veritabanı kümesini, ilgili kategorideki \n"
 "                            verilen yerelde ilklendirir.\n"
-"                            ön tanımlı bilgi çevresel bigilerden alınmıştır)\n"
+"                            ön tanımlı bilgi çevresel bigilerden "
+"alınmıştır)\n"
 
-#: initdb.c:2071
+#: initdb.c:2068
 msgid "  --no-locale               equivalent to --locale=C\n"
 msgstr "  --no-locale               --locale=C'ye eşdeğer\n"
 
-#: initdb.c:2072
-msgid "  -A, --auth=METHOD         default authentication method for local connections\n"
-msgstr "  -A, --auth=METHOD         yerel bağlantılar için ön tanımlı yetkilendirme yöntemi\n"
+#: initdb.c:2069
+msgid ""
+"  -A, --auth=METHOD         default authentication method for local "
+"connections\n"
+msgstr ""
+"  -A, --auth=METHOD         yerel bağlantılar için ön tanımlı yetkilendirme "
+"yöntemi\n"
 
-#: initdb.c:2073
+#: initdb.c:2070
 msgid "  -U, --username=NAME       database superuser name\n"
 msgstr "  -U, --username=NAME       veritabanı superuser kullanıcısı adı\n"
 
-#: initdb.c:2074
+#: initdb.c:2071
 msgid "  -W, --pwprompt            prompt for a password for the new superuser\n"
 msgstr "  -W, --pwprompt            yeni superuser için şifre sorar\n"
 
-#: initdb.c:2075
+#: initdb.c:2072
 msgid "  --pwfile=FILE             read password for the new superuser from file\n"
-msgstr "  --pwfile=DOSYA_ADI         yeni superuser için şifreyi belirtilen dosyadan okur\n"
+msgstr ""
+"  --pwfile=DOSYA_ADI         yeni superuser için şifreyi belirtilen dosyadan "
+"okur\n"
 
-#: initdb.c:2076
+#: initdb.c:2073
 msgid "  -?, --help                show this help, then exit\n"
 msgstr "  -?, --help                bu yardımı gösterir ve sonra çıkar\n"
 
-#: initdb.c:2077
+#: initdb.c:2074
 msgid "  -V, --version             output version information, then exit\n"
 msgstr "  -V, --version             sürüm bilgisini gösterir ve sonra çıkar\n"
 
-#: initdb.c:2078
+#: initdb.c:2075
 msgid ""
 "\n"
 "Less commonly used options:\n"
@@ -322,23 +330,23 @@ msgstr ""
 "\n"
 "Daha az kullanılan seçenekler:\n"
 
-#: initdb.c:2079
+#: initdb.c:2076
 msgid "  -d, --debug               generate lots of debugging output\n"
 msgstr "  -d, --debug               bol miktarda debug çıktısı üretir\n"
 
-#: initdb.c:2080
+#: initdb.c:2077
 msgid "  -s, --show                show internal settings\n"
 msgstr "  -s, --show                dahili ayarları gösterir\n"
 
-#: initdb.c:2081
+#: initdb.c:2078
 msgid "  -L DIRECTORY              where to find the input files\n"
 msgstr "  -L DIRECTORY              girdi dosyalarının nerede bulunacağını belirtir\n"
 
-#: initdb.c:2082
+#: initdb.c:2079
 msgid "  -n, --noclean             do not clean up after errors\n"
 msgstr "  -n, --noclean             hatalardan sonra temizlik yapma\n"
 
-#: initdb.c:2083
+#: initdb.c:2080
 msgid ""
 "\n"
 "If the data directory is not specified, the environment variable PGDATA\n"
@@ -347,7 +355,7 @@ msgstr ""
 "\n"
 "Eğer veri dizini belirtilmezse, PGDATA çevresel değişkeni kullanılacaktır\n"
 
-#: initdb.c:2085
+#: initdb.c:2082
 msgid ""
 "\n"
 "Report bugs to <pgsql-bugs@postgresql.org>.\n"
@@ -355,32 +363,30 @@ msgstr ""
 "\n"
 "Hataları <pgsql-bugs@postgresql.org> adresine bildirebilirsiniz.\n"
 
-#: initdb.c:2178
+#: initdb.c:2175
 msgid "Running in debug mode.\n"
 msgstr "Debug modunda çalışıyor.\n"
 
-#: initdb.c:2182
+#: initdb.c:2179
 msgid "Running in noclean mode.  Mistakes will not be cleaned up.\n"
 msgstr "noclean modunda çalışıyor.  Hatalar silinmeyecek.\n"
 
-#: initdb.c:2219
-#: initdb.c:2236
-#: initdb.c:2456
+#: initdb.c:2216 initdb.c:2233 initdb.c:2453
 #, c-format
 msgid "Try \"%s --help\" for more information.\n"
 msgstr "Ayrıntılı bilgi için  \"%s --help\" komutunu deneyebilirsiniz.\n"
 
-#: initdb.c:2234
+#: initdb.c:2231
 #, c-format
 msgid "%s: too many command-line arguments (first is \"%s\")\n"
 msgstr "%s: Çok fazla komut satırı girdisi var (ilki \"%s\")\n"
 
-#: initdb.c:2242
+#: initdb.c:2239
 #, c-format
 msgid "%s: password prompt and password file may not be specified together\n"
 msgstr "%s: Şifre promptu ve şifre dosyası birlikte belirtilemez\n"
 
-#: initdb.c:2248
+#: initdb.c:2245
 msgid ""
 "\n"
 "WARNING: enabling \"trust\" authentication for local connections\n"
@@ -392,17 +398,19 @@ msgstr ""
 "Bunu, pg_hba.conf dosyasını düzenleyerek ya da  initdb'yi yeniden \n"
 " çalıştırdığınızda -A parametresi ile değiştirebilirsiniz..\n"
 
-#: initdb.c:2272
+#: initdb.c:2269
 #, c-format
 msgid "%s: unrecognized authentication method \"%s\"\n"
 msgstr "%s: bilinmeyen yetkilendirme yöntemi\"%s\".\n"
 
-#: initdb.c:2282
+#: initdb.c:2279
 #, c-format
 msgid "%s: must specify a password for the superuser to enable %s authentication\n"
-msgstr "%s: %s yetkilendirmesini etkinleştirmek için superuser'a şifre atamanız gerekmektedir.\n"
+msgstr ""
+"%s: %s yetkilendirmesini etkinleştirmek için superuser'a şifre atamanız "
+"gerekmektedir.\n"
 
-#: initdb.c:2297
+#: initdb.c:2294
 #, c-format
 msgid ""
 "%s: no data directory specified\n"
@@ -411,21 +419,23 @@ msgid ""
 "environment variable PGDATA.\n"
 msgstr ""
 "%s: Hiçbir veri dizini belirtilmedi\n"
-"Bu veritabanı sistemi için verinin hangi dizinde duracağını belirtmeniz gerekmektedir.\n"
+"Bu veritabanı sistemi için verinin hangi dizinde duracağını belirtmeniz "
+"gerekmektedir.\n"
 "Bunu ya -D seçeneği ile ya da PGDATA çevresel değişkeni ile yapabilirsiniz.\n"
 
-#: initdb.c:2329
+#: initdb.c:2326
 #, c-format
 msgid ""
 "The program \"postgres\" is needed by %s but was not found in the\n"
 "same directory as \"%s\".\n"
 "Check your installation.\n"
 msgstr ""
-" \"postgres\"  programına %s gereksinim duymaktadır, ancak bu program  \"%s\"\n"
+" \"postgres\"  programına %s gereksinim duymaktadır, ancak bu program  \"%s"
+"\"\n"
 "ile aynı dizinde bulunamadı.\n"
 "Kurulumunuzu kontrol ediniz.\n"
 
-#: initdb.c:2336
+#: initdb.c:2333
 #, c-format
 msgid ""
 "The program \"postgres\" was found by \"%s\"\n"
@@ -436,33 +446,34 @@ msgstr ""
 "ile aynı sürüm numarasına sahip değil.\n"
 "Kurulumunuzu kontrol ediniz.\n"
 
-#: initdb.c:2355
+#: initdb.c:2352
 #, c-format
 msgid "%s: input file location must be an absolute path\n"
 msgstr "%s: girdi dosyasının yeri mutlak bir yol olmalıdır\n"
 
-#: initdb.c:2363
+#: initdb.c:2360
 #, c-format
 msgid "%s: could not determine valid short version string\n"
 msgstr "%s: geçerli bir kısa sürüm katarı belirlenemedi\n"
 
-#: initdb.c:2416
+#: initdb.c:2413
 #, c-format
 msgid ""
 "The files belonging to this database system will be owned by user \"%s\".\n"
 "This user must also own the server process.\n"
 "\n"
 msgstr ""
-"Bu veritabanı sistemine ait olan dosyaların sahibi \"%s\" kullanıcısı olacaktır.\n"
+"Bu veritabanı sistemine ait olan dosyaların sahibi \"%s\" kullanıcısı "
+"olacaktır.\n"
 "Bu kullanıcı aynı zamanda sunucu sürecinin de sahibi olmalıdır.\n"
 "\n"
 
-#: initdb.c:2426
+#: initdb.c:2423
 #, c-format
 msgid "The database cluster will be initialized with locale %s.\n"
 msgstr "Veritabanı kümesi %s yereli ile ilklendirilecek.\n"
 
-#: initdb.c:2429
+#: initdb.c:2426
 #, c-format
 msgid ""
 "The database cluster will be initialized with locales\n"
@@ -481,37 +492,37 @@ msgstr ""
 "  NUMERIC:  %s\n"
 "  TIME:     %s\n"
 
-#: initdb.c:2454
+#: initdb.c:2451
 #, c-format
 msgid "%s: could not find suitable encoding for locale \"%s\"\n"
 msgstr "%s: \"%s\" yereli için uygun dil kodlaması bulunamadı.\n"
 
-#: initdb.c:2455
+#: initdb.c:2452
 #, c-format
 msgid "Rerun %s with the -E option.\n"
 msgstr "%s komutunu -E seçeneği ile yeniden çalıştırın.\n"
 
-#: initdb.c:2462
+#: initdb.c:2459
 #, c-format
 msgid "The default database encoding has accordingly been set to %s.\n"
 msgstr "Öntanımlı veritabanı dil kodlaması %s olarak ayarlandı.\n"
 
-#: initdb.c:2503
+#: initdb.c:2500
 #, c-format
 msgid "creating directory %s ... "
 msgstr "%s dizini yaratılıyor... "
 
-#: initdb.c:2517
+#: initdb.c:2514
 #, c-format
 msgid "fixing permissions on existing directory %s ... "
 msgstr "mevcut %s dizininin izinleri düzeltiliyor..."
 
-#: initdb.c:2523
+#: initdb.c:2520
 #, c-format
 msgid "%s: could not change permissions of directory \"%s\": %s\n"
 msgstr "%s: \"%s\" dizininin erişim haklarını değiştirilemiyor: %s\n"
 
-#: initdb.c:2536
+#: initdb.c:2533
 #, c-format
 msgid ""
 "%s: directory \"%s\" exists but is not empty\n"
@@ -524,17 +535,17 @@ msgstr ""
 "ya silin ya da taşıyın; ya da %s komutunu \n"
 "\"%s\" argümanınından farklı bir argümanla çalıştırın.\n"
 
-#: initdb.c:2545
+#: initdb.c:2542
 #, c-format
 msgid "%s: could not access directory \"%s\": %s\n"
 msgstr "%s: \"%s\" dizine erişim hatası: %s\n"
 
-#: initdb.c:2554
+#: initdb.c:2551
 #, c-format
 msgid "creating directory %s/%s ... "
 msgstr "%s/%s dizini yaratılıyor... "
 
-#: initdb.c:2622
+#: initdb.c:2619
 #, c-format
 msgid ""
 "\n"
@@ -554,15 +565,51 @@ msgstr ""
 "ile başlatabilirsiniz.\n"
 "\n"
 
-#: ../../port/dirmod.c:75
-#: ../../port/dirmod.c:88
-#: ../../port/dirmod.c:101
+#: ../../port/dirmod.c:76 ../../port/dirmod.c:89 ../../port/dirmod.c:102
 msgid "out of memory\n"
 msgstr "bellek yetersiz\n"
 
-#: ../../port/exec.c:194
-#: ../../port/exec.c:308
-#: ../../port/exec.c:351
+#: ../../port/dirmod.c:143
+#, c-format
+msgid "could not rename \"%s\" to \"%s\", continuing to try\n"
+msgstr "\"%s\", \"%s\" olarak yeniden adlandırılamadı, denemeye devam ediliyor\n"
+
+#: ../../port/dirmod.c:153
+#, c-format
+msgid "completed rename of \"%s\" to \"%s\"\n"
+msgstr " \"%s\", \"%s\" olarak yeniden adlandırıldı\n"
+
+#: ../../port/dirmod.c:179
+#, c-format
+msgid "could not unlink \"%s\", continuing to try\n"
+msgstr "\"%s\" kısayolu kaldırılamadı, denemeye devam ediliyor\n"
+
+#: ../../port/dirmod.c:189
+#, c-format
+msgid "completed unlink of \"%s\"\n"
+msgstr ""
+
+#: ../../port/dirmod.c:287
+#, c-format
+msgid "Error setting junction for %s: %s\n"
+msgstr ""
+
+#: ../../port/dirmod.c:333
+#, fuzzy, c-format
+msgid "could not open directory \"%s\": %s\n"
+msgstr "%s: \"%s\" dizini oluşturma başarısız: %s\n"
+
+#: ../../port/dirmod.c:370
+#, fuzzy, c-format
+msgid "could not read directory \"%s\": %s\n"
+msgstr "%s: \"%s\" dizini oluşturma başarısız: %s\n"
+
+#: ../../port/dirmod.c:465
+#, fuzzy, c-format
+msgid "could not remove file or directory \"%s\": %s\n"
+msgstr "%s: \"%s\" dizini oluşturma başarısız: %s\n"
+
+#: ../../port/exec.c:194 ../../port/exec.c:308 ../../port/exec.c:351
 #, c-format
 msgid "could not identify current directory: %s"
 msgstr "geçerli dizin tespit edilemedi: %s"
@@ -582,8 +629,7 @@ msgstr "\"%s\" ikili (binary) dosyası okunamadı"
 msgid "could not find a \"%s\" to execute"
 msgstr "\"%s\"  çalıştırmak için bulunamadı"
 
-#: ../../port/exec.c:324
-#: ../../port/exec.c:360
+#: ../../port/exec.c:324 ../../port/exec.c:360
 #, c-format
 msgid "could not change directory to \"%s\""
 msgstr "çalışma dizini \"%s\" olarak değiştirilemedi"
diff --git a/src/bin/pg_config/po/pl.po b/src/bin/pg_config/po/pl.po
new file mode 100644
index 0000000..d36e3b1
--- /dev/null
+++ b/src/bin/pg_config/po/pl.po
@@ -0,0 +1,166 @@
+# PG_CONFIG Translated Messages into the Polish Language (ISO-8859-2)
+#
+# Copyright (c) 2005 toczek, xxxtoczekxxx@wp.pl
+# Distributed under the same licensing terms as PostgreSQL itself.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pg_config\n"
+"POT-Creation-Date: 2005-01-31 02:15+0000\n"
+"PO-Revision-Date: 2005-01-12 16:0+0100\n"
+"Last-Translator: toczek <xxxtoczekxxx@wp.pl>\n"
+"Language-Team:\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: pg_config.c:36
+#, c-format
+msgid ""
+"\n"
+"%s provides information about the installed version of PostgreSQL.\n"
+"\n"
+msgstr ""
+"\n"
+"%s dostarcza informacji na temat zainstalowanej wersji PostgreSQL.\n"
+"\n"
+
+#: pg_config.c:37
+msgid "Usage:\n"
+msgstr "Sk�adnia:\n"
+
+#: pg_config.c:38
+#, c-format
+msgid ""
+"  %s OPTION...\n"
+"\n"
+msgstr ""
+"  %s OPCJA...\n"
+"\n"
+
+#: pg_config.c:39
+msgid "Options:\n"
+msgstr "Opcje:\n"
+
+#: pg_config.c:40
+msgid "  --bindir              show location of user executables\n"
+msgstr "  --bindir              poka� lokalizacj� plik�w u�ytkownika\n"
+
+#: pg_config.c:41
+msgid ""
+"  --includedir          show location of C header files of the client\n"
+"                        interfaces\n"
+msgstr ""
+"  --includedir          poka� lokalizacj� nag��wk�w C interfejsu \n"
+"                        u�ytkownika\n"
+
+#: pg_config.c:43
+msgid ""
+"  --includedir-server   show location of C header files for the server\n"
+msgstr "  --includedir-server   poka� lokalizacj� nag��wk�w C dla serwera\n"
+
+#: pg_config.c:44
+msgid "  --libdir              show location of object code libraries\n"
+msgstr "  --libdir              poka� lokalizacj� bibliotek obiekt�w\n"
+
+#: pg_config.c:45
+msgid "  --pkglibdir           show location of dynamically loadable modules\n"
+msgstr "  --pkglibdir           poka� lokalizacj� dynamicznych modu��w\n"
+
+#: pg_config.c:46
+msgid "  --pgxs                show location of extension makefile\n"
+msgstr "  --pgxs                poka� lokalizacj� makefile\n"
+
+#: pg_config.c:47
+msgid ""
+"  --configure           show options given to \"configure\" script when\n"
+"                        PostgreSQL was built\n"
+msgstr ""
+"  --configure           poka� opcje u�yte przy skrypcie \"configure\" \n"
+"                        podczas budowania PostgreSQL\n"
+
+#: pg_config.c:49
+msgid "  --version             show the PostgreSQL version, then exit\n"
+msgstr "  --version             poka� wersj� PostgreSQL i zako�cz\n"
+
+#: pg_config.c:50
+msgid ""
+"  --help                show this help, then exit\n"
+"\n"
+msgstr ""
+"  --help                poka� pomoc i zako�cz\n"
+"\n"
+
+#: pg_config.c:51
+msgid "Report bugs to <pgsql-bugs@postgresql.org>.\n"
+msgstr "B��dy prosz� przesy�a� na adres <pgsql-bugs@postgresql.org>.\n"
+
+#: pg_config.c:57
+#, c-format
+msgid ""
+"\n"
+"Try \"%s --help\" for more information\n"
+msgstr ""
+"\n"
+"Spr�buj \"%s --help\" aby uzyka� wi�cej informacji.\n"
+
+#: pg_config.c:75
+#, c-format
+msgid "%s: argument required\n"
+msgstr "%s: parametr wymagany\n"
+
+#: pg_config.c:104
+#, c-format
+msgid "%s: invalid argument: %s\n"
+msgstr "%s: niepoprawny parametr: %s\n"
+
+#: pg_config.c:113
+#, c-format
+msgid "%s: could not find own executable\n"
+msgstr "%s: nie mo�na znale�� pliku wykonywalnego\n"
+
+#: ../../port/exec.c:194 ../../port/exec.c:308 ../../port/exec.c:351
+#, c-format
+msgid "could not identify current directory: %s"
+msgstr "nie mo�na zidentyfikowa� bie��cego katalogu: %s"
+
+#: ../../port/exec.c:213
+#, c-format
+msgid "invalid binary \"%s\""
+msgstr "b��dna binarka \"%s\""
+
+#: ../../port/exec.c:262
+#, c-format
+msgid "could not read binary \"%s\""
+msgstr "nie mo�na odczyta� binarki \"%s\""
+
+#: ../../port/exec.c:269
+#, c-format
+msgid "could not find a \"%s\" to execute"
+msgstr "nie mo�na znale�� \"%s\" aby wykona�"
+
+#: ../../port/exec.c:324 ../../port/exec.c:360
+#, c-format
+msgid "could not change directory to \"%s\""
+msgstr "nie mo�na zmieni� katalogu na \"%s\""
+
+#: ../../port/exec.c:339
+#, c-format
+msgid "could not read symbolic link \"%s\""
+msgstr "nie mo�na odczyta� odwo�ania symbolicznego \"%s\""
+
+#: ../../port/exec.c:587
+#, c-format
+msgid "child process exited with exit code %d"
+msgstr "proces potomny zako�czyl dzia�anie z kodem %d"
+
+#: ../../port/exec.c:590
+#, c-format
+msgid "child process was terminated by signal %d"
+msgstr "proces potomny zosta� przerwany przez sygna� %d"
+
+#: ../../port/exec.c:593
+#, c-format
+msgid "child process exited with unrecognized status %d"
+msgstr "proces potomny zako�czy� dzia�anie z nieznanym stanem %d"
diff --git a/src/bin/pg_config/po/ru.po b/src/bin/pg_config/po/ru.po
index 8c338c4..04ae358 100644
--- a/src/bin/pg_config/po/ru.po
+++ b/src/bin/pg_config/po/ru.po
@@ -1,20 +1,21 @@
 # ru.po
 # PG_CONFIG Translated Messages into the Russian Language (KOI8-R)
 #
-# Copyright (c) 2004 Serguei A. Mokhov, mokhov@cs.concordia.ca
+# Copyright (c) 2004-2005 Serguei A. Mokhov, mokhov@cs.concordia.ca
 # Distributed under the same licensing terms as PostgreSQL itself.
 #
 # $PostgreSQL$
 #
 # ChangeLog:
+#   - January 17, 2005: Complete translation for 8.0, Serguei A. Mokhov <mokhov@cs.concordia.ca>
 #   - December, 2004: Corrections and improvements by Oleg Bartunov <oleg@sai.msu.su>
 #   - October 13 - November 24, 2004: Initial Translation, Serguei A. Mokhov <mokhov@cs.concordia.ca>
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: PostgreSQL 8.0\n"
-"POT-Creation-Date: 2004-11-28 07:10+0000\n"
-"PO-Revision-Date: 2004-11-28 20:50-0500\n"
+"POT-Creation-Date: 2005-01-17 19:04+0000\n"
+"PO-Revision-Date: 2005-01-17 15:22-0500\n"
 "Last-Translator: Serguei A. Mokhov <mokhov@cs.concordia.ca>\n"
 "Language-Team: pgsql-ru-general <pgsql-ru-general@postgresql.org>\n"
 "MIME-Version: 1.0\n"
@@ -127,35 +128,50 @@ msgstr "%s: 
 msgid "%s: could not find own executable\n"
 msgstr "%s: �� ������� ����� ���� ����������� ����������� ����\n"
 
-#: ../../port/exec.c:193
-#: ../../port/exec.c:307
-#: ../../port/exec.c:350
+#: ../../port/exec.c:194
+#: ../../port/exec.c:308
+#: ../../port/exec.c:351
 #, c-format
 msgid "could not identify current directory: %s"
 msgstr "�� ������� ���������������� ������� ����������: %s"
 
-#: ../../port/exec.c:323
-#: ../../port/exec.c:359
+#: ../../port/exec.c:213
+#, c-format
+msgid "invalid binary \"%s\""
+msgstr "�������� �������� \"%s\""
+
+#: ../../port/exec.c:262
+#, c-format
+msgid "could not read binary \"%s\""
+msgstr "�� ������� ������� �������� \"%s\""
+
+#: ../../port/exec.c:269
+#, c-format
+msgid "could not find a \"%s\" to execute"
+msgstr "\"%s\" �� ������ ��� ����������"
+
+#: ../../port/exec.c:324
+#: ../../port/exec.c:360
 #, c-format
 msgid "could not change directory to \"%s\""
 msgstr "�� ������� �������� ���������� �� \"%s\""
 
-#: ../../port/exec.c:338
+#: ../../port/exec.c:339
 #, c-format
 msgid "could not read symbolic link \"%s\""
 msgstr "�� ���������� ������� ������������� ������ \"%s\""
 
-#: ../../port/exec.c:569
+#: ../../port/exec.c:587
 #, c-format
 msgid "child process exited with exit code %d"
 msgstr "�������� ������� ���������� � ����� �������� %d"
 
-#: ../../port/exec.c:572
+#: ../../port/exec.c:590
 #, c-format
 msgid "child process was terminated by signal %d"
 msgstr "�������� ������� �����ۣ� �������� %d"
 
-#: ../../port/exec.c:575
+#: ../../port/exec.c:593
 #, c-format
 msgid "child process exited with unrecognized status %d"
 msgstr "�������� ������� ���������� � �������������� �������� %d"
diff --git a/src/bin/pg_config/po/tr.po b/src/bin/pg_config/po/tr.po
index b0a0c20..43a2a9b 100644
--- a/src/bin/pg_config/po/tr.po
+++ b/src/bin/pg_config/po/tr.po
@@ -1,17 +1,18 @@
+# translation of pg_config-tr.po to 
 # translation of pg_config-tr.po to Turkish
-# Devrim GUNDUZ <devrim@PostgreSQL.org>, 2004.
+# Devrim GUNDUZ <devrim@PostgreSQL.org>, 2004, 2005.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: pg_config-tr\n"
 "POT-Creation-Date: 2004-10-19 01:08+0100\n"
-"PO-Revision-Date: 2005-01-15 14:02+0200\n"
-"Last-Translator: Nicolai Tufar <ntufar@tdmsoft.com>\n"
-"Language-Team: Turkish <pgsql-tr-genel@PostgreSQL.org>\n"
+"PO-Revision-Date: 2005-03-25 08:41+0200\n"
+"Last-Translator: \n"
+"Language-Team:  <en@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.3.1\n"
+"X-Generator: KBabel 1.9.1\n"
 "X-Poedit-Language: Turkish\n"
 "X-Poedit-Country: TURKEY\n"
 
@@ -52,7 +53,7 @@ msgid ""
 "  --includedir          show location of C header files of the client\n"
 "                        interfaces\n"
 msgstr ""
-"  --includedir         Istenci arabirimlerinin C başlık dosyalarının yerlerini\n"
+"  --includedir         İstemci arabirimlerinin C başlık dosyalarının yerlerini\n"
 "                        göster\n"
 
 #: pg_config.c:43
diff --git a/src/bin/pg_controldata/po/pl.po b/src/bin/pg_controldata/po/pl.po
new file mode 100644
index 0000000..bac6205
--- /dev/null
+++ b/src/bin/pg_controldata/po/pl.po
@@ -0,0 +1,244 @@
+# PG_CONTROLDATA Translated Messages into the Polish Language (ISO-8859-2)
+#
+# Copyright (c) 2005 toczek, xxxtoczekxxx@wp.pl
+# Distributed under the same licensing terms as PostgreSQL itself.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pg_controldata\n"
+"POT-Creation-Date: 2005-01-09 19:03+0000\n"
+"PO-Revision-Date: 2005-01-10 1:47+0100\n"
+"Last-Translator: toczek <xxxtoczekxxx@wp.pl>\n"
+"Language-Team:\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: pg_controldata.c:26
+#, c-format
+msgid ""
+"%s displays control information of a PostgreSQL database cluster.\n"
+"\n"
+msgstr ""
+"%s wy�wietla informacje kontrolne klastra bazy danych PostgreSQL.\n"
+"\n"
+
+#: pg_controldata.c:30
+#, c-format
+msgid ""
+"Usage:\n"
+"  %s [OPTION] [DATADIR]\n"
+"\n"
+"Options:\n"
+"  --help         show this help, then exit\n"
+"  --version      output version information, then exit\n"
+msgstr ""
+"Sk�adnia:\n"
+"  %s [OPCJA] [KATALOG]\n"
+"\n"
+"Opcje:\n"
+"  --help         poka� ekran pomocy i zako�cz\n"
+"  --version      wy�wietl informacje o wersji i zako�cz\n"
+
+#: pg_controldata.c:38
+msgid ""
+"\n"
+"If no data directory (DATADIR) is specified, the environment variable "
+"PGDATA\n"
+"is used.\n"
+"\n"
+msgstr ""
+"\n"
+"W przypadku gdy katalog danych nie jest podany (DATADIR), zmienna "
+"�rodowiskowa PGDATA\n"
+"jest u�ywana.\n"
+"\n"
+
+#: pg_controldata.c:40
+msgid "Report bugs to <pgsql-bugs@postgresql.org>.\n"
+msgstr "B��dy prosz� przesy�a� na adres <pgsql-bugs@postgresql.org>.\n"
+
+#: pg_controldata.c:50
+msgid "starting up"
+msgstr "w��czanie"
+
+#: pg_controldata.c:52
+msgid "shut down"
+msgstr "wy��cz baz� danych"
+
+#: pg_controldata.c:54
+msgid "shutting down"
+msgstr "wy��czanie bazy danych"
+
+#: pg_controldata.c:56
+msgid "in recovery"
+msgstr "baza danych w trybie odzyskiwania"
+
+#: pg_controldata.c:58
+msgid "in production"
+msgstr "baza danych w trybie produkcji"
+
+#: pg_controldata.c:60
+msgid "unrecognized status code"
+msgstr "nieznany kod statusu"
+
+#: pg_controldata.c:102
+#, c-format
+msgid "%s: no data directory specified\n"
+msgstr "%s: katalog danych nie zosta� ustawiony\n"
+
+#: pg_controldata.c:103
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "Spr�buj \"%s --help\" aby uzyka� wi�cej informacji.\n"
+
+#: pg_controldata.c:111
+#, c-format
+msgid "%s: could not open file \"%s\" for reading: %s\n"
+msgstr "%s: nie mo�na otworzy� pliku \"%s\" do odczytu: %s\n"
+
+#: pg_controldata.c:118
+#, c-format
+msgid "%s: could not read file \"%s\": %s\n"
+msgstr "%s: nie mo�na otworzy� pliku \"%s\" do zapisu: %s\n"
+
+#: pg_controldata.c:132
+msgid ""
+"WARNING: Calculated CRC checksum does not match value stored in file.\n"
+"Either the file is corrupt, or it has a different layout than this program\n"
+"is expecting.  The results below are untrustworthy.\n"
+"\n"
+msgstr ""
+"UWAGA: obliczona suma kontrolna CRC pliku nie zgadza si�.\n"
+"Albo plik jest uszkodzony albo posiada inny uk�ad ni� program spodziewa� si�.\n"
+"Rezultaty mog� by� niepewne.\n"
+"\n"
+
+#: pg_controldata.c:152
+#, c-format
+msgid "pg_control version number:            %u\n"
+msgstr "pg_control w wersji numer:            %u\n"
+
+#: pg_controldata.c:153
+#, c-format
+msgid "Catalog version number:               %u\n"
+msgstr "Katalog w wersji numer:               %u\n"
+
+#: pg_controldata.c:154
+#, c-format
+msgid "Database system identifier:           %s\n"
+msgstr "Identyfikator systemu bazy danych:           %s\n"
+
+#: pg_controldata.c:155
+#, c-format
+msgid "Database cluster state:               %s\n"
+msgstr "Stan klastra bazy danych:               %s\n"
+
+#: pg_controldata.c:156
+#, c-format
+msgid "pg_control last modified:             %s\n"
+msgstr "pg_control ostantio modyfikowano:             %s\n"
+
+#: pg_controldata.c:157
+#, c-format
+msgid "Current log file ID:                  %u\n"
+msgstr "Aktualne ID pliku log�w:                  %u\n"
+
+#: pg_controldata.c:158
+#, c-format
+msgid "Next log file segment:                %u\n"
+msgstr "Nast�pny segment pliku log�w:                %u\n"
+
+#: pg_controldata.c:159
+#, c-format
+msgid "Latest checkpoint location:           %X/%X\n"
+msgstr "Najnowsza lokalizacja punktu kontrolnego:           %X/%X\n"
+
+#: pg_controldata.c:161
+#, c-format
+msgid "Prior checkpoint location:            %X/%X\n"
+msgstr "Uprzednia lokalizacja punktu kontrolnego:            %X/%X\n"
+
+#: pg_controldata.c:163
+#, c-format
+msgid "Latest checkpoint's REDO location:    %X/%X\n"
+msgstr "Najnowsza lokalizacja punktu kontrolnego REDO:    %X/%X\n"
+
+#: pg_controldata.c:165
+#, c-format
+msgid "Latest checkpoint's UNDO location:    %X/%X\n"
+msgstr "Najnowsza lokalizacja punktu kontrolnego UNDO:    %X/%X\n"
+
+#: pg_controldata.c:167
+#, c-format
+msgid "Latest checkpoint's TimeLineID:       %u\n"
+msgstr "TimeLineID najnowszego punktu kontrolnego:       %u\n"
+
+#: pg_controldata.c:168
+#, c-format
+msgid "Latest checkpoint's NextXID:          %u\n"
+msgstr "NextXID najnowszego punktu kontrolnego:          %u\n"
+
+#: pg_controldata.c:169
+#, c-format
+msgid "Latest checkpoint's NextOID:          %u\n"
+msgstr "NextOID najnowszego punktu kontrolnego:          %u\n"
+
+#: pg_controldata.c:170
+#, c-format
+msgid "Time of latest checkpoint:            %s\n"
+msgstr "Czas najnowszego punktu kontrolnego:            %s\n"
+
+#: pg_controldata.c:171
+#, c-format
+msgid "Database block size:                  %u\n"
+msgstr "Wielko�� bloku bazy danych:                  %u\n"
+
+#: pg_controldata.c:172
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Bloki na segment s� w relacji: %u\n"
+
+#: pg_controldata.c:173
+#, c-format
+msgid "Bytes per WAL segment:                %u\n"
+msgstr "Bajt�w na segment WAL:                %u\n"
+
+#: pg_controldata.c:174
+#, c-format
+msgid "Maximum length of identifiers:        %u\n"
+msgstr "Maksymalna d�ugo�� identyfikator�w:        %u\n"
+
+#: pg_controldata.c:175
+#, c-format
+msgid "Maximum number of function arguments: %u\n"
+msgstr "Maksymalna ilo�� argument�w funkcji: %u\n"
+
+#: pg_controldata.c:176
+#, c-format
+msgid "Date/time type storage:               %s\n"
+msgstr "Typ przechowywania daty/czasu:               %s\n"
+
+#: pg_controldata.c:177
+msgid "64-bit integers"
+msgstr "64-bit'owe zmienne integer"
+
+#: pg_controldata.c:177
+msgid "floating-point numbers"
+msgstr "liczby zmiennoprzecinkowe"
+
+#: pg_controldata.c:178
+#, c-format
+msgid "Maximum length of locale name:        %u\n"
+msgstr "Maksymalna d�ugo�� nazwy lokalnej:        %u\n"
+
+#: pg_controldata.c:179
+#, c-format
+msgid "LC_COLLATE:                           %s\n"
+msgstr "LC_COLLATE:                           %s\n"
+
+#: pg_controldata.c:180
+#, c-format
+msgid "LC_CTYPE:                             %s\n"
+msgstr "LC_CTYPE:                             %s\n"
diff --git a/src/bin/pg_controldata/po/pt_BR.po b/src/bin/pg_controldata/po/pt_BR.po
index 66fd849..e2abd79 100644
--- a/src/bin/pg_controldata/po/pt_BR.po
+++ b/src/bin/pg_controldata/po/pt_BR.po
@@ -1,13 +1,13 @@
 # "pg_controldata" translation to Brazilian Portuguese Language.
 # Cesar Suga <sartre@linuxbr.com>, 2002.
 # Roberto Mello <rmello@fslc.usu.edu>, 2002.
-# Euler Taveira de Oliveira <eulerto@yahoo.com.br>, 2003, 2004.
+# Euler Taveira de Oliveira <eulerto@yahoo.com.br>, 2003, 2004, 2005.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: PostgreSQL 8.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-01-15 12:04-0200\n"
+"POT-Creation-Date: 2005-05-08 21:42-0300\n"
 "PO-Revision-Date: 2004-09-28 14:10-0300\n"
 "Last-Translator: Euler Taveira de Oliveira <eulerto@yahoo.com.br>\n"
 "Language-Team: Brazilian Portuguese <desenvolvimento-postgresql@listas."
@@ -16,7 +16,7 @@ msgstr ""
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: pg_controldata.c:26
+#: pg_controldata.c:24
 #, c-format
 msgid ""
 "%s displays control information of a PostgreSQL database cluster.\n"
@@ -26,7 +26,7 @@ msgstr ""
 "PostgreSQL.\n"
 "\n"
 
-#: pg_controldata.c:30
+#: pg_controldata.c:28
 #, c-format
 msgid ""
 "Usage:\n"
@@ -43,7 +43,7 @@ msgstr ""
 "  --help         mostra esta ajuda e sai\n"
 "  --version      mostra informa��o sobre a vers�o e sai\n"
 
-#: pg_controldata.c:38
+#: pg_controldata.c:36
 #, c-format
 msgid ""
 "\n"
@@ -58,56 +58,56 @@ msgstr ""
 "� utilizada.\n"
 "\n"
 
-#: pg_controldata.c:40
+#: pg_controldata.c:38
 #, c-format
 msgid "Report bugs to <pgsql-bugs@postgresql.org>.\n"
-msgstr "Reporte erros a <pgsql-bugs@postgresql.org>.\n"
+msgstr "Relate erros a <pgsql-bugs@postgresql.org>.\n"
 
-#: pg_controldata.c:50
+#: pg_controldata.c:48
 msgid "starting up"
 msgstr "iniciando"
 
-#: pg_controldata.c:52
+#: pg_controldata.c:50
 msgid "shut down"
 msgstr "desligado"
 
-#: pg_controldata.c:54
+#: pg_controldata.c:52
 msgid "shutting down"
 msgstr "desligando"
 
-#: pg_controldata.c:56
+#: pg_controldata.c:54
 msgid "in recovery"
 msgstr "em recupera��o"
 
-#: pg_controldata.c:58
+#: pg_controldata.c:56
 msgid "in production"
 msgstr "em produ��o"
 
-#: pg_controldata.c:60
+#: pg_controldata.c:58
 msgid "unrecognized status code"
 msgstr "c�digo de status desconhecido"
 
-#: pg_controldata.c:102
+#: pg_controldata.c:100
 #, c-format
 msgid "%s: no data directory specified\n"
 msgstr "%s: nenhum diret�rio de dados especificado\n"
 
-#: pg_controldata.c:103
+#: pg_controldata.c:101
 #, c-format
 msgid "Try \"%s --help\" for more information.\n"
 msgstr "Tente \"%s --help\" para obter mais informa��o.\n"
 
-#: pg_controldata.c:111
+#: pg_controldata.c:109
 #, c-format
 msgid "%s: could not open file \"%s\" for reading: %s\n"
 msgstr "%s: n�o p�de abrir arquivo \"%s\" para leitura: %s\n"
 
-#: pg_controldata.c:118
+#: pg_controldata.c:116
 #, c-format
 msgid "%s: could not read file \"%s\": %s\n"
 msgstr "%s: n�o p�de ler arquivo \"%s\": %s\n"
 
-#: pg_controldata.c:132
+#: pg_controldata.c:130
 #, c-format
 msgid ""
 "WARNING: Calculated CRC checksum does not match value stored in file.\n"
@@ -121,130 +121,135 @@ msgstr ""
 "est� esperando.  Os resultados abaixo n�o s�o confi�veis.\n"
 "\n"
 
-#: pg_controldata.c:152
+#: pg_controldata.c:150
 #, c-format
 msgid "pg_control version number:            %u\n"
 msgstr "n�mero da vers�o do pg_control:            %u\n"
 
-#: pg_controldata.c:153
+#: pg_controldata.c:151
 #, c-format
 msgid "Catalog version number:               %u\n"
 msgstr "N�mero da vers�o do cat�logo:         %u\n"
 
-#: pg_controldata.c:154
+#: pg_controldata.c:152
 #, c-format
 msgid "Database system identifier:           %s\n"
 msgstr "Identificador do sistema de banco de dados:           %s\n"
 
-#: pg_controldata.c:155
+#: pg_controldata.c:153
 #, c-format
 msgid "Database cluster state:               %s\n"
 msgstr "Estado do agrupamento de banco de dados:           %s\n"
 
-#: pg_controldata.c:156
+#: pg_controldata.c:154
 #, c-format
 msgid "pg_control last modified:             %s\n"
 msgstr "�ltima modifica��o do pg_control:     %s\n"
 
-#: pg_controldata.c:157
+#: pg_controldata.c:155
 #, c-format
 msgid "Current log file ID:                  %u\n"
 msgstr "ID do arquivo de log atual:           %u\n"
 
-#: pg_controldata.c:158
+#: pg_controldata.c:156
 #, c-format
 msgid "Next log file segment:                %u\n"
 msgstr "Pr�ximo segmento do arquivo de log:   %u\n"
 
-#: pg_controldata.c:159
+#: pg_controldata.c:157
 #, c-format
 msgid "Latest checkpoint location:           %X/%X\n"
 msgstr "�ltimo local do ponto de controle:           %X/%X\n"
 
-#: pg_controldata.c:161
+#: pg_controldata.c:159
 #, c-format
 msgid "Prior checkpoint location:            %X/%X\n"
 msgstr "Local do ponto de controle anterior:         %X/%X\n"
 
-#: pg_controldata.c:163
+#: pg_controldata.c:161
 #, c-format
 msgid "Latest checkpoint's REDO location:    %X/%X\n"
 msgstr "�ltimo local do ponto de controle REDO:   %X/%X\n"
 
-#: pg_controldata.c:165
+#: pg_controldata.c:163
 #, c-format
 msgid "Latest checkpoint's UNDO location:    %X/%X\n"
 msgstr "�ltimo local do ponto de controle UNDO:   %X/%X\n"
 
-#: pg_controldata.c:167
+#: pg_controldata.c:165
 #, c-format
 msgid "Latest checkpoint's TimeLineID:       %u\n"
 msgstr "�ltimo ponto de controle TimeLineID:         %u\n"
 
-#: pg_controldata.c:168
+#: pg_controldata.c:166
 #, c-format
 msgid "Latest checkpoint's NextXID:          %u\n"
 msgstr "�ltimo ponto de controle NextXID:         %u\n"
 
-#: pg_controldata.c:169
+#: pg_controldata.c:167
 #, c-format
 msgid "Latest checkpoint's NextOID:          %u\n"
 msgstr "�ltimo ponto de controle NextOID:         %u\n"
 
-#: pg_controldata.c:170
+#: pg_controldata.c:168
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId:  %u\n"
+msgstr "�ltimo ponto de controle NextMultiXactId: %u\n"
+
+#: pg_controldata.c:169
 #, c-format
 msgid "Time of latest checkpoint:            %s\n"
 msgstr "Hora do �ltimo ponto de controle:            %s\n"
 
-#: pg_controldata.c:171
+#: pg_controldata.c:170
 #, c-format
 msgid "Database block size:                  %u\n"
 msgstr "Tamanho do bloco do banco de dados:   %u\n"
 
-#: pg_controldata.c:172
+#: pg_controldata.c:171
 #, c-format
 msgid "Blocks per segment of large relation: %u\n"
 msgstr "Blocos por segmento da rela��o grande:   %u\n"
 
-#: pg_controldata.c:173
+#: pg_controldata.c:172
 #, c-format
 msgid "Bytes per WAL segment:                %u\n"
 msgstr "Bytes por segmento do WAL:   %u\n"
 
-#: pg_controldata.c:174
+#: pg_controldata.c:173
 #, c-format
 msgid "Maximum length of identifiers:        %u\n"
 msgstr "Tamanho m�ximo de identificadores:    %u\n"
 
-#: pg_controldata.c:175
+#: pg_controldata.c:174
 #, c-format
-msgid "Maximum number of function arguments: %u\n"
-msgstr "N�mero m�ximo de argumentos da fun��o:  %u\n"
+msgid "Maximum columns in an index:          %u\n"
+msgstr "N�mero m�ximo de colunas em um �ndice: %u\n"
 
-#: pg_controldata.c:176
+#: pg_controldata.c:175
 #, c-format
 msgid "Date/time type storage:               %s\n"
 msgstr "Tipo de data/hora do reposit�rio:       %s\n"
 
-#: pg_controldata.c:177
+#: pg_controldata.c:176
 msgid "64-bit integers"
 msgstr "inteiros de 64 bits"
 
-#: pg_controldata.c:177
+#: pg_controldata.c:176
 msgid "floating-point numbers"
 msgstr "n�meros de ponto flutuante"
 
-#: pg_controldata.c:178
+#: pg_controldata.c:177
 #, c-format
 msgid "Maximum length of locale name:        %u\n"
 msgstr "Tamanho m�ximo do nome da localidade: %u\n"
 
-#: pg_controldata.c:179
+#: pg_controldata.c:178
 #, c-format
 msgid "LC_COLLATE:                           %s\n"
 msgstr "LC_COLLATE:                           %s\n"
 
-#: pg_controldata.c:180
+#: pg_controldata.c:179
 #, c-format
 msgid "LC_CTYPE:                             %s\n"
 msgstr "LC_CTYPE:                             %s\n"
diff --git a/src/bin/pg_controldata/po/tr.po b/src/bin/pg_controldata/po/tr.po
index e679a30..c1b7740 100644
--- a/src/bin/pg_controldata/po/tr.po
+++ b/src/bin/pg_controldata/po/tr.po
@@ -1,17 +1,20 @@
+# translation of pg_controldata-tr.po to 
 # translation of pg_controldata-tr.po to Turkish
-# Devrim GUNDUZ <devrim@PostgreSQL.org>, 2004.
+# Devrim GUNDUZ <devrim@PostgreSQL.org>, 2004, 2005.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: pg_controldata-tr\n"
 "POT-Creation-Date: 2004-10-18 07:08+0100\n"
-"PO-Revision-Date: 2004-10-18 10:22+0300\n"
-"Last-Translator: Devrim GUNDUZ <devrim@PostgreSQL.org>\n"
-"Language-Team: Turkish <pgsql-tr-genel@PostgreSQL.org>\n"
+"PO-Revision-Date: 2005-03-25 08:38+0200\n"
+"Last-Translator: \n"
+"Language-Team:  <en@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.3.1\n"
+"X-Generator: KBabel 1.9.1\n"
+"X-Poedit-Language: Turkish\n"
+"X-Poedit-Country: TURKEY\n"
 
 #: pg_controldata.c:26
 #, c-format
@@ -37,13 +40,12 @@ msgstr ""
 "\n"
 "SEÇENEKLER:\n"
 "  --help         bu yardımı gösterir ve sonra çıkar\n"
-"  --version      sürüm bilgisini gösterir ve yazar\n"
+"  --version      sürüm bilgisini gösterir ve çıkar\n"
 
 #: pg_controldata.c:38
 msgid ""
 "\n"
-"If no data directory (DATADIR) is specified, the environment variable "
-"PGDATA\n"
+"If no data directory (DATADIR) is specified, the environment variable PGDATA\n"
 "is used.\n"
 "\n"
 msgstr ""
@@ -107,9 +109,9 @@ msgid ""
 "is expecting.  The results below are untrustworthy.\n"
 "\n"
 msgstr ""
-"UYARI: Hesaplanan CRC kontrol toplamı dosyadakindan farklı.\n"
+"UYARI: Hesaplanan CRC kontrol toplamı dosyadakinden farklı.\n"
 "Dosya zarar görmüş ya da bu programın beklediğinden farklı \n"
-"bir plana sahip olabilir. Aşağıdaki sonuçlar güvenilir değildir.\n"
+"bir yapıya sahip olabilir. Aşağıdaki sonuçlar güvenilir değildir.\n"
 "\n"
 
 #: pg_controldata.c:152
@@ -130,7 +132,7 @@ msgstr "Veritabanı sistem belirteci:           %s\n"
 #: pg_controldata.c:155
 #, c-format
 msgid "Database cluster state:               %s\n"
-msgstr "Veritabanı küme durumu:               %s\n"
+msgstr "Veritabanı kümesinin durumu:               %s\n"
 
 #: pg_controldata.c:156
 #, c-format
diff --git a/src/bin/pg_ctl/Makefile b/src/bin/pg_ctl/Makefile
index a20a8a6..975a226 100644
--- a/src/bin/pg_ctl/Makefile
+++ b/src/bin/pg_ctl/Makefile
@@ -21,7 +21,7 @@ OBJS=	pg_ctl.o $(WIN32RES)
 all: submake-libpq submake-libpgport pg_ctl
 
 pg_ctl: $(OBJS) $(libpq_builddir)/libpq.a
-	$(CC) $(CFLAGS) $(OBJS) $(libpq) $(LDFLAGS) $(LIBS) -o $@$(X)
+	$(CC) $(CFLAGS) $(OBJS) $(libpq_pgport) $(LDFLAGS) $(LIBS) -o $@$(X)
 
 install: all installdirs
 	$(INSTALL_PROGRAM) pg_ctl$(X) $(DESTDIR)$(bindir)/pg_ctl$(X)
diff --git a/src/bin/pg_ctl/po/pt_BR.po b/src/bin/pg_ctl/po/pt_BR.po
index 542d4a7..c80d30d 100644
--- a/src/bin/pg_ctl/po/pt_BR.po
+++ b/src/bin/pg_ctl/po/pt_BR.po
@@ -5,7 +5,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PostgreSQL 8.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-01-15 12:04-0200\n"
+"POT-Creation-Date: 2005-05-08 21:42-0300\n"
 "PO-Revision-Date: 2004-10-27 18:36-0300\n"
 "Last-Translator: Euler Taveira de Oliveira <eulerto@yahoo.com.br>\n"
 "Language-Team: Brazilian Portuguese <desenvolvimento-postgresql@listas."
@@ -14,17 +14,22 @@ msgstr ""
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: pg_ctl.c:201 pg_ctl.c:216 pg_ctl.c:1349
+#: pg_ctl.c:201 pg_ctl.c:216 pg_ctl.c:1405
 #, c-format
 msgid "%s: out of memory\n"
 msgstr "%s: sem mem�ria\n"
 
 #: pg_ctl.c:250
 #, c-format
-msgid "%s: could not open PID file \"%s\": %s"
-msgstr "%s: n�o p�de abrir arquivo contendo PID \"%s\": %s"
+msgid "%s: could not open PID file \"%s\": %s\n"
+msgstr "%s: n�o p�de abrir arquivo contendo PID \"%s\": %s\n"
 
-#: pg_ctl.c:469
+#: pg_ctl.c:257
+#, c-format
+msgid "%s: invalid data in PID file \"%s\"\n"
+msgstr "%s: dado inv�lido no arquivo contendo PID \"%s\"\n"
+
+#: pg_ctl.c:478
 #, c-format
 msgid ""
 "%s: another postmaster may be running; trying to start postmaster anyway\n"
@@ -32,17 +37,17 @@ msgstr ""
 "%s: outro postmaster pode estar executando; tentando iniciar o postmaster "
 "assim mesmo\n"
 
-#: pg_ctl.c:487
+#: pg_ctl.c:496
 #, c-format
 msgid "%s: could not read file \"%s\"\n"
 msgstr "%s: n�o p�de ler arquivo \"%s\"\n"
 
-#: pg_ctl.c:493
+#: pg_ctl.c:502
 #, c-format
 msgid "%s: option file \"%s\" must have exactly one line\n"
 msgstr "%s: arquivo de op��es \"%s\" deve ter exatamente uma linha\n"
 
-#: pg_ctl.c:544
+#: pg_ctl.c:553
 #, c-format
 msgid ""
 "The program \"postmaster\" is needed by %s but was not found in the\n"
@@ -53,7 +58,7 @@ msgstr ""
 "mesmo diret�rio que \"%s\".\n"
 "Verifique sua instala��o.\n"
 
-#: pg_ctl.c:550
+#: pg_ctl.c:559
 #, c-format
 msgid ""
 "The program \"postmaster\" was found by \"%s\"\n"
@@ -64,12 +69,12 @@ msgstr ""
 "mas n�o tem a mesma vers�o que %s.\n"
 "Verifique sua instala��o.\n"
 
-#: pg_ctl.c:562
+#: pg_ctl.c:571
 #, c-format
 msgid "%s: could not start postmaster: exit code was %d\n"
 msgstr "%s: n�o p�de iniciar o postmaster: c�digo de sa�da foi %d\n"
 
-#: pg_ctl.c:573
+#: pg_ctl.c:582
 #, c-format
 msgid ""
 "%s: could not start postmaster\n"
@@ -78,168 +83,173 @@ msgstr ""
 "%s: n�o pode iniciar o postmaster\n"
 "Examine o arquivo de log.\n"
 
-#: pg_ctl.c:582
+#: pg_ctl.c:591
 msgid "waiting for postmaster to start..."
 msgstr "esperando o postmaster iniciar..."
 
-#: pg_ctl.c:586
+#: pg_ctl.c:595
 #, c-format
 msgid "could not start postmaster\n"
 msgstr "n�o p�de iniciar o postmaster\n"
 
-#: pg_ctl.c:591 pg_ctl.c:657 pg_ctl.c:724
+#: pg_ctl.c:600 pg_ctl.c:666 pg_ctl.c:739
 msgid " done\n"
 msgstr "feito\n"
 
-#: pg_ctl.c:592
+#: pg_ctl.c:601
 msgid "postmaster started\n"
 msgstr "postmaster iniciado\n"
 
-#: pg_ctl.c:596
+#: pg_ctl.c:605
 msgid "postmaster starting\n"
 msgstr "postmaster iniciando\n"
 
-#: pg_ctl.c:610 pg_ctl.c:678 pg_ctl.c:738
+#: pg_ctl.c:619 pg_ctl.c:687 pg_ctl.c:761
 #, c-format
 msgid "%s: PID file \"%s\" does not exist\n"
 msgstr "%s: arquivo contendo PID \"%s\" n�o existe\n"
 
-#: pg_ctl.c:611 pg_ctl.c:679 pg_ctl.c:739
+#: pg_ctl.c:620 pg_ctl.c:689 pg_ctl.c:762
 msgid "Is postmaster running?\n"
 msgstr "O postmaster est� executando?\n"
 
-#: pg_ctl.c:617
+#: pg_ctl.c:626
 #, c-format
 msgid "%s: cannot stop postmaster; postgres is running (PID: %ld)\n"
 msgstr "%s: n�o pode parar postmaster; postgres est� executando (PID: %ld)\n"
 
-#: pg_ctl.c:625 pg_ctl.c:696
+#: pg_ctl.c:634 pg_ctl.c:711
 #, c-format
 msgid "%s: could not send stop signal (PID: %ld): %s\n"
 msgstr "%s: n�o p�de enviar sinal de parada (PID: %ld): %s\n"
 
-#: pg_ctl.c:632
+#: pg_ctl.c:641
 msgid "postmaster shutting down\n"
 msgstr "postmaster est� sendo desligado\n"
 
-#: pg_ctl.c:637 pg_ctl.c:701
+#: pg_ctl.c:646 pg_ctl.c:716
 msgid "waiting for postmaster to shut down..."
 msgstr "esperando o postmaster desligar..."
 
-#: pg_ctl.c:652 pg_ctl.c:718
+#: pg_ctl.c:661 pg_ctl.c:733
 msgid " failed\n"
 msgstr "falhou\n"
 
-#: pg_ctl.c:654 pg_ctl.c:720
+#: pg_ctl.c:663 pg_ctl.c:735
 #, c-format
 msgid "%s: postmaster does not shut down\n"
 msgstr "%s: postmaster n�o desligou\n"
 
-#: pg_ctl.c:659 pg_ctl.c:725
+#: pg_ctl.c:668 pg_ctl.c:740
 #, c-format
 msgid "postmaster stopped\n"
 msgstr "postmaster parado\n"
 
-#: pg_ctl.c:680
+#: pg_ctl.c:690 pg_ctl.c:746
 msgid "starting postmaster anyway\n"
 msgstr "iniciando postmaster mesmo assim\n"
 
-#: pg_ctl.c:687
+#: pg_ctl.c:699
 #, c-format
 msgid "%s: cannot restart postmaster; postgres is running (PID: %ld)\n"
 msgstr ""
 "%s: n�o pode reiniciar postmaster; postgres est� executando (PID: %ld)\n"
 
-#: pg_ctl.c:690 pg_ctl.c:748
+#: pg_ctl.c:702 pg_ctl.c:771
 msgid "Please terminate postgres and try again.\n"
 msgstr "Por favor finalize o postgres e tente novamente.\n"
 
-#: pg_ctl.c:745
+#: pg_ctl.c:744
+#, c-format
+msgid "%s: old postmaster process (PID: %ld) seems to be gone\n"
+msgstr "%s: processo postmaster antigo (PID: %ld) parece ter terminado\n"
+
+#: pg_ctl.c:768
 #, c-format
 msgid "%s: cannot reload postmaster; postgres is running (PID: %ld)\n"
 msgstr ""
 "%s: n�o pode reiniciar postmaster; postgres est� executando (PID: %ld)\n"
 
-#: pg_ctl.c:754
+#: pg_ctl.c:777
 #, c-format
 msgid "%s: could not send reload signal (PID: %ld): %s\n"
 msgstr "%s: n�o p�de enviar sinal de rein�cio (PID: %ld): %s\n"
 
-#: pg_ctl.c:759
+#: pg_ctl.c:782
 msgid "postmaster signaled\n"
 msgstr "postmaster sinalizado\n"
 
-#: pg_ctl.c:774
-#, c-format
-msgid "%s: neither postmaster nor postgres running\n"
-msgstr "%s: nem o postmaster e nem o postgres est� executando\n"
-
-#: pg_ctl.c:780
+#: pg_ctl.c:826
 #, c-format
 msgid "%s: a standalone backend \"postgres\" is running (PID: %ld)\n"
 msgstr "%s: um \"postgres\" aut�nomo est� executando (PID: %ld)\n"
 
-#: pg_ctl.c:787
+#: pg_ctl.c:837
 #, c-format
 msgid "%s: postmaster is running (PID: %ld)\n"
 msgstr "%s: postmaster est� executando (PID: %ld)\n"
 
-#: pg_ctl.c:803
+#: pg_ctl.c:848
+#, c-format
+msgid "%s: neither postmaster nor postgres running\n"
+msgstr "%s: nem o postmaster e nem o postgres est� executando\n"
+
+#: pg_ctl.c:859
 #, c-format
 msgid "%s: could not send signal %d (PID: %ld): %s\n"
 msgstr "%s: n�o p�de enviar sinal %d (PID: %ld): %s\n"
 
-#: pg_ctl.c:836
+#: pg_ctl.c:892
 #, c-format
 msgid "%s: could not find own program executable\n"
-msgstr "%s: n�o p�de encontrar execut�vel\n"
+msgstr "%s: n�o p�de encontrar programa execut�vel\n"
 
-#: pg_ctl.c:845
+#: pg_ctl.c:901
 #, c-format
 msgid "%s: could not find postmaster program executable\n"
-msgstr "%s: n�o p�de encontrar o programa execut�vel do postmaster\n"
+msgstr "%s: n�o p�de encontrar o programa execut�vel postmaster\n"
 
-#: pg_ctl.c:899 pg_ctl.c:931
+#: pg_ctl.c:955 pg_ctl.c:987
 #, c-format
 msgid "%s: could not open service manager\n"
 msgstr "%s: n�o p�de abrir gerenciador de servi�o\n"
 
-#: pg_ctl.c:905
+#: pg_ctl.c:961
 #, c-format
 msgid "%s: service \"%s\" already registered\n"
 msgstr "%s: servi�o \"%s\" j� est� registrado\n"
 
-#: pg_ctl.c:916
+#: pg_ctl.c:972
 #, c-format
 msgid "%s: could not register service \"%s\": error code %d\n"
 msgstr "%s: n�o p�de registrar servi�o \"%s\": c�digo de erro %d\n"
 
-#: pg_ctl.c:937
+#: pg_ctl.c:993
 #, c-format
 msgid "%s: service \"%s\" not registered\n"
 msgstr "%s: servi�o \"%s\" n�o est� registrado\n"
 
-#: pg_ctl.c:944
+#: pg_ctl.c:1000
 #, c-format
 msgid "%s: could not open service \"%s\": error code %d\n"
 msgstr "%s: n�o p�de abrir servi�o \"%s\": c�digo de erro %d\n"
 
-#: pg_ctl.c:951
+#: pg_ctl.c:1007
 #, c-format
 msgid "%s: could not unregister service \"%s\": error code %d\n"
 msgstr "%s: n�o p�de desregistrar servi�o \"%s\": c�digo de erro %d\n"
 
-#: pg_ctl.c:1083
+#: pg_ctl.c:1139
 #, c-format
 msgid "%s: could not start service \"%s\": error code %d\n"
 msgstr "%s: n�o p�de iniciar servi�o \"%s\": c�digo de erro %d\n"
 
-#: pg_ctl.c:1092
+#: pg_ctl.c:1148
 #, c-format
 msgid "Try \"%s --help\" for more information.\n"
 msgstr "Tente \"%s --help\" para obter mais informa��o.\n"
 
-#: pg_ctl.c:1100
+#: pg_ctl.c:1156
 #, c-format
 msgid ""
 "%s is a utility to start, stop, restart, reload configuration files,\n"
@@ -248,48 +258,48 @@ msgid ""
 msgstr ""
 "%s � um utilit�rio que inicia, para, reinicia, recarrega arquivos de "
 "configura��o,\n"
-"reporta o estado do servidor PostgreSQL ou envia um sinal a um processo do "
+"relata o estado do servidor PostgreSQL ou envia um sinal a um processo do "
 "PostgreSQL.\n"
 "\n"
 
-#: pg_ctl.c:1102
+#: pg_ctl.c:1158
 #, c-format
 msgid "Usage:\n"
 msgstr "Uso:\n"
 
-#: pg_ctl.c:1103
+#: pg_ctl.c:1159
 #, c-format
 msgid "  %s start   [-w] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS\"]\n"
 msgstr "  %s start   [-w] [-D DIRDADOS] [-s] [-l ARQUIVO] [-o \"OP��ES\"]\n"
 
-#: pg_ctl.c:1104
+#: pg_ctl.c:1160
 #, c-format
 msgid "  %s stop    [-W] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n"
 msgstr "  %s stop    [-W] [-D DIRDADOS] [-s] [-m MODO-DESLIGAMENTO]\n"
 
-#: pg_ctl.c:1105
+#: pg_ctl.c:1161
 #, c-format
 msgid ""
 "  %s restart [-w] [-D DATADIR] [-s] [-m SHUTDOWN-MODE] [-o \"OPTIONS\"]\n"
 msgstr ""
 "  %s restart [-w] [-D DIRDADOS] [-s] [-m MODO-DESLIGAMENTO] [-o \"OP��ES\"]\n"
 
-#: pg_ctl.c:1106
+#: pg_ctl.c:1162
 #, c-format
 msgid "  %s reload  [-D DATADIR] [-s]\n"
 msgstr "  %s reload  [-D DIRDADOS] [-s]\n"
 
-#: pg_ctl.c:1107
+#: pg_ctl.c:1163
 #, c-format
 msgid "  %s status  [-D DATADIR]\n"
 msgstr "  %s status  [-D DIRDADOS]\n"
 
-#: pg_ctl.c:1108
+#: pg_ctl.c:1164
 #, c-format
 msgid "  %s kill    SIGNALNAME PID\n"
 msgstr "  %s kill    NOME_SINAL PID\n"
 
-#: pg_ctl.c:1110
+#: pg_ctl.c:1166
 #, c-format
 msgid ""
 "  %s register   [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR]\n"
@@ -298,12 +308,12 @@ msgstr ""
 "  %s register   [-N NOME_SERVI�O] [-U USU�RIO] [-P SENHA] [-D DIRDADOS]\n"
 "                    [-w] [-o \"OP��ES\"]\n"
 
-#: pg_ctl.c:1112
+#: pg_ctl.c:1168
 #, c-format
 msgid "  %s unregister [-N SERVICENAME]\n"
 msgstr "  %s unregister [-N NOME_SERVI�O]\n"
 
-#: pg_ctl.c:1115
+#: pg_ctl.c:1171
 #, c-format
 msgid ""
 "\n"
@@ -312,40 +322,40 @@ msgstr ""
 "\n"
 "Op��es comuns:\n"
 
-#: pg_ctl.c:1116
+#: pg_ctl.c:1172
 #, c-format
 msgid "  -D, --pgdata DATADIR   location of the database storage area\n"
 msgstr ""
 "  -D, --pgdata DIRDADOS  local da �rea de armazenamento dos bancos de dados\n"
 
-#: pg_ctl.c:1117
+#: pg_ctl.c:1173
 #, c-format
 msgid "  -s, --silent           only print errors, no informational messages\n"
 msgstr ""
-"  -s, --silent           mostra somente erros, nenhuma mensagem informativa\n"
+"  -s, --silent           exibe somente erros, nenhuma mensagem informativa\n"
 
-#: pg_ctl.c:1118
+#: pg_ctl.c:1174
 #, c-format
 msgid "  -w                     wait until operation completes\n"
 msgstr "  -w                     espera at� que a opera��o seja completada\n"
 
-#: pg_ctl.c:1119
+#: pg_ctl.c:1175
 #, c-format
 msgid "  -W                     do not wait until operation completes\n"
 msgstr ""
 "  -W                     n�o espera at� que a opera��o seja completada\n"
 
-#: pg_ctl.c:1120
+#: pg_ctl.c:1176
 #, c-format
 msgid "  --help                 show this help, then exit\n"
 msgstr "  --help                 mostra esta ajuda e sai\n"
 
-#: pg_ctl.c:1121
+#: pg_ctl.c:1177
 #, c-format
 msgid "  --version              output version information, then exit\n"
 msgstr "  --version              mostra informa��o sobre a vers�o e sai\n"
 
-#: pg_ctl.c:1122
+#: pg_ctl.c:1178
 #, c-format
 msgid ""
 "(The default is to wait for shutdown, but not for start or restart.)\n"
@@ -354,13 +364,13 @@ msgstr ""
 "(O padr�o � esperar o desligamento, mas n�o para in�cio ou rein�cio).\n"
 "\n"
 
-#: pg_ctl.c:1123
+#: pg_ctl.c:1179
 #, c-format
 msgid "If the -D option is omitted, the environment variable PGDATA is used.\n"
 msgstr ""
 "Se a op��o -D for omitida, a vari�vel de ambiente PGDATA � utilizada.\n"
 
-#: pg_ctl.c:1125
+#: pg_ctl.c:1181
 #, c-format
 msgid ""
 "\n"
@@ -369,14 +379,14 @@ msgstr ""
 "\n"
 "Op��es para in�cio ou rein�cio:\n"
 
-#: pg_ctl.c:1126
+#: pg_ctl.c:1182
 #, c-format
 msgid "  -l, --log FILENAME     write (or append) server log to FILENAME\n"
 msgstr ""
 "  -l, --log ARQUIVO      escreve (ou concatena) log do servidor para "
 "ARQUIVO\n"
 
-#: pg_ctl.c:1127
+#: pg_ctl.c:1183
 #, c-format
 msgid ""
 "  -o OPTIONS             command line options to pass to the postmaster\n"
@@ -386,27 +396,27 @@ msgstr ""
 "postmaster\n"
 "                         (execut�vel do servidor PostgreSQL)\n"
 
-#: pg_ctl.c:1129
+#: pg_ctl.c:1185
 #, c-format
 msgid "  -p PATH-TO-POSTMASTER  normally not necessary\n"
 msgstr "  -p CAMINHO-PARA-POSTMASTER   normalmente n�o � necess�rio\n"
 
-#: pg_ctl.c:1131
+#: pg_ctl.c:1187
 #, c-format
 msgid ""
 "\n"
 "Options for stop or restart:\n"
 msgstr ""
 "\n"
-"Op��es para desligar ou reiniciar:\n"
+"Op��es para desligamento ou rein�cio:\n"
 
-#: pg_ctl.c:1132
+#: pg_ctl.c:1188
 #, c-format
 msgid "  -m SHUTDOWN-MODE   may be \"smart\", \"fast\", or \"immediate\"\n"
 msgstr ""
 "  -m MODO-DESLIGAMENTO   pode ser \"smart\", \"fast\" ou \"immediate\"\n"
 
-#: pg_ctl.c:1134
+#: pg_ctl.c:1190
 #, c-format
 msgid ""
 "\n"
@@ -415,17 +425,17 @@ msgstr ""
 "\n"
 "Modos de desligamento s�o:\n"
 
-#: pg_ctl.c:1135
+#: pg_ctl.c:1191
 #, c-format
 msgid "  smart       quit after all clients have disconnected\n"
 msgstr "  smart       sai depois que todos os clientes desconectarem\n"
 
-#: pg_ctl.c:1136
+#: pg_ctl.c:1192
 #, c-format
 msgid "  fast        quit directly, with proper shutdown\n"
 msgstr "  fast        sai diretamente, com desligamento apropriado\n"
 
-#: pg_ctl.c:1137
+#: pg_ctl.c:1193
 #, c-format
 msgid ""
 "  immediate   quit without complete shutdown; will lead to recovery on "
@@ -434,7 +444,7 @@ msgstr ""
 "  immediate   sai sem desligamento completo; conduzir� a uma recupera��o "
 "durante o rein�cio\n"
 
-#: pg_ctl.c:1139
+#: pg_ctl.c:1195
 #, c-format
 msgid ""
 "\n"
@@ -443,7 +453,7 @@ msgstr ""
 "\n"
 "Sinais permitidos para sinaliza��o:\n"
 
-#: pg_ctl.c:1143
+#: pg_ctl.c:1199
 #, c-format
 msgid ""
 "\n"
@@ -452,7 +462,7 @@ msgstr ""
 "\n"
 "Op��es para registro ou desregistro:\n"
 
-#: pg_ctl.c:1144
+#: pg_ctl.c:1200
 #, c-format
 msgid ""
 "  -N SERVICENAME  service name with which to register PostgreSQL server\n"
@@ -460,37 +470,37 @@ msgstr ""
 "  -N NOME_SERVI�O nome do servi�o no qual se registrou o servidor "
 "PostgreSQL\n"
 
-#: pg_ctl.c:1145
+#: pg_ctl.c:1201
 #, c-format
 msgid "  -P PASSWORD     password of account to register PostgreSQL server\n"
 msgstr "  -P SENHA        senha da conta que registrou o servidor PostgreSQL\n"
 
-#: pg_ctl.c:1146
+#: pg_ctl.c:1202
 #, c-format
 msgid "  -U USERNAME     user name of account to register PostgreSQL server\n"
 msgstr ""
 "  -U USU�RIO      nome do usu�rio que registrou o servidor PostgreSQL\n"
 
-#: pg_ctl.c:1149
+#: pg_ctl.c:1205
 #, c-format
 msgid ""
 "\n"
 "Report bugs to <pgsql-bugs@postgresql.org>.\n"
 msgstr ""
 "\n"
-"Reporte erros a <pgsql-bugs@postgresql.org>.\n"
+"Relate erros a <pgsql-bugs@postgresql.org>.\n"
 
-#: pg_ctl.c:1174
+#: pg_ctl.c:1230
 #, c-format
 msgid "%s: unrecognized shutdown mode \"%s\"\n"
 msgstr "%s: modo de desligamento \"%s\" desconhecido\n"
 
-#: pg_ctl.c:1207
+#: pg_ctl.c:1263
 #, c-format
 msgid "%s: unrecognized signal name \"%s\"\n"
 msgstr "%s: nome de sinal \"%s\" desconhecido\n"
 
-#: pg_ctl.c:1272
+#: pg_ctl.c:1328
 #, c-format
 msgid ""
 "%s: cannot be run as root\n"
@@ -501,32 +511,32 @@ msgstr ""
 "Por favor entre (utilizando \"su\") como um usu�rio (sem privil�gios) que\n"
 "ser� o dono do processo do servidor.\n"
 
-#: pg_ctl.c:1365
+#: pg_ctl.c:1421
 #, c-format
 msgid "%s: invalid option %s\n"
 msgstr "%s: op��o inv�lida %s\n"
 
-#: pg_ctl.c:1376
+#: pg_ctl.c:1432
 #, c-format
 msgid "%s: too many command-line arguments (first is \"%s\")\n"
 msgstr "%s: muitos argumentos de linha de comando (primeiro � \"%s\")\n"
 
-#: pg_ctl.c:1395
+#: pg_ctl.c:1451
 #, c-format
 msgid "%s: missing arguments for kill mode\n"
 msgstr "%s: faltando argumento para modo kill\n"
 
-#: pg_ctl.c:1413
+#: pg_ctl.c:1469
 #, c-format
 msgid "%s: unrecognized operation mode \"%s\"\n"
 msgstr "%s: modo de opera��o \"%s\" desconhecido\n"
 
-#: pg_ctl.c:1423
+#: pg_ctl.c:1479
 #, c-format
 msgid "%s: no operation specified\n"
 msgstr "%s: nenhuma opera��o especificada\n"
 
-#: pg_ctl.c:1439
+#: pg_ctl.c:1495
 #, c-format
 msgid ""
 "%s: no database directory specified and environment variable PGDATA unset\n"
diff --git a/src/bin/pg_ctl/po/ru.po b/src/bin/pg_ctl/po/ru.po
index d1b019c..f271cc0 100644
--- a/src/bin/pg_ctl/po/ru.po
+++ b/src/bin/pg_ctl/po/ru.po
@@ -1,23 +1,23 @@
 # ru.po
 # PG_CTL Translated Messages into the Russian Language (KOI8-R)
 #
-# Copyright (c) 2004 Serguei A. Mokhov, mokhov@cs.concordia.ca
+# Copyright (c) 2004-2005 Serguei A. Mokhov, mokhov@cs.concordia.ca
 # Distributed under the same licensing terms as PostgreSQL itself.
 #
 # $Header$
 #
 # ChangeLog:
+#   - January 17, 2005: Complete translation for 8.0, Serguei A. Mokhov <mokhov@cs.concordia.ca>
 #   - December, 2004: New version of translation by Oleg Bartunov <oleg@sai.msu.su>
 #   - May 29 - November 24, 2004: Initial translation for 8.0; Serguei A. Mokhov <mokhov@cs.concordia.ca>
 #
-#   - December, 2004: New version of translation by Oleg Bartunov <oleg@sai.msu.su>
 msgid ""
 msgstr ""
 "Project-Id-Version: PostgreSQL 8.0\n"
-"POT-Creation-Date: 2004-11-28 07:11+0000\n"
-"PO-Revision-Date: 2004-11-28 20:50-0500\n"
+"POT-Creation-Date: 2005-01-17 19:05+0000\n"
+"PO-Revision-Date: 2005-01-17 15:25-0500\n"
 "Last-Translator: Serguei A. Mokhov <mokhov@cs.concordia.ca>\n"
-"Language-Team: pgsql-rus <pgsql-rus@yahoogroups.com>\n"
+"Language-Team: pgsql-ru-general <pgsql-ru-general@postgresql.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=koi8-r\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -26,7 +26,7 @@ msgstr ""
 
 #: pg_ctl.c:201
 #: pg_ctl.c:216
-#: pg_ctl.c:1342
+#: pg_ctl.c:1349
 #, c-format
 msgid "%s: out of memory\n"
 msgstr "%s: �� ������� ������\n"
@@ -91,170 +91,175 @@ msgstr ""
 msgid "waiting for postmaster to start..."
 msgstr "�������� ������� postmaster'�..."
 
-#: pg_ctl.c:585
+#: pg_ctl.c:586
 msgid "could not start postmaster\n"
 msgstr "�� ���� ��������� postmaster\n"
 
-#: pg_ctl.c:588
-#: pg_ctl.c:654
-#: pg_ctl.c:721
+#: pg_ctl.c:591
+#: pg_ctl.c:657
+#: pg_ctl.c:724
 msgid " done\n"
 msgstr " ������\n"
 
-#: pg_ctl.c:589
+#: pg_ctl.c:592
 msgid "postmaster started\n"
 msgstr "postmaster �������\n"
 
-#: pg_ctl.c:593
+#: pg_ctl.c:596
 msgid "postmaster starting\n"
 msgstr "����������� postmaster\n"
 
-#: pg_ctl.c:607
-#: pg_ctl.c:675
-#: pg_ctl.c:735
+#: pg_ctl.c:610
+#: pg_ctl.c:678
+#: pg_ctl.c:738
 #, c-format
 msgid "%s: PID file \"%s\" does not exist\n"
 msgstr "%s: PID-���� \"%s\" �� ����������\n"
 
-#: pg_ctl.c:608
-#: pg_ctl.c:676
-#: pg_ctl.c:736
+#: pg_ctl.c:611
+#: pg_ctl.c:679
+#: pg_ctl.c:739
 msgid "Is postmaster running?\n"
 msgstr "������� �� postmaster?\n"
 
-#: pg_ctl.c:614
+#: pg_ctl.c:617
 #, c-format
 msgid "%s: cannot stop postmaster; postgres is running (PID: %ld)\n"
 msgstr "%s: ��  ���� ���������� postmaster; ����������� postgres (PID: %ld)\n"
 
-#: pg_ctl.c:622
-#: pg_ctl.c:693
+#: pg_ctl.c:625
+#: pg_ctl.c:696
 #, c-format
 msgid "%s: could not send stop signal (PID: %ld): %s\n"
 msgstr "%s: �� ������� ��������� ������ ��������� (PID: %ld): %s\n"
 
-#: pg_ctl.c:629
+#: pg_ctl.c:632
 msgid "postmaster shutting down\n"
 msgstr "postmaster ��������� ������\n"
 
-#: pg_ctl.c:634
-#: pg_ctl.c:698
+#: pg_ctl.c:637
+#: pg_ctl.c:701
 msgid "waiting for postmaster to shut down..."
 msgstr "�������� ���������� ������ postmaster'�..."
 
-#: pg_ctl.c:649
-#: pg_ctl.c:715
+#: pg_ctl.c:652
+#: pg_ctl.c:718
 msgid " failed\n"
 msgstr " ������\n"
 
-#: pg_ctl.c:651
-#: pg_ctl.c:717
+#: pg_ctl.c:654
+#: pg_ctl.c:720
 #, c-format
 msgid "%s: postmaster does not shut down\n"
 msgstr "%s: postmaster �� ���������������\n"
 
-#: pg_ctl.c:656
-#: pg_ctl.c:722
+#: pg_ctl.c:659
+#: pg_ctl.c:725
 msgid "postmaster stopped\n"
 msgstr "postmaster ����������\n"
 
-#: pg_ctl.c:677
+#: pg_ctl.c:680
 msgid "starting postmaster anyway\n"
 msgstr "����������� postmaster, �������� �� �� ���\n"
 
-#: pg_ctl.c:684
+#: pg_ctl.c:687
 #, c-format
 msgid "%s: cannot restart postmaster; postgres is running (PID: %ld)\n"
 msgstr "%s: ���������� ������������� postmaster; ����������� postgres (PID: %ld)\n"
 
-#: pg_ctl.c:687
-#: pg_ctl.c:745
+#: pg_ctl.c:690
+#: pg_ctl.c:748
 msgid "Please terminate postgres and try again.\n"
 msgstr "����������, ���������� postgres � ����������� �����.\n"
 
-#: pg_ctl.c:742
+#: pg_ctl.c:745
 #, c-format
 msgid "%s: cannot reload postmaster; postgres is running (PID: %ld)\n"
 msgstr "%s: ���������� ������������� postmaster; ����������� postgres (PID: %ld)\n"
 
-#: pg_ctl.c:751
+#: pg_ctl.c:754
 #, c-format
 msgid "%s: could not send reload signal (PID: %ld): %s\n"
 msgstr "%s: �� ������� ��������� ������ ������������ (PID: %ld): %s\n"
 
-#: pg_ctl.c:756
+#: pg_ctl.c:759
 msgid "postmaster signaled\n"
 msgstr "��������� ������ postmaster'�\n"
 
-#: pg_ctl.c:771
+#: pg_ctl.c:774
 #, c-format
 msgid "%s: neither postmaster nor postgres running\n"
 msgstr "%s: �� ����������� �� postmaster, �� postgres\n"
 
-#: pg_ctl.c:777
+#: pg_ctl.c:780
 #, c-format
 msgid "%s: a standalone backend \"postgres\" is running (PID: %ld)\n"
 msgstr "%s: ����������� ����������� ������� \"postgres\" (PID: %ld)\n"
 
-#: pg_ctl.c:784
+#: pg_ctl.c:787
 #, c-format
 msgid "%s: postmaster is running (PID: %ld)\n"
 msgstr "%s: ����������� postmaster (PID: %ld)\n"
 
-#: pg_ctl.c:800
+#: pg_ctl.c:803
 #, c-format
 msgid "%s: could not send signal %d (PID: %ld): %s\n"
 msgstr "%s: �� ������� ��������� ������ %d (PID: %ld): %s\n"
 
-#: pg_ctl.c:833
+#: pg_ctl.c:836
 #, c-format
 msgid "%s: could not find own program executable\n"
 msgstr "%s: �� ������� ����� ���� ����������� ����\n"
 
-#: pg_ctl.c:842
+#: pg_ctl.c:845
 #, c-format
 msgid "%s: could not find postmaster program executable\n"
 msgstr "%s: �� ������� ����� ����������� ���� postmaster\n"
 
-#: pg_ctl.c:896
-#: pg_ctl.c:928
+#: pg_ctl.c:899
+#: pg_ctl.c:931
 #, c-format
 msgid "%s: could not open service manager\n"
 msgstr "%s: ���������� ������� �������� ��������\n"
 
-#: pg_ctl.c:902
+#: pg_ctl.c:905
 #, c-format
 msgid "%s: service \"%s\" already registered\n"
 msgstr "%s: ������\"%s\" ��� ���������������\n"
 
-#: pg_ctl.c:913
+#: pg_ctl.c:916
 #, c-format
 msgid "%s: could not register service \"%s\": error code %d\n"
 msgstr "%s: �� ������� ����� ������ \"%s\": ��� ������ %d\n"
 
-#: pg_ctl.c:934
+#: pg_ctl.c:937
 #, c-format
 msgid "%s: service \"%s\" not registered\n"
 msgstr "%s: ������\"%s\" �� ���������������\n"
 
-#: pg_ctl.c:941
+#: pg_ctl.c:944
 #, c-format
 msgid "%s: could not open service \"%s\": error code %d\n"
 msgstr "%s: �� ������� ������� ������ \"%s\": ��� ������ %d\n"
 
-#: pg_ctl.c:948
+#: pg_ctl.c:951
 #, c-format
 msgid "%s: could not unregister service \"%s\": error code %d\n"
 msgstr ""
 "%s: ���������� ����� ������ \"%s\": ��� ������ %d\n"
 "\n"
 
-#: pg_ctl.c:1085
+#: pg_ctl.c:1083
+#, c-format
+msgid "%s: could not start service \"%s\": error code %d\n"
+msgstr "%s: �� ������� ��������� ������ \"%s\": ��� ������ %d\n"
+
+#: pg_ctl.c:1092
 #, c-format
 msgid "Try \"%s --help\" for more information.\n"
 msgstr "�������� \"%s --help\" ��� ����� ��������� ����������.\n"
 
-#: pg_ctl.c:1093
+#: pg_ctl.c:1100
 #, c-format
 msgid ""
 "%s is a utility to start, stop, restart, reload configuration files,\n"
@@ -266,41 +271,41 @@ msgstr ""
 "PostgreSQL, ��� �������� �������� PostgreSQL-��������.\n"
 "\n"
 
-#: pg_ctl.c:1095
+#: pg_ctl.c:1102
 msgid "Usage:\n"
 msgstr "�������������:\n"
 
-#: pg_ctl.c:1096
+#: pg_ctl.c:1103
 #, c-format
 msgid "  %s start   [-w] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS\"]\n"
 msgstr "  %s start   [-w] [-D DATADIR] [-s] [-l FILENAME] [-o \"�����\"]\n"
 
-#: pg_ctl.c:1097
+#: pg_ctl.c:1104
 #, c-format
 msgid "  %s stop    [-W] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n"
 msgstr "  %s stop    [-W] [-D DATADIR] [-s] [-m �����-���������]\n"
 
-#: pg_ctl.c:1098
+#: pg_ctl.c:1105
 #, c-format
 msgid "  %s restart [-w] [-D DATADIR] [-s] [-m SHUTDOWN-MODE] [-o \"OPTIONS\"]\n"
 msgstr "  %s restart [-w] [-D DATADIR] [-s] [-m �����-���������] [-o \"�����\"]\n"
 
-#: pg_ctl.c:1099
+#: pg_ctl.c:1106
 #, c-format
 msgid "  %s reload  [-D DATADIR] [-s]\n"
 msgstr "  %s reload  [-D DATADIR] [-s]\n"
 
-#: pg_ctl.c:1100
+#: pg_ctl.c:1107
 #, c-format
 msgid "  %s status  [-D DATADIR]\n"
 msgstr "  %s status  [-D DATADIR]\n"
 
-#: pg_ctl.c:1101
+#: pg_ctl.c:1108
 #, c-format
 msgid "  %s kill    SIGNALNAME PID\n"
 msgstr "  %s kill   SIGNALNAME PID\n"
 
-#: pg_ctl.c:1103
+#: pg_ctl.c:1110
 #, c-format
 msgid ""
 "  %s register   [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR]\n"
@@ -309,12 +314,12 @@ msgstr ""
 "  %s register   [-N SERVICENAME]] [-U USERNAME]] [-P PASSWORD] [-D DATADIR]\n"
 "                    [-w] [-o \"OPTIONS\"]\n"
 
-#: pg_ctl.c:1105
+#: pg_ctl.c:1112
 #, c-format
 msgid "  %s unregister [-N SERVICENAME]\n"
 msgstr "  %s unregister [-N ����������]\n"
 
-#: pg_ctl.c:1108
+#: pg_ctl.c:1115
 msgid ""
 "\n"
 "Common options:\n"
@@ -322,31 +327,31 @@ msgstr ""
 "\n"
 "����� ������ ���������:\n"
 
-#: pg_ctl.c:1109
+#: pg_ctl.c:1116
 msgid "  -D, --pgdata DATADIR   location of the database storage area\n"
 msgstr "  -D, --pgdata DATADIR  ��������������� ��������� ��� ������\n"
 
-#: pg_ctl.c:1110
+#: pg_ctl.c:1117
 msgid "  -s, --silent           only print errors, no informational messages\n"
 msgstr "  -s, --silent           �������� ������ ������, �������� �������������� ���������\n"
 
-#: pg_ctl.c:1111
+#: pg_ctl.c:1118
 msgid "  -w                     wait until operation completes\n"
 msgstr "  -w                     ����� �� ���������� ��������\n"
 
-#: pg_ctl.c:1112
+#: pg_ctl.c:1119
 msgid "  -W                     do not wait until operation completes\n"
 msgstr "  -W                     �� ����� ���������� ��������\n"
 
-#: pg_ctl.c:1113
+#: pg_ctl.c:1120
 msgid "  --help                 show this help, then exit\n"
 msgstr "  --help                 �������� ��� ��������� � �����\n"
 
-#: pg_ctl.c:1114
+#: pg_ctl.c:1121
 msgid "  --version              output version information, then exit\n"
 msgstr "  --version              �������� ������ � �����\n"
 
-#: pg_ctl.c:1115
+#: pg_ctl.c:1122
 msgid ""
 "(The default is to wait for shutdown, but not for start or restart.)\n"
 "\n"
@@ -354,11 +359,11 @@ msgstr ""
 "(�� ���������, ����� ���������� ���������, �� �� � ������ ������� ��� �����������\n"
 "\n"
 
-#: pg_ctl.c:1116
+#: pg_ctl.c:1123
 msgid "If the -D option is omitted, the environment variable PGDATA is used.\n"
 msgstr "���� ����� -D �� ������,�� ����� �������������� ���������� ��������� PGDATA.\n"
 
-#: pg_ctl.c:1118
+#: pg_ctl.c:1125
 msgid ""
 "\n"
 "Options for start or restart:\n"
@@ -366,11 +371,11 @@ msgstr ""
 "\n"
 "����� ������� ��� �����������:\n"
 
-#: pg_ctl.c:1119
+#: pg_ctl.c:1126
 msgid "  -l, --log FILENAME     write (or append) server log to FILENAME\n"
 msgstr "  -l, --log FILENAME     ���������� (��� ���������) ������ ������� ������� � FILENAME.\n"
 
-#: pg_ctl.c:1120
+#: pg_ctl.c:1127
 msgid ""
 "  -o OPTIONS             command line options to pass to the postmaster\n"
 "                         (PostgreSQL server executable)\n"
@@ -378,11 +383,11 @@ msgstr ""
 "  -o �����                ����� �������o� ������ ��� �������� postmaster'�\n"
 "                          (������������ ����� ������� PostgreSQL)\n"
 
-#: pg_ctl.c:1122
+#: pg_ctl.c:1129
 msgid "  -p PATH-TO-POSTMASTER  normally not necessary\n"
 msgstr "  -p PATH-TO-POSTMASTER ������ �� ���������\n"
 
-#: pg_ctl.c:1124
+#: pg_ctl.c:1131
 msgid ""
 "\n"
 "Options for stop or restart:\n"
@@ -390,11 +395,11 @@ msgstr ""
 "\n"
 "����� ��� ��������� ��� �����������:\n"
 
-#: pg_ctl.c:1125
+#: pg_ctl.c:1132
 msgid "  -m SHUTDOWN-MODE   may be \"smart\", \"fast\", or \"immediate\"\n"
 msgstr "  -m SHUTDOWN-MODE ����� ���� \"smart\", \"fast\" ��� \"immediate\"\n"
 
-#: pg_ctl.c:1127
+#: pg_ctl.c:1134
 msgid ""
 "\n"
 "Shutdown modes are:\n"
@@ -402,21 +407,21 @@ msgstr ""
 "\n"
 "������ ���������:\n"
 
-#: pg_ctl.c:1128
+#: pg_ctl.c:1135
 msgid "  smart       quit after all clients have disconnected\n"
 msgstr "  smart      ��������� ������ ����� ������������ ���� ��������\n"
 
-#: pg_ctl.c:1129
+#: pg_ctl.c:1136
 msgid "  fast        quit directly, with proper shutdown\n"
 msgstr "  fast       ��������� ������,�� � ����������� ����������\n"
 
-#: pg_ctl.c:1130
+#: pg_ctl.c:1137
 msgid "  immediate   quit without complete shutdown; will lead to recovery on restart\n"
 msgstr ""
 "  immediate   ����� ���������� ��� ����������� ���������; �����ģ� �\n"
 "              �������������� ��� �����������\n"
 
-#: pg_ctl.c:1132
+#: pg_ctl.c:1139
 msgid ""
 "\n"
 "Allowed signal names for kill:\n"
@@ -424,7 +429,7 @@ msgstr ""
 "\n"
 "�����ۣ���� �������� �������� ��� ������� kill:\n"
 
-#: pg_ctl.c:1136
+#: pg_ctl.c:1143
 msgid ""
 "\n"
 "Options for register and unregister:\n"
@@ -432,19 +437,19 @@ msgstr ""
 "\n"
 "����� ��� ����������� � ������ � �����������:\n"
 
-#: pg_ctl.c:1137
+#: pg_ctl.c:1144
 msgid "  -N SERVICENAME  service name with which to register PostgreSQL server\n"
 msgstr "  -N SERVICENAME   ��� ������� ��� ����������� ������� PostgreSQL\n"
 
-#: pg_ctl.c:1138
+#: pg_ctl.c:1145
 msgid "  -P PASSWORD     password of account to register PostgreSQL server\n"
 msgstr "  -P PASSWORD    ������ �������� ��� ����������� ������� PostgreSQL\n"
 
-#: pg_ctl.c:1139
+#: pg_ctl.c:1146
 msgid "  -U USERNAME     user name of account to register PostgreSQL server\n"
 msgstr "  -U USERNAME    ��� ������������ ��� ����������� ������� PostgreSQL\n"
 
-#: pg_ctl.c:1142
+#: pg_ctl.c:1149
 msgid ""
 "\n"
 "Report bugs to <pgsql-bugs@postgresql.org>.\n"
@@ -452,17 +457,17 @@ msgstr ""
 "\n"
 "�������� ��������� �� ������� �� �����  <pgsql-bugs@postgresql.org>.\n"
 
-#: pg_ctl.c:1167
+#: pg_ctl.c:1174
 #, c-format
 msgid "%s: unrecognized shutdown mode \"%s\"\n"
 msgstr "%s: ����������� ����� ��������� \"%s\"\n"
 
-#: pg_ctl.c:1200
+#: pg_ctl.c:1207
 #, c-format
 msgid "%s: unrecognized signal name \"%s\"\n"
 msgstr "%s: �������������� ��� ������� \"%s\"\n"
 
-#: pg_ctl.c:1265
+#: pg_ctl.c:1272
 #, c-format
 msgid ""
 "%s: cannot be run as root\n"
@@ -473,65 +478,81 @@ msgstr ""
 "����������, ������� � ������� ��� ������������������� ������������  (��������, ��������� \"su\"),\n"
 "��� ������� ����� ����������� ��������� �������.\n"
 
-#: pg_ctl.c:1358
+#: pg_ctl.c:1365
 #, c-format
 msgid "%s: invalid option %s\n"
 msgstr "%s: �������� ����� %s\n"
 
-#: pg_ctl.c:1369
+#: pg_ctl.c:1376
 #, c-format
 msgid "%s: too many command-line arguments (first is \"%s\")\n"
 msgstr "%s: ������� ����� ���������� ��������� ������ (������: \"%s\")\n"
 
-#: pg_ctl.c:1388
+#: pg_ctl.c:1395
 #, c-format
 msgid "%s: missing arguments for kill mode\n"
 msgstr "%s: ����������� ��������� ��� ������ kill\n"
 
-#: pg_ctl.c:1406
+#: pg_ctl.c:1413
 #, c-format
 msgid "%s: unrecognized operation mode \"%s\"\n"
 msgstr "%s: �������������� ����� ������ \"%s\"\n"
 
-#: pg_ctl.c:1416
+#: pg_ctl.c:1423
 #, c-format
 msgid "%s: no operation specified\n"
 msgstr "%s: ������� �� �������\n"
 
-#: pg_ctl.c:1432
+#: pg_ctl.c:1439
 #, c-format
 msgid "%s: no database directory specified and environment variable PGDATA unset\n"
 msgstr "%s: ���������� ��� ������ �� ������� � ���������� ��������� PGDATA �� �����������\n"
 
-#: ../../port/exec.c:193
-#: ../../port/exec.c:307
-#: ../../port/exec.c:350
+#: ../../port/exec.c:194
+#: ../../port/exec.c:308
+#: ../../port/exec.c:351
 #, c-format
 msgid "could not identify current directory: %s"
 msgstr "�� ������� ���������� ������� ����������: %s"
 
-#: ../../port/exec.c:323
-#: ../../port/exec.c:359
+#: ../../port/exec.c:213
+#, c-format
+msgid "invalid binary \"%s\""
+msgstr "�������� �������� \"%s\""
+
+#: ../../port/exec.c:262
+#, c-format
+msgid "could not read binary \"%s\""
+msgstr "�� ������� ������� �������� \"%s\""
+
+#: ../../port/exec.c:269
+#, c-format
+msgid "could not find a \"%s\" to execute"
+msgstr "\"%s\" �� ������ ��� ����������"
+
+#: ../../port/exec.c:324
+#: ../../port/exec.c:360
 #, c-format
 msgid "could not change directory to \"%s\""
 msgstr "�� ������� �������� ���������� �� \"%s\""
 
-#: ../../port/exec.c:338
+#: ../../port/exec.c:339
 #, c-format
 msgid "could not read symbolic link \"%s\""
 msgstr "�� ���������� ������� ������ \"%s\""
 
-#: ../../port/exec.c:569
+#: ../../port/exec.c:587
 #, c-format
 msgid "child process exited with exit code %d"
 msgstr "�������� ������� ���������� � ����� �������� %d"
 
-#: ../../port/exec.c:572
+#: ../../port/exec.c:590
 #, c-format
 msgid "child process was terminated by signal %d"
 msgstr "�������� ������� ��� �������� �������� %d"
 
-#: ../../port/exec.c:575
+#: ../../port/exec.c:593
 #, c-format
 msgid "child process exited with unrecognized status %d"
 msgstr "�������� ������� ���������� � �������������� �������� %d"
+
diff --git a/src/bin/pg_dump/Makefile b/src/bin/pg_dump/Makefile
index e774f65..d71966c 100644
--- a/src/bin/pg_dump/Makefile
+++ b/src/bin/pg_dump/Makefile
@@ -25,13 +25,13 @@ EXTRA_OBJS = $(top_builddir)/src/backend/parser/keywords.o
 all: submake-libpq submake-libpgport submake-backend pg_dump pg_restore pg_dumpall
 
 pg_dump: pg_dump.o common.o pg_dump_sort.o $(OBJS) $(libpq_builddir)/libpq.a 
-	$(CC) $(CFLAGS) pg_dump.o common.o pg_dump_sort.o $(OBJS) $(EXTRA_OBJS) $(libpq) $(LDFLAGS) $(LIBS) -o $@$(X)
+	$(CC) $(CFLAGS) pg_dump.o common.o pg_dump_sort.o $(OBJS) $(EXTRA_OBJS) $(libpq_pgport) $(LDFLAGS) $(LIBS) -o $@$(X)
 
 pg_restore: pg_restore.o $(OBJS) $(libpq_builddir)/libpq.a
-	$(CC) $(CFLAGS) pg_restore.o $(OBJS) $(EXTRA_OBJS) $(libpq) $(LDFLAGS) $(LIBS) -o $@$(X)
+	$(CC) $(CFLAGS) pg_restore.o $(OBJS) $(EXTRA_OBJS) $(libpq_pgport) $(LDFLAGS) $(LIBS) -o $@$(X)
 
 pg_dumpall: pg_dumpall.o dumputils.o $(libpq_builddir)/libpq.a
-	$(CC) $(CFLAGS) pg_dumpall.o dumputils.o $(EXTRA_OBJS) $(WIN32RES) $(libpq) $(LDFLAGS) $(LIBS) -o $@$(X)
+	$(CC) $(CFLAGS) pg_dumpall.o dumputils.o $(EXTRA_OBJS) $(WIN32RES) $(libpq_pgport) $(LDFLAGS) $(LIBS) -o $@$(X)
 
 .PHONY: submake-backend
 submake-backend:
diff --git a/src/bin/pg_dump/dumputils.c b/src/bin/pg_dump/dumputils.c
index e4221ac..4be925c 100644
--- a/src/bin/pg_dump/dumputils.c
+++ b/src/bin/pg_dump/dumputils.c
@@ -160,7 +160,7 @@ appendStringLiteralDQ(PQExpBuffer buf, const char *str, const char *dqprefix)
 	/* start with $ + dqprefix if not NULL */
 	appendPQExpBufferChar(delimBuf, '$');
 	if (dqprefix)
-		appendPQExpBuffer(delimBuf, dqprefix);
+		appendPQExpBufferStr(delimBuf, dqprefix);
 
 	/*
 	 * Make sure we choose a delimiter which (without the trailing $) is
diff --git a/src/bin/pg_dump/nls.mk b/src/bin/pg_dump/nls.mk
index c293974..04a53f0 100644
--- a/src/bin/pg_dump/nls.mk
+++ b/src/bin/pg_dump/nls.mk
@@ -1,6 +1,6 @@
 # $PostgreSQL$
 CATALOG_NAME	:= pg_dump
-AVAIL_LANGUAGES	:= cs de es fr it nb pt_BR ro ru sk sl sv tr zh_CN zh_TW
+AVAIL_LANGUAGES	:= cs de es fr it ko nb pt_BR ro ru sk sl sv tr zh_CN zh_TW
 GETTEXT_FILES	:= pg_dump.c common.c pg_backup_archiver.c pg_backup_custom.c \
                    pg_backup_db.c pg_backup_files.c pg_backup_null.c \
                    pg_backup_tar.c pg_restore.c pg_dumpall.c \
diff --git a/src/bin/pg_dump/pg_dump_sort.c b/src/bin/pg_dump/pg_dump_sort.c
index 4810be9..5b1dcf4 100644
--- a/src/bin/pg_dump/pg_dump_sort.c
+++ b/src/bin/pg_dump/pg_dump_sort.c
@@ -30,7 +30,7 @@ static const int oldObjectTypePriority[] =
 	1,							/* DO_NAMESPACE */
 	2,							/* DO_TYPE */
 	2,							/* DO_FUNC */
-	2,							/* DO_AGG */
+	3,							/* DO_AGG */
 	3,							/* DO_OPERATOR */
 	4,							/* DO_OPCLASS */
 	5,							/* DO_CONVERSION */
diff --git a/src/bin/pg_dump/pg_restore.c b/src/bin/pg_dump/pg_restore.c
index 3ffa3e9..71f937e 100644
--- a/src/bin/pg_dump/pg_restore.c
+++ b/src/bin/pg_dump/pg_restore.c
@@ -314,7 +314,7 @@ main(int argc, char **argv)
 				break;
 
 			default:
-				write_msg("unrecognized archive format '%s'; please specify 't' or 'c'\n",
+				write_msg(NULL, "unrecognized archive format '%s'; please specify 't' or 'c'\n",
 						  opts->formatName);
 				exit(1);
 		}
diff --git a/src/bin/pg_dump/po/pt_BR.po b/src/bin/pg_dump/po/pt_BR.po
index 73d52fd..0305e5d 100644
--- a/src/bin/pg_dump/po/pt_BR.po
+++ b/src/bin/pg_dump/po/pt_BR.po
@@ -1,12 +1,12 @@
 # "pg_dump" translation to Brazilian Portuguese Language.
 # Roberto Mello <rmello@fslc.usu.edu>, 2002.
-# Euler Taveira de Oliveira <eulerto@yahoo.com.br>, 2003, 2004.
+# Euler Taveira de Oliveira <eulerto@yahoo.com.br>, 2003, 2004, 2005.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: PostgreSQL 8.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-01-15 12:04-0200\n"
+"POT-Creation-Date: 2005-05-08 21:42-0300\n"
 "PO-Revision-Date: 2004-11-13 19:27-0300\n"
 "Last-Translator: Euler Taveira de Oliveira <eulerto@yahoo.com.br>\n"
 "Language-Team: Brazilian Portuguese <desenvolvimento-postgresql@listas."
@@ -15,92 +15,92 @@ msgstr ""
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: pg_dump.c:364 pg_restore.c:229
+#: pg_dump.c:363 pg_restore.c:228
 msgid "User name: "
 msgstr "Nome do usu�rio: "
 
-#: pg_dump.c:400 pg_restore.c:256 pg_dumpall.c:264
+#: pg_dump.c:399 pg_restore.c:255 pg_dumpall.c:266
 #, c-format
 msgid "%s: invalid -X option -- %s\n"
 msgstr "%s: op��o -X inv�lida -- %s\n"
 
-#: pg_dump.c:402 pg_dump.c:416 pg_dump.c:425 pg_restore.c:258 pg_restore.c:268
-#: pg_restore.c:285 pg_dumpall.c:266 pg_dumpall.c:275 pg_dumpall.c:292
+#: pg_dump.c:401 pg_dump.c:415 pg_dump.c:424 pg_restore.c:257 pg_restore.c:267
+#: pg_restore.c:284 pg_dumpall.c:268 pg_dumpall.c:277 pg_dumpall.c:294
 #, c-format
 msgid "Try \"%s --help\" for more information.\n"
 msgstr "Tente \"%s --help\" para obter mais informa��o.\n"
 
-#: pg_dump.c:423 pg_dumpall.c:290
+#: pg_dump.c:422 pg_dumpall.c:292
 #, c-format
 msgid "%s: too many command-line arguments (first is \"%s\")\n"
 msgstr "%s: muitos argumentos de linha de comando (primeiro � \"%s\")\n"
 
-#: pg_dump.c:436
+#: pg_dump.c:435
 msgid ""
 "options \"schema only\" (-s) and \"data only\" (-a) cannot be used together\n"
 msgstr ""
 "op��es \"somente esquema\" (-s) e \"somente dados\" (-a) n�o podem ser "
 "utilizadas juntas\n"
 
-#: pg_dump.c:442
+#: pg_dump.c:441
 msgid "options \"clean\" (-c) and \"data only\" (-a) cannot be used together\n"
 msgstr ""
 "op��es \"limpar\" (-c) e \"somente dados\" (-a) n�o podem ser utilizadas "
 "juntas\n"
 
-#: pg_dump.c:448
+#: pg_dump.c:447
 msgid "large-object output not supported for a single table\n"
 msgstr ""
 "c�pia de seguran�a de objetos grandes n�o � suportada para uma �nica tabela\n"
 
-#: pg_dump.c:449 pg_dump.c:456
+#: pg_dump.c:448 pg_dump.c:455
 msgid "use a full dump instead\n"
 msgstr "produza uma c�pia de seguran�a completa\n"
 
-#: pg_dump.c:455
+#: pg_dump.c:454
 msgid "large-object output not supported for a single schema\n"
 msgstr ""
 "c�pia de seguran�a de objetos grandes n�o � suportada para um �nico esquema\n"
 
-#: pg_dump.c:462
+#: pg_dump.c:461
 msgid "INSERT (-d, -D) and OID (-o) options cannot be used together\n"
 msgstr "as op��es INSERT (-d, -D) e OID (-o) n�o podem ser usadas juntas\n"
 
-#: pg_dump.c:463
+#: pg_dump.c:462
 msgid "(The INSERT command cannot set OIDs.)\n"
 msgstr "(O comando INSERT n�o pode definir OIDs.)\n"
 
-#: pg_dump.c:469
+#: pg_dump.c:468
 msgid "large-object output is not supported for plain-text dump files\n"
 msgstr ""
 "c�pia de seguran�a de objetos grandes n�o � suportada para arquivos de c�pia "
 "de seguran�a no formato texto\n"
 
-#: pg_dump.c:470
+#: pg_dump.c:469
 msgid "(Use a different output format.)\n"
 msgstr "(Use um formato de sa�da diferente).\n"
 
-#: pg_dump.c:499
+#: pg_dump.c:498
 #, c-format
 msgid "invalid output format \"%s\" specified\n"
 msgstr "formato de sa�da especificado \"%s\" � inv�lido\n"
 
-#: pg_dump.c:505
+#: pg_dump.c:504
 #, c-format
 msgid "could not open output file \"%s\" for writing\n"
 msgstr "n�o p�de abrir arquivo de sa�da \"%s\" para escrita\n"
 
-#: pg_dump.c:516 pg_backup_db.c:52
+#: pg_dump.c:515 pg_backup_db.c:52
 #, c-format
 msgid "could not parse version string \"%s\"\n"
-msgstr "n�o p�de validar a vers�o \"%s\"\n"
+msgstr "n�o p�de analisar a vers�o \"%s\"\n"
 
-#: pg_dump.c:552
+#: pg_dump.c:551
 #, c-format
 msgid "last built-in OID is %u\n"
 msgstr "�ltimo OID interno � %u\n"
 
-#: pg_dump.c:663
+#: pg_dump.c:657
 #, c-format
 msgid ""
 "%s dumps a database as a text file or to other formats.\n"
@@ -109,17 +109,17 @@ msgstr ""
 "%s copia um banco de dados em um arquivo texto ou em outros formatos.\n"
 "\n"
 
-#: pg_dump.c:664 pg_restore.c:359 pg_dumpall.c:337
+#: pg_dump.c:658 pg_restore.c:358 pg_dumpall.c:339
 #, c-format
 msgid "Usage:\n"
 msgstr "Uso:\n"
 
-#: pg_dump.c:665
+#: pg_dump.c:659
 #, c-format
 msgid "  %s [OPTION]... [DBNAME]\n"
 msgstr "  %s [OP��O]... [NOMEBD]\n"
 
-#: pg_dump.c:667 pg_restore.c:362 pg_dumpall.c:340
+#: pg_dump.c:661 pg_restore.c:361 pg_dumpall.c:342
 #, c-format
 msgid ""
 "\n"
@@ -128,12 +128,12 @@ msgstr ""
 "\n"
 "Op��es gerais:\n"
 
-#: pg_dump.c:668 pg_restore.c:364
+#: pg_dump.c:662 pg_restore.c:363
 #, c-format
 msgid "  -f, --file=FILENAME      output file name\n"
 msgstr "  -f, --file=ARQUIVO       nome do arquivo de sa�da\n"
 
-#: pg_dump.c:669
+#: pg_dump.c:663
 #, c-format
 msgid ""
 "  -F, --format=c|t|p       output file format (custom, tar, plain text)\n"
@@ -141,7 +141,7 @@ msgstr ""
 "  -F, --format=c|t|p       formato do arquivo de sa�da (personalizado, tar, "
 "texto)\n"
 
-#: pg_dump.c:670
+#: pg_dump.c:664
 #, c-format
 msgid ""
 "  -i, --ignore-version     proceed even when server version mismatches\n"
@@ -150,28 +150,28 @@ msgstr ""
 "  -i, --ignore-version     continua mesmo se a vers�o do servidor e\n"
 "                           do pg_dump n�o correspondem\n"
 
-#: pg_dump.c:672 pg_restore.c:368
+#: pg_dump.c:666 pg_restore.c:367
 #, c-format
 msgid "  -v, --verbose            verbose mode\n"
 msgstr "  -v, --verbose            modo de detalhe\n"
 
-#: pg_dump.c:673
+#: pg_dump.c:667
 #, c-format
 msgid "  -Z, --compress=0-9       compression level for compressed formats\n"
 msgstr ""
 "  -Z, --compress=0-9       n�vel de compress�o para formatos comprimidos\n"
 
-#: pg_dump.c:674 pg_restore.c:369 pg_dumpall.c:343
+#: pg_dump.c:668 pg_restore.c:368 pg_dumpall.c:345
 #, c-format
 msgid "  --help                   show this help, then exit\n"
 msgstr "  --help                   mostra esta ajuda e sai\n"
 
-#: pg_dump.c:675 pg_restore.c:370 pg_dumpall.c:344
+#: pg_dump.c:669 pg_restore.c:369 pg_dumpall.c:346
 #, c-format
 msgid "  --version                output version information, then exit\n"
 msgstr "  --version                mostra informa��o sobre a vers�o e sai\n"
 
-#: pg_dump.c:677 pg_dumpall.c:345
+#: pg_dump.c:671 pg_dumpall.c:347
 #, c-format
 msgid ""
 "\n"
@@ -180,24 +180,24 @@ msgstr ""
 "\n"
 "Op��es que controlam a sa�da do conte�do:\n"
 
-#: pg_dump.c:678 pg_dumpall.c:346
+#: pg_dump.c:672 pg_dumpall.c:348
 #, c-format
 msgid "  -a, --data-only          dump only the data, not the schema\n"
 msgstr "  -a, --data-only          copia somente os dados, n�o o esquema\n"
 
-#: pg_dump.c:679
+#: pg_dump.c:673
 #, c-format
 msgid "  -b, --blobs              include large objects in dump\n"
 msgstr ""
 "  -b, --blobs              inclui objetos grandes na c�pia de seguran�a\n"
 
-#: pg_dump.c:680 pg_restore.c:374
+#: pg_dump.c:674 pg_restore.c:373
 #, c-format
 msgid "  -c, --clean              clean (drop) schema prior to create\n"
 msgstr ""
 "  -c, --clean              exclui (remove) o esquema antes de cri�-lo\n"
 
-#: pg_dump.c:681
+#: pg_dump.c:675
 #, c-format
 msgid ""
 "  -C, --create             include commands to create database in dump\n"
@@ -205,7 +205,7 @@ msgstr ""
 "  -C, --create             inclui comandos para cria��o dos bancos de dados "
 "na c�pia de seguran�a\n"
 
-#: pg_dump.c:682 pg_dumpall.c:348
+#: pg_dump.c:676 pg_dumpall.c:350
 #, c-format
 msgid ""
 "  -d, --inserts            dump data as INSERT, rather than COPY, commands\n"
@@ -213,7 +213,7 @@ msgstr ""
 "  -d, --inserts            copia dados utilizando comandos INSERT, ao inv�s "
 "de comandos COPY\n"
 
-#: pg_dump.c:683 pg_dumpall.c:349
+#: pg_dump.c:677 pg_dumpall.c:351
 #, c-format
 msgid ""
 "  -D, --column-inserts     dump data as INSERT commands with column names\n"
@@ -221,17 +221,17 @@ msgstr ""
 "  -D, --column-inserts     copia dados utilizando comandos INSERT com nomes "
 "das colunas\n"
 
-#: pg_dump.c:684
+#: pg_dump.c:678
 #, c-format
 msgid "  -n, --schema=SCHEMA      dump the named schema only\n"
 msgstr "  -n, --schema=ESQUEMA     copia somente o esquema especificado\n"
 
-#: pg_dump.c:685 pg_dumpall.c:351
+#: pg_dump.c:679 pg_dumpall.c:353
 #, c-format
 msgid "  -o, --oids               include OIDs in dump\n"
 msgstr "  -o, --oids               inclui OIDs na c�pia de seguran�a\n"
 
-#: pg_dump.c:686
+#: pg_dump.c:680
 #, c-format
 msgid ""
 "  -O, --no-owner           skip restoration of object ownership\n"
@@ -240,12 +240,12 @@ msgstr ""
 "  -O, --no-owner           ignora restaura��o do dono dos objetos\n"
 "                           no formato texto\n"
 
-#: pg_dump.c:688 pg_dumpall.c:353
+#: pg_dump.c:682 pg_dumpall.c:355
 #, c-format
 msgid "  -s, --schema-only        dump only the schema, no data\n"
 msgstr "  -s, --schema-only        copia somente o esquema, e n�o os dados\n"
 
-#: pg_dump.c:689
+#: pg_dump.c:683
 #, c-format
 msgid ""
 "  -S, --superuser=NAME     specify the superuser user name to use in\n"
@@ -254,17 +254,17 @@ msgstr ""
 "  -S, --superuser=NOME     especifica o super-usu�rio a ser usado no\n"
 "                           formato texto\n"
 
-#: pg_dump.c:691
+#: pg_dump.c:685
 #, c-format
 msgid "  -t, --table=TABLE        dump the named table only\n"
 msgstr "  -t, --table=TABELA       copia somente a tabela especificada\n"
 
-#: pg_dump.c:692 pg_dumpall.c:355
+#: pg_dump.c:686 pg_dumpall.c:357
 #, c-format
 msgid "  -x, --no-privileges      do not dump privileges (grant/revoke)\n"
 msgstr "  -x, --no-privileges      n�o copia os privil�gios (grant/revoke)\n"
 
-#: pg_dump.c:693 pg_dumpall.c:356
+#: pg_dump.c:687 pg_dumpall.c:358
 #, c-format
 msgid ""
 "  -X disable-dollar-quoting, --disable-dollar-quoting\n"
@@ -274,7 +274,7 @@ msgstr ""
 "                           desabilita uso de delimitadores d�lar, usa "
 "delimitadores do padr�o SQL\n"
 
-#: pg_dump.c:695 pg_restore.c:388 pg_dumpall.c:358
+#: pg_dump.c:689 pg_restore.c:387 pg_dumpall.c:360
 #, c-format
 msgid ""
 "  -X disable-triggers, --disable-triggers\n"
@@ -284,7 +284,7 @@ msgstr ""
 "                           desabilita gatilhos durante a restaura��o do tipo "
 "somente dados\n"
 
-#: pg_dump.c:697 pg_restore.c:390 pg_dumpall.c:360
+#: pg_dump.c:691 pg_restore.c:389 pg_dumpall.c:362
 #, c-format
 msgid ""
 "  -X use-set-session-authorization, --use-set-session-authorization\n"
@@ -295,7 +295,7 @@ msgstr ""
 "                           usa comandos SESSION AUTHORIZATION ao inv�s de\n"
 "                           comandos OWNER TO\n"
 
-#: pg_dump.c:701 pg_restore.c:394 pg_dumpall.c:364
+#: pg_dump.c:695 pg_restore.c:393 pg_dumpall.c:366
 #, c-format
 msgid ""
 "\n"
@@ -304,27 +304,27 @@ msgstr ""
 "\n"
 "Op��es de conex�o: \n"
 
-#: pg_dump.c:702 pg_restore.c:395 pg_dumpall.c:365
+#: pg_dump.c:696 pg_restore.c:394 pg_dumpall.c:367
 #, c-format
 msgid "  -h, --host=HOSTNAME      database server host or socket directory\n"
 msgstr ""
 "  -h, --host=M�QUINA       m�quina do servidor de banco de dados ou "
 "diret�rio do soquete\n"
 
-#: pg_dump.c:703 pg_restore.c:396 pg_dumpall.c:366
+#: pg_dump.c:697 pg_restore.c:395 pg_dumpall.c:368
 #, c-format
 msgid "  -p, --port=PORT          database server port number\n"
 msgstr ""
 "  -p, --port=PORTA         n�mero da porta do servidor de banco de dados\n"
 
-#: pg_dump.c:704 pg_restore.c:397 pg_dumpall.c:367
+#: pg_dump.c:698 pg_restore.c:396 pg_dumpall.c:369
 #, c-format
 msgid "  -U, --username=NAME      connect as specified database user\n"
 msgstr ""
 "  -U, --username=NOME      conecta como usu�rio do banco de dados "
 "especificado\n"
 
-#: pg_dump.c:705 pg_restore.c:398 pg_dumpall.c:368
+#: pg_dump.c:699 pg_restore.c:397 pg_dumpall.c:370
 #, c-format
 msgid ""
 "  -W, --password           force password prompt (should happen "
@@ -332,7 +332,7 @@ msgid ""
 msgstr ""
 "  -W, --password           pergunta senha (pode ocorrer automaticamente)\n"
 
-#: pg_dump.c:707
+#: pg_dump.c:701
 #, c-format
 msgid ""
 "\n"
@@ -345,21 +345,21 @@ msgstr ""
 "PGDATABASE � utilizada.\n"
 "\n"
 
-#: pg_dump.c:709 pg_restore.c:402 pg_dumpall.c:371
+#: pg_dump.c:703 pg_restore.c:401 pg_dumpall.c:373
 #, c-format
 msgid "Report bugs to <pgsql-bugs@postgresql.org>.\n"
-msgstr "Reporte erros a <pgsql-bugs@postgresql.org>.\n"
+msgstr "Relate erros a <pgsql-bugs@postgresql.org>.\n"
 
-#: pg_dump.c:717 pg_backup_archiver.c:1219
+#: pg_dump.c:711 pg_backup_archiver.c:1216
 msgid "*** aborted because of error\n"
 msgstr "*** interrompido por causa de erro\n"
 
-#: pg_dump.c:799
+#: pg_dump.c:793
 #, c-format
 msgid "dumping contents of table %s\n"
 msgstr "copiando conte�do da tabela %s\n"
 
-#: pg_dump.c:911
+#: pg_dump.c:905
 #, c-format
 msgid ""
 "SQL command to dump the contents of table \"%s\" failed: PQendcopy() "
@@ -368,121 +368,130 @@ msgstr ""
 "Comando SQL para copiar o conte�do da tabela \"%s\" falhou: PQendcopy() "
 "falhou.\n"
 
-#: pg_dump.c:912 pg_dump.c:8116
+#: pg_dump.c:906 pg_dump.c:8240
 #, c-format
 msgid "Error message from server: %s"
 msgstr "Mensagem de erro do servidor: %s"
 
-#: pg_dump.c:913 pg_dump.c:8117
+#: pg_dump.c:907 pg_dump.c:8241
 #, c-format
 msgid "The command was: %s\n"
 msgstr "O comando foi: %s\n"
 
-#: pg_dump.c:1184
+#: pg_dump.c:1178
 msgid "saving database definition\n"
 msgstr "salvando defini��o do banco de dados\n"
 
-#: pg_dump.c:1230
+#: pg_dump.c:1224
 #, c-format
 msgid "missing pg_database entry for database \"%s\"\n"
 msgstr "faltando registro em pg_database para banco de dados \"%s\"\n"
 
-#: pg_dump.c:1237
+#: pg_dump.c:1231
 #, c-format
 msgid ""
 "query returned more than one (%d) pg_database entry for database \"%s\"\n"
 msgstr ""
 "consulta retornou mais de um (%d) registro em pg_database para banco \"%s\"\n"
 
-#: pg_dump.c:1345
+#: pg_dump.c:1310
 msgid "saving encoding\n"
 msgstr "salvando codifica��o\n"
 
-#: pg_dump.c:1395
+#: pg_dump.c:1360
 msgid "saving large objects\n"
 msgstr "salvando objetos grandes\n"
 
-#: pg_dump.c:1428
+#: pg_dump.c:1393
 #, c-format
 msgid "dumpBlobs(): could not open large object: %s"
 msgstr "dumpBlobs(): n�o p�de abrir objeto grande: %s"
 
-#: pg_dump.c:1441
+#: pg_dump.c:1406
 #, c-format
 msgid "dumpBlobs(): error reading large object: %s"
 msgstr "dumpBlobs(): erro ao ler objeto grande: %s"
 
-#: pg_dump.c:1558
+#: pg_dump.c:1523
 #, c-format
 msgid "WARNING: owner of schema \"%s\" appears to be invalid\n"
 msgstr "AVISO: dono do esquema \"%s\" parece ser inv�lido\n"
 
-#: pg_dump.c:1575
+#: pg_dump.c:1540
 #, c-format
 msgid "specified schema \"%s\" does not exist\n"
 msgstr "esquema especificado \"%s\" n�o existe\n"
 
-#: pg_dump.c:1612
+#: pg_dump.c:1577
 #, c-format
 msgid "schema with OID %u does not exist\n"
 msgstr "esquema com OID %u n�o existe\n"
 
-#: pg_dump.c:1797
+#: pg_dump.c:1762
 #, c-format
 msgid "WARNING: owner of data type \"%s\" appears to be invalid\n"
 msgstr "AVISO: dono do tipo de dado \"%s\" parece ser inv�lido\n"
 
-#: pg_dump.c:1895
+#: pg_dump.c:1860
 #, c-format
 msgid "WARNING: owner of operator \"%s\" appears to be invalid\n"
 msgstr "AVISO: dono do operador \"%s\" parece ser inv�lido\n"
 
-#: pg_dump.c:2061
+#: pg_dump.c:2026
 #, c-format
 msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n"
 msgstr "AVISO: dono da classe de operadores \"%s\" parece ser inv�lido\n"
 
-#: pg_dump.c:2165
+#: pg_dump.c:2130
 #, c-format
 msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n"
 msgstr "AVISO: dono da fun��o de agrega��o \"%s\" parece ser inv�lido\n"
 
-#: pg_dump.c:2299
+#: pg_dump.c:2264
 #, c-format
 msgid "WARNING: owner of function \"%s\" appears to be invalid\n"
 msgstr "AVISO: dono da fun��o \"%s\" parece ser inv�lido\n"
 
-#: pg_dump.c:2586
+#: pg_dump.c:2551
 #, c-format
 msgid "WARNING: owner of table \"%s\" appears to be invalid\n"
 msgstr "AVISO: dono da tabela \"%s\" parece ser inv�lido\n"
 
-#: pg_dump.c:2605
+#: pg_dump.c:2570
 #, c-format
 msgid "specified table \"%s\" does not exist\n"
 msgstr "tabela especificada \"%s\" n�o existe\n"
 
-#: pg_dump.c:2712
+#: pg_dump.c:2677
 #, c-format
 msgid "reading indexes for table \"%s\"\n"
 msgstr "lendo �ndices da tabela \"%s\"\n"
 
-#: pg_dump.c:2949
+#: pg_dump.c:2914
 #, c-format
 msgid "reading foreign key constraints for table \"%s\"\n"
 msgstr "lendo restri��es de chave estrangeira da tabela \"%s\"\n"
 
-#: pg_dump.c:3234
+#: pg_dump.c:3126
+#, c-format
+msgid ""
+"failed sanity check, parent table OID %u of pg_rewrite entry OID %u not "
+"found\n"
+msgstr ""
+"verifica��o de sanidade falhou, OID %u da tabela pai da entrada OID %u de "
+"pg_rewrite n�o foi encontrado\n"
+
+#: pg_dump.c:3206
 #, c-format
 msgid "reading triggers for table \"%s\"\n"
 msgstr "lendo gatilhos da tabela \"%s\"\n"
 
-#: pg_dump.c:3306
+#: pg_dump.c:3278
 #, c-format
 msgid "expected %d triggers on table \"%s\" but found %d\n"
 msgstr "esperado %d gatilhos na tabela \"%s\" mas foi encontrado %d\n"
 
-#: pg_dump.c:3351
+#: pg_dump.c:3323
 #, c-format
 msgid ""
 "query produced null referenced table name for foreign key trigger \"%s\" on "
@@ -491,68 +500,80 @@ msgstr ""
 "consulta produziu nome nulo da tabela referenciada pelo gatilho de chave "
 "estrangeira \"%s\" na tabela \"%s\" (OID da tabela: %u)\n"
 
-#: pg_dump.c:3652
+#: pg_dump.c:3624
 #, c-format
 msgid "finding the columns and types of table \"%s\"\n"
 msgstr "encontrando as colunas e tipos da tabela \"%s\"\n"
 
-#: pg_dump.c:3738
+#: pg_dump.c:3710
 #, c-format
 msgid "invalid column numbering in table \"%s\"\n"
 msgstr "n�mera��o de coluna inv�lida para tabela \"%s\"\n"
 
-#: pg_dump.c:3772
+#: pg_dump.c:3744
 #, c-format
 msgid "finding default expressions of table \"%s\"\n"
 msgstr "encontrando express�es padr�o da tabela \"%s\"\n"
 
-#: pg_dump.c:3855
+#: pg_dump.c:3827
 #, c-format
 msgid "invalid adnum value %d for table \"%s\"\n"
 msgstr "valor de adnum %d inv�lido para tabela \"%s\"\n"
 
-#: pg_dump.c:3873
+#: pg_dump.c:3845
 #, c-format
 msgid "finding check constraints for table \"%s\"\n"
 msgstr "encontrando restri��es de verifica��o para tabela \"%s\"\n"
 
-#: pg_dump.c:3937
+#: pg_dump.c:3909
 #, c-format
 msgid "expected %d check constraints on table \"%s\" but found %d\n"
 msgstr ""
 "esperado %d restri��es de verifica��o na tabela \"%s\" mas foi encontrado %"
 "d\n"
 
-#: pg_dump.c:3939
+#: pg_dump.c:3911
 msgid "(The system catalogs might be corrupted.)\n"
 msgstr "(O cat�logo do sistema pode estar corrompido).\n"
 
-#: pg_dump.c:4628 pg_dump.c:4794 pg_dump.c:5195 pg_dump.c:5581 pg_dump.c:5880
-#: pg_dump.c:6082 pg_dump.c:6267
+#: pg_dump.c:4600 pg_dump.c:4766 pg_dump.c:5252 pg_dump.c:5677 pg_dump.c:5976
+#: pg_dump.c:6178 pg_dump.c:6382
 #, c-format
 msgid "Got %d rows instead of one from: %s"
 msgstr "Obteve %d registros ao inv�s de um registro de: %s"
 
-#: pg_dump.c:4903
+#: pg_dump.c:4875
 #, c-format
 msgid "query yielded no rows: %s\n"
 msgstr "consulta n�o retornou nenhum registro: %s\n"
 
-#: pg_dump.c:5251
+#: pg_dump.c:5072
+msgid "WARNING: bogus value in proargmodes array\n"
+msgstr "AVISO: valor inv�lido na matriz proargmodes\n"
+
+#: pg_dump.c:5312
+msgid "WARNING: could not parse proallargtypes array\n"
+msgstr "AVISO: n�o p�de analisar matriz proallargtypes\n"
+
+#: pg_dump.c:5328
+msgid "WARNING: could not parse proargmodes array\n"
+msgstr "AVISO: n�o p�de analisar matriz proargmodes\n"
+
+#: pg_dump.c:5342
 msgid "WARNING: could not parse proargnames array\n"
-msgstr "AVISO: n�o p�de avaliar matriz proargnames\n"
+msgstr "AVISO: n�o p�de analisar matriz proargnames\n"
 
-#: pg_dump.c:5288
+#: pg_dump.c:5380
 #, c-format
 msgid "unrecognized provolatile value for function \"%s\"\n"
 msgstr "valor de provolatile desconhecido para fun��o \"%s\"\n"
 
-#: pg_dump.c:5805
+#: pg_dump.c:5901
 #, c-format
 msgid "WARNING: could not find operator with OID %s\n"
 msgstr "AVISO: n�o p�de encontrar operador com OID %s\n"
 
-#: pg_dump.c:6295
+#: pg_dump.c:6412
 #, c-format
 msgid ""
 "WARNING: aggregate function %s could not be dumped correctly for this "
@@ -561,17 +582,17 @@ msgstr ""
 "AVISO: fun��o de agrega��o %s n�o p�de ser copiada corretamente para esta "
 "vers�o do banco de dados; ignorado\n"
 
-#: pg_dump.c:6429
+#: pg_dump.c:6553
 #, c-format
 msgid "could not parse ACL list (%s) for object \"%s\" (%s)\n"
-msgstr "n�o p�de validar a lista ACL (%s) para objeto \"%s\" (%s)\n"
+msgstr "n�o p�de analisar a lista ACL (%s) para objeto \"%s\" (%s)\n"
 
-#: pg_dump.c:6523
+#: pg_dump.c:6647
 #, c-format
 msgid "query to obtain definition of view \"%s\" returned no data\n"
 msgstr "consulta para obter defini��o da vis�o \"%s\" n�o retornou dados\n"
 
-#: pg_dump.c:6526
+#: pg_dump.c:6650
 #, c-format
 msgid ""
 "query to obtain definition of view \"%s\" returned more than one definition\n"
@@ -579,71 +600,71 @@ msgstr ""
 "consulta para obter defini��o da vis�o \"%s\" retornou mais de uma "
 "defini��o\n"
 
-#: pg_dump.c:6535
+#: pg_dump.c:6659
 #, c-format
 msgid "definition of view \"%s\" appears to be empty (length zero)\n"
 msgstr "defini��o da vis�o \"%s\" parece estar vazia (tamanho zero)\n"
 
-#: pg_dump.c:6848
+#: pg_dump.c:6972
 #, c-format
 msgid "invalid column number %d for table \"%s\"\n"
 msgstr "n�mero de colunas %d � inv�lido para tabela \"%s\"\n"
 
-#: pg_dump.c:6951
+#: pg_dump.c:7075
 #, c-format
 msgid "missing index for constraint \"%s\"\n"
 msgstr "faltando �ndice para restri��o \"%s\"\n"
 
-#: pg_dump.c:7111
+#: pg_dump.c:7235
 #, c-format
 msgid "unrecognized constraint type: %c\n"
 msgstr "tipo de restri��o desconhecido: %c\n"
 
-#: pg_dump.c:7172
+#: pg_dump.c:7296
 msgid "inserted invalid OID\n"
 msgstr "OID inv�lido inserido\n"
 
-#: pg_dump.c:7178
+#: pg_dump.c:7302
 #, c-format
 msgid "maximum system OID is %u\n"
 msgstr "OID m�ximo do sistema � %u\n"
 
-#: pg_dump.c:7219
+#: pg_dump.c:7343
 msgid "missing pg_database entry for this database\n"
 msgstr "faltando registro em pg_database para este banco de dados\n"
 
-#: pg_dump.c:7224
+#: pg_dump.c:7348
 msgid "found more than one pg_database entry for this database\n"
 msgstr ""
 "encontrado mais de um registro em pg_database para este banco de dados\n"
 
-#: pg_dump.c:7256
+#: pg_dump.c:7380
 msgid "could not find entry for pg_indexes in pg_class\n"
 msgstr "n�o p�de encontrar registro para pg_indexes em pg_class\n"
 
-#: pg_dump.c:7261
+#: pg_dump.c:7385
 msgid "found more than one entry for pg_indexes in pg_class\n"
 msgstr "encontrado mais de um registro para pg_indexes em pg_class\n"
 
-#: pg_dump.c:7310
+#: pg_dump.c:7434
 #, c-format
 msgid "query to get data of sequence \"%s\" returned %d rows (expected 1)\n"
 msgstr ""
 "consulta para obter dados sobre sequ�ncia \"%s\" retornou %d registros "
 "(esperado 1)\n"
 
-#: pg_dump.c:7319
+#: pg_dump.c:7443
 #, c-format
 msgid "query to get data of sequence \"%s\" returned name \"%s\"\n"
 msgstr ""
 "consulta para obter dados sobre sequ�ncia \"%s\" retornou nome \"%s\"\n"
 
-#: pg_dump.c:7560
+#: pg_dump.c:7684
 #, c-format
 msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n"
 msgstr "argumento inv�lido (%s) para gatilho \"%s\" na tabela \"%s\"\n"
 
-#: pg_dump.c:7667
+#: pg_dump.c:7791
 #, c-format
 msgid ""
 "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows "
@@ -652,16 +673,16 @@ msgstr ""
 "consulta para obter regra \"%s\" para tabela \"%s\" falhou: n�mero incorreto "
 "de registros foi retornado"
 
-#: pg_dump.c:7735
+#: pg_dump.c:7859
 msgid "reading dependency data\n"
 msgstr "lendo dados sobre depend�ncia\n"
 
-#: pg_dump.c:7924
+#: pg_dump.c:8048
 #, c-format
 msgid "query yielded %d rows instead of one: %s\n"
 msgstr "consulta retornou %d registros ao inv�s de um: %s\n"
 
-#: pg_dump.c:8111
+#: pg_dump.c:8235
 msgid "SQL command failed\n"
 msgstr "Comando SQL falhou\n"
 
@@ -737,10 +758,10 @@ msgstr "lendo restri
 msgid "reading triggers\n"
 msgstr "lendo gatilhos\n"
 
-#: common.c:421 common.c:553 common.c:587 pg_backup_archiver.c:619
-#: pg_backup_archiver.c:970 pg_backup_archiver.c:1084
-#: pg_backup_archiver.c:1522 pg_backup_archiver.c:1672
-#: pg_backup_archiver.c:1705 pg_backup_custom.c:141 pg_backup_custom.c:146
+#: common.c:421 common.c:553 common.c:587 pg_backup_archiver.c:616
+#: pg_backup_archiver.c:967 pg_backup_archiver.c:1081
+#: pg_backup_archiver.c:1520 pg_backup_archiver.c:1670
+#: pg_backup_archiver.c:1703 pg_backup_custom.c:141 pg_backup_custom.c:146
 #: pg_backup_custom.c:152 pg_backup_custom.c:167 pg_backup_custom.c:544
 #: pg_backup_db.c:157 pg_backup_db.c:233 pg_backup_files.c:112
 #: pg_backup_tar.c:168 pg_backup_tar.c:960
@@ -756,13 +777,13 @@ msgstr ""
 
 #: common.c:770
 msgid "could not parse numeric array: too many numbers\n"
-msgstr "n�o p�de validar matriz num�rica: muitos n�meros\n"
+msgstr "n�o p�de analisar matriz num�rica: muitos n�meros\n"
 
 #: common.c:785
 msgid "could not parse numeric array: invalid character in number\n"
-msgstr "n�o p�de validar matriz num�rica: caracter inv�lido no n�mero\n"
+msgstr "n�o p�de analisar matriz num�rica: caracter inv�lido no n�mero\n"
 
-#: pg_backup_archiver.c:45
+#: pg_backup_archiver.c:42
 msgid "archiver"
 msgstr "arquivador"
 
@@ -770,21 +791,21 @@ msgstr "arquivador"
 msgid "could not close output archive file\n"
 msgstr "n�o p�de fechar arquivo de sa�da\n"
 
-#: pg_backup_archiver.c:153
+#: pg_backup_archiver.c:152
 msgid "-C and -c are incompatible options\n"
 msgstr "-C e -c s�o op��es incompat�veis\n"
 
-#: pg_backup_archiver.c:160
+#: pg_backup_archiver.c:159
 msgid "connecting to database for restore\n"
 msgstr "conectando ao banco de dados para restaura��o\n"
 
-#: pg_backup_archiver.c:162
+#: pg_backup_archiver.c:161
 msgid "direct database connections are not supported in pre-1.3 archives\n"
 msgstr ""
 "conex�es diretas ao banco de dados n�o s�o suportadas em arquivos anteriores "
 "a 1.3\n"
 
-#: pg_backup_archiver.c:205
+#: pg_backup_archiver.c:203
 msgid "implied data-only restore\n"
 msgstr "restaura��o do tipo somente dados impl�cita\n"
 
@@ -793,62 +814,62 @@ msgstr "restaura
 msgid "dropping %s %s\n"
 msgstr "removendo %s %s\n"
 
-#: pg_backup_archiver.c:264 pg_backup_archiver.c:266
+#: pg_backup_archiver.c:262 pg_backup_archiver.c:264
 #, c-format
 msgid "warning from original dump file: %s\n"
 msgstr "aviso do arquivo de c�pia de seguran�a: %s\n"
 
-#: pg_backup_archiver.c:273
+#: pg_backup_archiver.c:271
 #, c-format
 msgid "creating %s %s\n"
 msgstr "criando %s %s\n"
 
-#: pg_backup_archiver.c:281
+#: pg_backup_archiver.c:279
 #, c-format
 msgid "connecting to new database \"%s\"\n"
 msgstr "conectando ao novo banco de dados \"%s\"\n"
 
-#: pg_backup_archiver.c:306
+#: pg_backup_archiver.c:304
 msgid ""
 "cannot restore from compressed archive (not configured for compression "
 "support)\n"
 msgstr ""
-"n�o pode recuperar arquivo comprimido (n�o est� configurado para suporte a "
+"n�o pode restaurar arquivo comprimido (n�o est� configurado para suporte a "
 "compress�o)\n"
 
-#: pg_backup_archiver.c:326
+#: pg_backup_archiver.c:324
 msgid "WARNING: skipping large-object restoration\n"
 msgstr "AVISO: ignorando restaura��o de objetos grandes\n"
 
-#: pg_backup_archiver.c:336
+#: pg_backup_archiver.c:334
 #, c-format
 msgid "restoring data for table \"%s\"\n"
 msgstr "restaurando dados da tabela \"%s\"\n"
 
-#: pg_backup_archiver.c:368 pg_backup_archiver.c:454
+#: pg_backup_archiver.c:366 pg_backup_archiver.c:451
 #, c-format
 msgid "fixing up large-object cross-reference for \"%s\"\n"
 msgstr "consertando refer�ncia cruzada de objetos grandes de \"%s\"\n"
 
-#: pg_backup_archiver.c:379
+#: pg_backup_archiver.c:377
 #, c-format
 msgid "executing %s %s\n"
 msgstr "executando %s %s\n"
 
-#: pg_backup_archiver.c:399
+#: pg_backup_archiver.c:395
 #, c-format
 msgid "setting owner and privileges for %s %s\n"
 msgstr "definindo dono e privil�gios para %s %s\n"
 
-#: pg_backup_archiver.c:517
+#: pg_backup_archiver.c:514
 msgid "disabling triggers\n"
 msgstr "desabilitando gatilhos\n"
 
-#: pg_backup_archiver.c:556
+#: pg_backup_archiver.c:553
 msgid "enabling triggers\n"
 msgstr "habilitando gatilhos\n"
 
-#: pg_backup_archiver.c:591
+#: pg_backup_archiver.c:588
 msgid ""
 "internal error -- WriteData cannot be called outside the context of a "
 "DataDumper routine\n"
@@ -856,222 +877,222 @@ msgstr ""
 "erro interno -- WriteData n�o pode ser chamada fora do contexto de uma "
 "rotina DataDumper\n"
 
-#: pg_backup_archiver.c:734
+#: pg_backup_archiver.c:731
 msgid "large-object output not supported in chosen format\n"
 msgstr ""
 "c�pia de seguran�a de objetos grandes n�o � suportada no formato escolhido.\n"
 
-#: pg_backup_archiver.c:774 pg_backup_archiver.c:862
+#: pg_backup_archiver.c:771 pg_backup_archiver.c:859
 msgid "committing large-object transactions\n"
 msgstr "efetivando transa��es de objetos grandes\n"
 
-#: pg_backup_archiver.c:784
+#: pg_backup_archiver.c:781
 #, c-format
 msgid "restored %d large objects\n"
 msgstr "%d objetos grandes restaurados\n"
 
-#: pg_backup_archiver.c:801
+#: pg_backup_archiver.c:798
 msgid "cannot restore large objects without a database connection\n"
 msgstr "n�o pode restaurar objetos grandes sem conex�o a um banco de dados\n"
 
-#: pg_backup_archiver.c:815
+#: pg_backup_archiver.c:812
 msgid "starting large-object transactions\n"
 msgstr "iniciando transa��es de objetos grandes\n"
 
-#: pg_backup_archiver.c:823
+#: pg_backup_archiver.c:820
 msgid "could not create large object\n"
 msgstr "n�o p�de criar objeto grande\n"
 
-#: pg_backup_archiver.c:825
+#: pg_backup_archiver.c:822
 #, c-format
 msgid "restoring large object with OID %u as %u\n"
 msgstr "restaurando objeto grande com OID %u como %u\n"
 
-#: pg_backup_archiver.c:831
+#: pg_backup_archiver.c:828
 msgid "could not open large object\n"
 msgstr "n�o p�de abrir objeto grande\n"
 
-#: pg_backup_archiver.c:846
+#: pg_backup_archiver.c:843
 #, c-format
 msgid "wrote remaining %lu bytes of large-object data (result = %lu)\n"
 msgstr ""
 "%lu bytes remanescentes de dados do objeto grande escritos (resultado = %"
 "lu)\n"
 
-#: pg_backup_archiver.c:849 pg_backup_archiver.c:1141
+#: pg_backup_archiver.c:846 pg_backup_archiver.c:1138
 #, c-format
 msgid "could not write to large object (result: %lu, expected: %lu)\n"
 msgstr "n�o p�de escrever objeto grande (resultado: %lu, esperado %lu)\n"
 
-#: pg_backup_archiver.c:895
+#: pg_backup_archiver.c:892
 msgid "could not open TOC file\n"
 msgstr "n�o p�de abrir arquivo TOC\n"
 
-#: pg_backup_archiver.c:916
+#: pg_backup_archiver.c:913
 #, c-format
 msgid "WARNING: line ignored: %s\n"
 msgstr "AVISO: linha ignorada: %s\n"
 
-#: pg_backup_archiver.c:923
+#: pg_backup_archiver.c:920
 #, c-format
 msgid "could not find entry for ID %d\n"
 msgstr "n�o p�de encontrar registro para ID %d\n"
 
-#: pg_backup_archiver.c:933 pg_backup_files.c:156 pg_backup_files.c:439
+#: pg_backup_archiver.c:930 pg_backup_files.c:156 pg_backup_files.c:439
 #, c-format
 msgid "could not close TOC file: %s\n"
 msgstr "n�o p�de fechar arquivo TOC: %s\n"
 
-#: pg_backup_archiver.c:1032 pg_backup_files.c:130
+#: pg_backup_archiver.c:1029 pg_backup_files.c:130
 #, c-format
 msgid "could not open output file: %s\n"
 msgstr "n�o p�de abrir arquivo de sa�da: %s\n"
 
-#: pg_backup_archiver.c:1048
+#: pg_backup_archiver.c:1045
 #, c-format
 msgid "could not close output file: %s\n"
 msgstr "n�o p�de fechar arquivo de sa�da: %s\n"
 
-#: pg_backup_archiver.c:1137
+#: pg_backup_archiver.c:1134
 #, c-format
 msgid "wrote %lu bytes of large object data (result = %lu)\n"
 msgstr "%lu bytes de dados do objeto grande escritos (resultado = %lu)\n"
 
-#: pg_backup_archiver.c:1159
+#: pg_backup_archiver.c:1156
 msgid "could not write to compressed archive\n"
 msgstr "n�o p�de escrever em arquivo comprimido\n"
 
-#: pg_backup_archiver.c:1167
+#: pg_backup_archiver.c:1164
 msgid "could not write to custom output routine\n"
 msgstr "n�o p�de escrever rotina de sa�da customizada\n"
 
-#: pg_backup_archiver.c:1182
+#: pg_backup_archiver.c:1179
 #, c-format
 msgid "could not write to output file (%lu != %lu)\n"
 msgstr "n�o p�de escrever no arquivo de sa�da (%lu != %lu)\n"
 
-#: pg_backup_archiver.c:1267
+#: pg_backup_archiver.c:1264
 msgid "Error while INITIALIZING:\n"
 msgstr "Erro ao INICIALIZAR:\n"
 
-#: pg_backup_archiver.c:1272
+#: pg_backup_archiver.c:1269
 msgid "Error while PROCESSING TOC:\n"
 msgstr "Erro ao PROCESSAR TOC:\n"
 
-#: pg_backup_archiver.c:1277
+#: pg_backup_archiver.c:1274
 msgid "Error while FINALIZING:\n"
 msgstr "Erro ao FINALIZAR:\n"
 
-#: pg_backup_archiver.c:1282
+#: pg_backup_archiver.c:1279
 #, c-format
 msgid "Error from TOC entry %d; %u %u %s %s %s\n"
 msgstr "Erro no registro do TOC %d; %u %u %s %s %s\n"
 
-#: pg_backup_archiver.c:1415
+#: pg_backup_archiver.c:1413
 #, c-format
 msgid "Unexpected data offset flag %d\n"
 msgstr "Marcador de deslocamento de dado inesperado %d\n"
 
-#: pg_backup_archiver.c:1428
+#: pg_backup_archiver.c:1426
 msgid "file offset in dump file is too large\n"
 msgstr "deslocamento no arquivo de c�pia de seguran�a � muito grande\n"
 
-#: pg_backup_archiver.c:1540
+#: pg_backup_archiver.c:1538
 msgid "attempting to ascertain archive format\n"
 msgstr "tentando verificar formato de arquivo\n"
 
-#: pg_backup_archiver.c:1560 pg_backup_files.c:148
+#: pg_backup_archiver.c:1558 pg_backup_files.c:148
 #, c-format
 msgid "could not open input file: %s\n"
 msgstr "n�o p�de abrir arquivo de entrada: %s\n"
 
-#: pg_backup_archiver.c:1567
+#: pg_backup_archiver.c:1565
 #, c-format
 msgid "could not read input file: %s\n"
 msgstr "n�o p�de ler arquivo de entrada: %s\n"
 
-#: pg_backup_archiver.c:1569
+#: pg_backup_archiver.c:1567
 #, c-format
 msgid "input file is too short (read %lu, expected 5)\n"
 msgstr "arquivo de entrada � muito pequeno (lido %lu, esperado 5)\n"
 
-#: pg_backup_archiver.c:1622
+#: pg_backup_archiver.c:1620
 msgid "input file does not appear to be a valid archive (too short?)\n"
 msgstr "arquivo de entrada n�o parece ser um arquivo v�lido (muito pequeno?)\n"
 
-#: pg_backup_archiver.c:1625
+#: pg_backup_archiver.c:1623
 msgid "input file does not appear to be a valid archive\n"
 msgstr "arquivo de entrada n�o parece ser um arquivo v�lido\n"
 
-#: pg_backup_archiver.c:1643
+#: pg_backup_archiver.c:1641
 #, c-format
 msgid "read %lu bytes into lookahead buffer\n"
 msgstr "lido %lu bytes no buffer lookahead\n"
 
-#: pg_backup_archiver.c:1650
+#: pg_backup_archiver.c:1648
 #, c-format
 msgid "could not close the input file after reading header: %s\n"
 msgstr "n�o p�de fechar arquivo de entrada ap�s ler cabe�alho: %s\n"
 
-#: pg_backup_archiver.c:1667
+#: pg_backup_archiver.c:1665
 #, c-format
 msgid "allocating AH for %s, format %d\n"
 msgstr "alocando AH para %s, formato %d\n"
 
-#: pg_backup_archiver.c:1721
+#: pg_backup_archiver.c:1734
 #, c-format
 msgid "archive format is %d\n"
 msgstr "formato de arquivo � %d\n"
 
-#: pg_backup_archiver.c:1749
+#: pg_backup_archiver.c:1761
 #, c-format
 msgid "unrecognized file format \"%d\"\n"
 msgstr "formato de arquivo desconhecido \"%d\"\n"
 
-#: pg_backup_archiver.c:1877
+#: pg_backup_archiver.c:1889
 #, c-format
 msgid "entry ID %d out of range -- perhaps a corrupt TOC\n"
 msgstr ""
 "ID do registro %d fora do intervalo -- talvez o TOC esteja corrompido\n"
 
-#: pg_backup_archiver.c:1962
+#: pg_backup_archiver.c:1974
 #, c-format
 msgid "read TOC entry %d (ID %d) for %s %s\n"
 msgstr "lendo registro do TOC %d (ID %d) de %s %s\n"
 
-#: pg_backup_archiver.c:2124
+#: pg_backup_archiver.c:2136
 #, c-format
 msgid "could not set session user to \"%s\": %s"
 msgstr "n�o p�de definir \"%s\" como usu�rio da sess�o: %s"
 
-#: pg_backup_archiver.c:2436 pg_backup_archiver.c:2573
+#: pg_backup_archiver.c:2460 pg_backup_archiver.c:2597
 #, c-format
 msgid "WARNING: don't know how to set owner for object type %s\n"
 msgstr "AVISO: n�o se sabe como definir o dono para tipo de objeto %s\n"
 
-#: pg_backup_archiver.c:2606
+#: pg_backup_archiver.c:2630
 msgid ""
 "WARNING: requested compression not available in this installation -- archive "
 "will be uncompressed\n"
 msgstr ""
-"AVISO: compress�o requerida n�o est� dispon�vel nesta instala��o -- arquivo "
-"ser� descomprimido\n"
+"AVISO: compress�o requisitada n�o est� dispon�vel nesta instala��o -- "
+"arquivo ser� descomprimido\n"
 
-#: pg_backup_archiver.c:2641
+#: pg_backup_archiver.c:2665
 msgid "did not find magic string in file header\n"
 msgstr "n�o encontrou cadeia de caracteres m�gica no cabe�alho do arquivo\n"
 
-#: pg_backup_archiver.c:2655
+#: pg_backup_archiver.c:2679
 #, c-format
 msgid "unsupported version (%d.%d) in file header\n"
 msgstr "vers�o n�o � suportada (%d.%d) no cabe�alho do arquivo\n"
 
-#: pg_backup_archiver.c:2660
+#: pg_backup_archiver.c:2684
 #, c-format
 msgid "sanity check on integer size (%lu) failed\n"
 msgstr "verifica��o de sanidade no tamanho do inteiro (%lu) falhou\n"
 
-#: pg_backup_archiver.c:2664
+#: pg_backup_archiver.c:2688
 msgid ""
 "WARNING: archive was made on a machine with larger integers, some operations "
 "may fail\n"
@@ -1079,12 +1100,12 @@ msgstr ""
 "AVISO: arquivo foi feito em uma m�quina com inteiros longos, algumas "
 "opera��es podem falhar\n"
 
-#: pg_backup_archiver.c:2674
+#: pg_backup_archiver.c:2698
 #, c-format
 msgid "expected format (%d) differs from format found in file (%d)\n"
 msgstr "formato esperado (%d) difere do formato encontrado no arquivo (%d)\n"
 
-#: pg_backup_archiver.c:2690
+#: pg_backup_archiver.c:2714
 msgid ""
 "WARNING: archive is compressed, but this installation does not support "
 "compression -- no data will be available\n"
@@ -1092,7 +1113,7 @@ msgstr ""
 "AVISO: arquivo est� comprimido, mas esta instala��o n�o suporta compress�o "
 "-- nenhum dado est� dispon�vel\n"
 
-#: pg_backup_archiver.c:2708
+#: pg_backup_archiver.c:2732
 msgid "WARNING: invalid creation date in header\n"
 msgstr "AVISO: data de cria��o inv�lida no cabe�alho\n"
 
@@ -1114,7 +1135,7 @@ msgid ""
 "Dumping a specific TOC data block out of order is not supported without ID "
 "on this input stream (fseek required)\n"
 msgstr ""
-"Copiar um bloco de dados TOC espec�fico fora da ordem n�o � suportado sem "
+"Copiar um bloco de dados TOC espec�fico fora de ordem n�o � suportado sem "
 "ID  nesta entrada (fseek � requerido)\n"
 
 #: pg_backup_custom.c:462
@@ -1210,16 +1231,18 @@ msgstr "arquivador (bd)"
 msgid "could not get server_version from libpq\n"
 msgstr "n�o p�de obter vers�o do servidor a partir da libpq\n"
 
-#: pg_backup_db.c:79
+#: pg_backup_db.c:79 pg_dumpall.c:1011
 #, c-format
 msgid "server version: %s; %s version: %s\n"
 msgstr "vers�o do servidor: %s; vers�o do %s: %s\n"
 
-#: pg_backup_db.c:82
+#: pg_backup_db.c:82 pg_dumpall.c:1014
+#, c-format
 msgid "proceeding despite version mismatch\n"
 msgstr "continuando apesar da vers�o n�o corresponder\n"
 
-#: pg_backup_db.c:84
+#: pg_backup_db.c:84 pg_dumpall.c:1017
+#, c-format
 msgid ""
 "aborting because of version mismatch  (Use the -i option to proceed "
 "anyway.)\n"
@@ -1233,18 +1256,18 @@ msgid "connecting to database \"%s\" as user \"%s\"\n"
 msgstr "conectando ao banco de dados \"%s\" como usu�rio \"%s\"\n"
 
 #: pg_backup_db.c:155 pg_backup_db.c:187 pg_backup_db.c:231 pg_backup_db.c:260
-#: pg_dumpall.c:941 pg_dumpall.c:967
+#: pg_dumpall.c:944 pg_dumpall.c:970
 msgid "Password: "
 msgstr "Senha: "
 
 #: pg_backup_db.c:167
 msgid "failed to reconnect to database\n"
-msgstr "falhou ao reconectar ao banco de dados\n"
+msgstr "falhou ao conectar novamente ao banco de dados\n"
 
 #: pg_backup_db.c:190
 #, c-format
 msgid "could not reconnect to database: %s"
-msgstr "n�o p�de reconectar ao banco de dados: %s"
+msgstr "n�o p�de conectar novamente ao banco de dados: %s"
 
 #: pg_backup_db.c:227
 msgid "already connected to a database\n"
@@ -1392,7 +1415,7 @@ msgstr "n
 #: pg_backup_files.c:375 pg_backup_files.c:545
 #, c-format
 msgid "could not close large object TOC file: %s\n"
-msgstr "n�o p�de fechar arquivo de objeto grande: %s\n"
+msgstr "n�o p�de fechar arquivo TOC de objeto grande: %s\n"
 
 #: pg_backup_files.c:387
 msgid "could not write byte\n"
@@ -1486,7 +1509,7 @@ msgid ""
 "starting at position %lu\n"
 msgstr ""
 "comando COPY inv�lido -- n�o p�de encontrar \"from stdin\" em \"%s\" "
-"iniciando da posi��o %lu\n"
+"iniciando na posi��o %lu\n"
 
 #: pg_backup_tar.c:692
 #, c-format
@@ -1518,7 +1541,7 @@ msgstr "tamanho do arquivo atual (%s) n
 
 #: pg_backup_tar.c:1060
 msgid "could not output padding at end of tar member\n"
-msgstr "n�o p�de escrever preenchimento ao fim do membro tar\n"
+msgstr "n�o p�de escrever enchimento ao fim do membro tar\n"
 
 #: pg_backup_tar.c:1089
 #, c-format
@@ -1546,7 +1569,7 @@ msgid ""
 "dumping data out of order is not supported in this archive format: %s is "
 "required, but comes before %s in the archive file.\n"
 msgstr ""
-"copiar dados fora da ordem n�o � suportado neste formato de arquivo: %s � "
+"copiar dados fora de ordem n�o � suportado neste formato de arquivo: %s � "
 "requerido, mas vem antes de %s no arquivo.\n"
 
 #: pg_backup_tar.c:1172
@@ -1574,19 +1597,25 @@ msgstr ""
 
 #: pg_backup_tar.c:1325
 msgid "could not write tar header\n"
-msgstr "n�o p�de escrever cabe�alho no arquivo tar\n"
+msgstr "n�o p�de escrever cabe�alho tar\n"
 
-#: pg_restore.c:283
+#: pg_restore.c:282
 #, c-format
 msgid "%s: cannot specify both -d and -f output\n"
 msgstr "%s: n�o pode especificar ambas op��es -d e -f\n"
 
-#: pg_restore.c:344
+#: pg_restore.c:316
+#, c-format
+msgid "unrecognized archive format '%s'; please specify 't' or 'c'\n"
+msgstr ""
+"formato de arquivo '%s' desconhecido; por favor especifique 't' ou 'c'\n"
+
+#: pg_restore.c:343
 #, c-format
 msgid "WARNING: errors ignored on restore: %d\n"
 msgstr "AVISO: erros ignorados durante restaura��o: %d\n"
 
-#: pg_restore.c:358
+#: pg_restore.c:357
 #, c-format
 msgid ""
 "%s restores a PostgreSQL database from an archive created by pg_dump.\n"
@@ -1596,24 +1625,24 @@ msgstr ""
 "pg_dump.\n"
 "\n"
 
-#: pg_restore.c:360
+#: pg_restore.c:359
 #, c-format
 msgid "  %s [OPTION]... [FILE]\n"
 msgstr "  %s [OP��O]... [ARQUIVO]\n"
 
-#: pg_restore.c:363
+#: pg_restore.c:362
 #, c-format
 msgid "  -d, --dbname=NAME        connect to database name\n"
 msgstr "  -d, --dbname=NOME        conecta ao banco de dados informado\n"
 
-#: pg_restore.c:365
+#: pg_restore.c:364
 #, c-format
 msgid "  -F, --format=c|t         specify backup file format\n"
 msgstr ""
 "  -F, --format=c|t         especifica formato de arquivo de c�pia de "
 "seguran�a\n"
 
-#: pg_restore.c:366
+#: pg_restore.c:365
 #, c-format
 msgid ""
 "  -i, --ignore-version     proceed even when server version mismatches\n"
@@ -1621,12 +1650,12 @@ msgstr ""
 "  -i, --ignore-version     prossegue mesmo se a vers�o do servidor n�o "
 "corresponder\n"
 
-#: pg_restore.c:367
+#: pg_restore.c:366
 #, c-format
 msgid "  -l, --list               print summarized TOC of the archive\n"
-msgstr "  -l, --list               mostra TOC resumido do arquivo\n"
+msgstr "  -l, --list               exibe TOC resumido do arquivo\n"
 
-#: pg_restore.c:372
+#: pg_restore.c:371
 #, c-format
 msgid ""
 "\n"
@@ -1635,22 +1664,22 @@ msgstr ""
 "\n"
 "Op��es que controlam a restaura��o:\n"
 
-#: pg_restore.c:373
+#: pg_restore.c:372
 #, c-format
 msgid "  -a, --data-only          restore only the data, no schema\n"
 msgstr "  -a, --data-only          restaura somente os dados, n�o o esquema\n"
 
-#: pg_restore.c:375
+#: pg_restore.c:374
 #, c-format
 msgid "  -C, --create             create the target database\n"
 msgstr "  -C, --create             cria o banco de dados informado\n"
 
-#: pg_restore.c:376
+#: pg_restore.c:375
 #, c-format
 msgid "  -I, --index=NAME         restore named index\n"
 msgstr "  -I, --index=NOME         restaura o �ndice especificado\n"
 
-#: pg_restore.c:377
+#: pg_restore.c:376
 #, c-format
 msgid ""
 "  -L, --use-list=FILENAME  use specified table of contents for ordering\n"
@@ -1659,12 +1688,12 @@ msgstr ""
 "  -L, --user-list=ARQUIVO  usa tabela de conte�do especificada para ordenar\n"
 "                           sa�da para este arquivo\n"
 
-#: pg_restore.c:379 pg_dumpall.c:352
+#: pg_restore.c:378 pg_dumpall.c:354
 #, c-format
 msgid "  -O, --no-owner           skip restoration of object ownership\n"
 msgstr "  -O, --no-owner           ignora restaura��o do dono dos objetos\n"
 
-#: pg_restore.c:380
+#: pg_restore.c:379
 #, c-format
 msgid ""
 "  -P, --function=NAME(args)\n"
@@ -1673,13 +1702,13 @@ msgstr ""
 "  -P, --function=NOME(args)\n"
 "                           restaura fun��o especificada\n"
 
-#: pg_restore.c:382
+#: pg_restore.c:381
 #, c-format
 msgid "  -s, --schema-only        restore only the schema, no data\n"
 msgstr ""
 "  -s, --schema-only        restaura somente o esquema, e n�o os dados\n"
 
-#: pg_restore.c:383
+#: pg_restore.c:382
 #, c-format
 msgid ""
 "  -S, --superuser=NAME     specify the superuser user name to use for\n"
@@ -1688,17 +1717,17 @@ msgstr ""
 "  -S, --superuser=NOME     especifica o super-usu�rio usado para\n"
 "                           desabilitar os gatilhos\n"
 
-#: pg_restore.c:385
+#: pg_restore.c:384
 #, c-format
 msgid "  -t, --table=NAME         restore named table\n"
 msgstr "  -t, --table=NOME         restaura a tabela especificada\n"
 
-#: pg_restore.c:386
+#: pg_restore.c:385
 #, c-format
 msgid "  -T, --trigger=NAME       restore named trigger\n"
 msgstr "  -T, --trigger=NOME       restaura o gatilho especificado\n"
 
-#: pg_restore.c:387
+#: pg_restore.c:386
 #, c-format
 msgid ""
 "  -x, --no-privileges      skip restoration of access privileges (grant/"
@@ -1707,12 +1736,12 @@ msgstr ""
 "  -x, --no-privileges      ignora restaura��o dos privil�gios de acesso "
 "(grant/revoke)\n"
 
-#: pg_restore.c:399
+#: pg_restore.c:398
 #, c-format
 msgid "  -e, --exit-on-error      exit on error, default is to continue\n"
 msgstr "  -e, --exit-on-error      sai se houver erro, padr�o � continuar\n"
 
-#: pg_restore.c:401
+#: pg_restore.c:400
 #, c-format
 msgid ""
 "\n"
@@ -1745,7 +1774,7 @@ msgstr ""
 "mas n�o tem a mesma vers�o que %s.\n"
 "Verifique sua instala��o.\n"
 
-#: pg_dumpall.c:336
+#: pg_dumpall.c:338
 #, c-format
 msgid ""
 "%s extracts a PostgreSQL database cluster into an SQL script file.\n"
@@ -1754,12 +1783,12 @@ msgstr ""
 "%s extrai um agrupamento de bancos de dados PostgreSQL de um arquivo SQL.\n"
 "\n"
 
-#: pg_dumpall.c:338
+#: pg_dumpall.c:340
 #, c-format
 msgid "  %s [OPTION]...\n"
 msgstr "  %s [OP��O]...\n"
 
-#: pg_dumpall.c:341
+#: pg_dumpall.c:343
 #, c-format
 msgid ""
 "  -i, --ignore-version     proceed even when server version mismatches\n"
@@ -1768,21 +1797,21 @@ msgstr ""
 "  -i, --ignore-version     prossegue mesmo se a vers�o do servidor e\n"
 "                           do pg_dumpall n�o correspondem\n"
 
-#: pg_dumpall.c:347
+#: pg_dumpall.c:349
 #, c-format
 msgid "  -c, --clean              clean (drop) databases prior to create\n"
 msgstr ""
-"  -c, --clean              exclui (remove) bancos de dados anteriormente "
-"criados\n"
+"  -c, --clean              exclui (remove) bancos de dados antes de cri�-"
+"los\n"
 
-#: pg_dumpall.c:350
+#: pg_dumpall.c:352
 #, c-format
 msgid "  -g, --globals-only       dump only global objects, no databases\n"
 msgstr ""
 "  -g, --globals-only       copia somente objetos globais, e n�o bancos de "
 "dados\n"
 
-#: pg_dumpall.c:354
+#: pg_dumpall.c:356
 #, c-format
 msgid ""
 "  -S, --superuser=NAME     specify the superuser user name to use in the "
@@ -1791,7 +1820,7 @@ msgstr ""
 "  -S, --superuser=NOME     especifica o super-usu�rio a ser usado na c�pia "
 "de seguran�a\n"
 
-#: pg_dumpall.c:370
+#: pg_dumpall.c:372
 #, c-format
 msgid ""
 "\n"
@@ -1802,62 +1831,67 @@ msgstr ""
 "O script SQL ser� escrito na sa�da padr�o.\n"
 "\n"
 
-#: pg_dumpall.c:570
+#: pg_dumpall.c:572
 #, c-format
 msgid "%s: could not parse ACL list (%s) for tablespace \"%s\"\n"
-msgstr "%s: n�o p�de validar lista ACL (%s) para tablespace \"%s\"\n"
+msgstr "%s: n�o p�de analisar lista ACL (%s) para tablespace \"%s\"\n"
 
-#: pg_dumpall.c:702
+#: pg_dumpall.c:704
 #, c-format
 msgid "%s: could not parse ACL list (%s) for database \"%s\"\n"
-msgstr "%s: n�o p�de validar lista ACL (%s) do banco de dados \"%s\"\n"
+msgstr "%s: n�o p�de analisar lista ACL (%s) do banco de dados \"%s\"\n"
 
-#: pg_dumpall.c:852
+#: pg_dumpall.c:854
 #, c-format
 msgid "%s: dumping database \"%s\"...\n"
 msgstr "%s: copiando banco de dados \"%s\"...\n"
 
-#: pg_dumpall.c:858
+#: pg_dumpall.c:860
 #, c-format
 msgid "%s: pg_dump failed on database \"%s\", exiting\n"
 msgstr "%s: pg_dump falhou no banco de dados \"%s\", saindo\n"
 
-#: pg_dumpall.c:913
+#: pg_dumpall.c:915
 #, c-format
 msgid "%s: running \"%s\"\n"
 msgstr "%s: executando \"%s\"\n"
 
-#: pg_dumpall.c:954
+#: pg_dumpall.c:957
 #, c-format
 msgid "%s: could not connect to database \"%s\"\n"
 msgstr "%s: n�o p�de conectar ao banco de dados \"%s\"\n"
 
-#: pg_dumpall.c:977
+#: pg_dumpall.c:980
 #, c-format
 msgid "%s: could not connect to database \"%s\": %s\n"
 msgstr "%s: n�o p�de conectar ao banco de dados \"%s\": %s\n"
 
-#: pg_dumpall.c:985
+#: pg_dumpall.c:988
 #, c-format
 msgid "%s: could not get server version\n"
 msgstr "%s: n�o p�de obter a vers�o do servidor\n"
 
-#: pg_dumpall.c:991
+#: pg_dumpall.c:994
 #, c-format
 msgid "%s: could not parse server version \"%s\"\n"
-msgstr "%s: n�o p�de validar a vers�o do servidor \"%s\"\n"
+msgstr "%s: n�o p�de analisar a vers�o do servidor \"%s\"\n"
+
+#: pg_dumpall.c:1002
+#, c-format
+msgid "%s: could not parse version \"%s\"\n"
+msgstr "%s: n�o p�de analisar a vers�o \"%s\"\n"
 
-#: pg_dumpall.c:1010
+#: pg_dumpall.c:1036
 #, c-format
 msgid "%s: executing %s\n"
 msgstr "%s: executando %s\n"
 
-#: pg_dumpall.c:1016
+#: pg_dumpall.c:1042
 #, c-format
 msgid "%s: query failed: %s"
 msgstr "%s: consulta falhou: %s"
 
-#: pg_dumpall.c:1017
+#: pg_dumpall.c:1043
 #, c-format
 msgid "%s: query was: %s\n"
 msgstr "%s: consulta foi: %s\n"
diff --git a/src/bin/pg_dump/po/ru.po b/src/bin/pg_dump/po/ru.po
index cc2925a..0f4f4e3 100644
--- a/src/bin/pg_dump/po/ru.po
+++ b/src/bin/pg_dump/po/ru.po
@@ -1,12 +1,13 @@
 # ru.po
 # PG_DUMP Translated Messages into the Russian Language (KOI8-R)
 #
-# Copyright (c) 2001-2004 Serguei A. Mokhov, mokhov@cs.concordia.ca
+# Copyright (c) 2001-2005 Serguei A. Mokhov, mokhov@cs.concordia.ca
 # Distributed under the same licensing terms as PostgreSQL itself.
 #
 # $PostgreSQL$
 #
 # ChangeLog:
+#   - Jnauary 17, 2005: Complete translation for 8.0, Serguei A. Mokhov <mokhov@cs.concordia.ca>
 #   - December, 2004: New translation by Oleg Bartunov <oleg@sai.msu.su>
 #   - April 6 - December 10, 2004: Updates for 8.0; <mokhov@cs.concordia.ca>
 #   - July 24 - October 5, 2003: Updates for 7.4.x; <mokhov@cs.concordia.ca>
@@ -18,8 +19,8 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PostgreSQL 8.0\n"
-"POT-Creation-Date: 2004-12-10 19:08+0000\n"
-"PO-Revision-Date: 2004-12-10 21:52-0500\n"
+"POT-Creation-Date: 2005-01-17 19:05+0000\n"
+"PO-Revision-Date: 2005-01-17 15:56-0500\n"
 "Last-Translator: Serguei A. Mokhov <mokhov@cs.concordia.ca>\n"
 "Language-Team: pgsql-ru-general <pgsql-ru-general@postgresql.org>\n"
 "MIME-Version: 1.0\n"
@@ -28,21 +29,21 @@ msgstr ""
 "X-Poedit-Language: Russian\n"
 "X-Poedit-Country: RUSSIAN FEDERATION\n"
 
-#: pg_dump.c:363
+#: pg_dump.c:364
 #: pg_restore.c:229
 msgid "User name: "
 msgstr "��� ������������: "
 
-#: pg_dump.c:399
+#: pg_dump.c:400
 #: pg_dumpall.c:264
 #: pg_restore.c:256
 #, c-format
 msgid "%s: invalid -X option -- %s\n"
 msgstr "%s: �������� ����� -X -- %s\n"
 
-#: pg_dump.c:401
-#: pg_dump.c:415
-#: pg_dump.c:424
+#: pg_dump.c:402
+#: pg_dump.c:416
+#: pg_dump.c:425
 #: pg_dumpall.c:266
 #: pg_dumpall.c:275
 #: pg_dumpall.c:292
@@ -53,72 +54,72 @@ msgstr "%s: 
 msgid "Try \"%s --help\" for more information.\n"
 msgstr "���������� \"%s --help\" ��� ����� ��������� ����������.\n"
 
-#: pg_dump.c:422
+#: pg_dump.c:423
 #: pg_dumpall.c:290
 #, c-format
 msgid "%s: too many command-line arguments (first is \"%s\")\n"
 msgstr "%s: ������� ����� ���������� ��������� ������ (������ \"%s\")\n"
 
-#: pg_dump.c:435
+#: pg_dump.c:436
 msgid "options \"schema only\" (-s) and \"data only\" (-a) cannot be used together\n"
 msgstr "����� \"schema only\" (-s) � \"data only\" (-a) �� ����� �������������� ������\n"
 
 # TO REVEIW
-#: pg_dump.c:441
+#: pg_dump.c:442
 msgid "options \"clean\" (-c) and \"data only\" (-a) cannot be used together\n"
 msgstr "����� \"clean\" (-c) � \"data only\" (-a) �� ����� �������������� ������\n"
 
-#: pg_dump.c:447
+#: pg_dump.c:448
 msgid "large-object output not supported for a single table\n"
 msgstr "����� ������� �������� �� �������������� ��� ��������� �������\n"
 
-#: pg_dump.c:448
-#: pg_dump.c:455
+#: pg_dump.c:449
+#: pg_dump.c:456
 msgid "use a full dump instead\n"
 msgstr "������ ����� ����������� ������ ����\n"
 
-#: pg_dump.c:454
+#: pg_dump.c:455
 msgid "large-object output not supported for a single schema\n"
 msgstr "����� ������� �������� �� �������������� ��� ��������� �����\n"
 
-#: pg_dump.c:461
+#: pg_dump.c:462
 msgid "INSERT (-d, -D) and OID (-o) options cannot be used together\n"
 msgstr "����� INSERT (-d, -D) � OID (-o) �� ����� �������������� ������\n"
 
-#: pg_dump.c:462
+#: pg_dump.c:463
 msgid "(The INSERT command cannot set OIDs.)\n"
 msgstr "(������� INSERT �� ����� �������� OID.)\n"
 
-#: pg_dump.c:468
+#: pg_dump.c:469
 msgid "large-object output is not supported for plain-text dump files\n"
 msgstr "����� ������� �������� �� �������������� ��� ����� � ��������� �����\n"
 
-#: pg_dump.c:469
+#: pg_dump.c:470
 msgid "(Use a different output format.)\n"
 msgstr "(����������� ������ ������ ��� ������.)\n"
 
-#: pg_dump.c:498
+#: pg_dump.c:499
 #, c-format
 msgid "invalid output format \"%s\" specified\n"
 msgstr "������ �������� ������ ������: \"%s\"\n"
 
-#: pg_dump.c:504
+#: pg_dump.c:505
 #, c-format
 msgid "could not open output file \"%s\" for writing\n"
 msgstr "�� ������� ������� ���� ������ \"%s\"  ��� ������\n"
 
 #: pg_backup_db.c:52
-#: pg_dump.c:515
+#: pg_dump.c:516
 #, c-format
 msgid "could not parse version string \"%s\"\n"
 msgstr "�� ������� ���������������� ������ � ������� ������ \"%s\"\n"
 
-#: pg_dump.c:551
+#: pg_dump.c:552
 #, c-format
 msgid "last built-in OID is %u\n"
 msgstr "��������� ����������̣���� OID: %u\n"
 
-#: pg_dump.c:662
+#: pg_dump.c:663
 #, c-format
 msgid ""
 "%s dumps a database as a text file or to other formats.\n"
@@ -127,18 +128,18 @@ msgstr ""
 "%s ������� ��������� ����� ���� ������ � ���� ����� � ��������� ��� ������ ��������.\n"
 "\n"
 
-#: pg_dump.c:663
+#: pg_dump.c:664
 #: pg_dumpall.c:337
 #: pg_restore.c:359
 msgid "Usage:\n"
 msgstr "�������������:\n"
 
-#: pg_dump.c:664
+#: pg_dump.c:665
 #, c-format
 msgid "  %s [OPTION]... [DBNAME]\n"
 msgstr "  %s [OPTION]... [DBNAME]\n"
 
-#: pg_dump.c:666
+#: pg_dump.c:667
 #: pg_dumpall.c:340
 #: pg_restore.c:362
 msgid ""
@@ -148,16 +149,16 @@ msgstr ""
 "\n"
 "����� ������ ���������:\n"
 
-#: pg_dump.c:667
+#: pg_dump.c:668
 #: pg_restore.c:364
 msgid "  -f, --file=FILENAME      output file name\n"
 msgstr "  -f, --file=FILENAME      ��� ��������� �����\n"
 
-#: pg_dump.c:668
+#: pg_dump.c:669
 msgid "  -F, --format=c|t|p       output file format (custom, tar, plain text)\n"
 msgstr "  -F, --format=c|t|p       ������ ��������� ����� (����������������, tar, ���������)\n"
 
-#: pg_dump.c:669
+#: pg_dump.c:670
 msgid ""
 "  -i, --ignore-version     proceed even when server version mismatches\n"
 "                           pg_dump version\n"
@@ -165,28 +166,28 @@ msgstr ""
 "  -i, --ignore-version     ���������� ���� ���� ������ ������� �� ��������� �\n"
 "                           ������� pg_dump\n"
 
-#: pg_dump.c:671
+#: pg_dump.c:672
 #: pg_restore.c:368
 msgid "  -v, --verbose            verbose mode\n"
 msgstr "  -v, --verbose            ����� ������ ���� ���������\n"
 
-#: pg_dump.c:672
+#: pg_dump.c:673
 msgid "  -Z, --compress=0-9       compression level for compressed formats\n"
 msgstr "  -Z, --compress=0-9       ������� ������ ��� ����������������� ��������\n"
 
-#: pg_dump.c:673
+#: pg_dump.c:674
 #: pg_dumpall.c:343
 #: pg_restore.c:369
 msgid "  --help                   show this help, then exit\n"
 msgstr "  --help                   �������� ��� ��������� � �����\n"
 
-#: pg_dump.c:674
+#: pg_dump.c:675
 #: pg_dumpall.c:344
 #: pg_restore.c:370
 msgid "  --version                output version information, then exit\n"
 msgstr "  --version                �������� ������ � �����\n"
 
-#: pg_dump.c:676
+#: pg_dump.c:677
 #: pg_dumpall.c:345
 msgid ""
 "\n"
@@ -195,44 +196,44 @@ msgstr ""
 "\n"
 "�����, ����������� ������� �����������:\n"
 
-#: pg_dump.c:677
+#: pg_dump.c:678
 #: pg_dumpall.c:346
 msgid "  -a, --data-only          dump only the data, not the schema\n"
 msgstr "  -a, --data-only          ��������� ������ ������, ��� �����\n"
 
-#: pg_dump.c:678
+#: pg_dump.c:679
 msgid "  -b, --blobs              include large objects in dump\n"
 msgstr "  -b, --blobs              �������� ������� ������� � ��������\n"
 
-#: pg_dump.c:679
+#: pg_dump.c:680
 #: pg_restore.c:374
 msgid "  -c, --clean              clean (drop) schema prior to create\n"
 msgstr "  -c, --clean              �������� (��������) ����� ����� ���������\n"
 
-#: pg_dump.c:680
+#: pg_dump.c:681
 msgid "  -C, --create             include commands to create database in dump\n"
 msgstr "  -C, --create             �������� � �������� ������� �������� ���� ������\n"
 
-#: pg_dump.c:681
+#: pg_dump.c:682
 #: pg_dumpall.c:348
 msgid "  -d, --inserts            dump data as INSERT, rather than COPY, commands\n"
 msgstr "  -d, --inserts            ��������� ������ ��� ����� ������ INSERT ������ COPY\n"
 
-#: pg_dump.c:682
+#: pg_dump.c:683
 #: pg_dumpall.c:349
 msgid "  -D, --column-inserts     dump data as INSERT commands with column names\n"
 msgstr "  -D, --column-inserts     ��������� ������ ��� ����� ������ INSERT � �������� �������� �����\n"
 
-#: pg_dump.c:683
+#: pg_dump.c:684
 msgid "  -n, --schema=SCHEMA      dump the named schema only\n"
 msgstr "  -n, --schema=SCHEMA      ��������� ������ ��������� �����\n"
 
-#: pg_dump.c:684
+#: pg_dump.c:685
 #: pg_dumpall.c:351
 msgid "  -o, --oids               include OIDs in dump\n"
 msgstr "  -o, --oids               �������� OID-� � ��������\n"
 
-#: pg_dump.c:685
+#: pg_dump.c:686
 msgid ""
 "  -O, --no-owner           skip restoration of object ownership\n"
 "                           in plain text format\n"
@@ -240,12 +241,12 @@ msgstr ""
 "  -O, --no-owner           ���������� �������������� ��������� ����������\n"
 "                           � ������� \"������ �����\"\n"
 
-#: pg_dump.c:687
+#: pg_dump.c:688
 #: pg_dumpall.c:353
 msgid "  -s, --schema-only        dump only the schema, no data\n"
 msgstr "  -s, --schema-only        ��������� ������ ����� ��� ������\n"
 
-#: pg_dump.c:688
+#: pg_dump.c:689
 msgid ""
 "  -S, --superuser=NAME     specify the superuser user name to use in\n"
 "                           plain text format\n"
@@ -253,16 +254,16 @@ msgstr ""
 "  -S, --superuser=���      ������� ��� �����-������������ ���\n"
 "                           ������� \"������ �����\"\n"
 
-#: pg_dump.c:690
+#: pg_dump.c:691
 msgid "  -t, --table=TABLE        dump the named table only\n"
 msgstr "  -t, --table=�������      ��������� ������ ��������� �������\n"
 
-#: pg_dump.c:691
+#: pg_dump.c:692
 #: pg_dumpall.c:355
 msgid "  -x, --no-privileges      do not dump privileges (grant/revoke)\n"
 msgstr "  -x, --no-privileges      �� ��������� ���������� (grant/revoke)\n"
 
-#: pg_dump.c:692
+#: pg_dump.c:693
 #: pg_dumpall.c:356
 msgid ""
 "  -X disable-dollar-quoting, --disable-dollar-quoting\n"
@@ -271,7 +272,7 @@ msgstr ""
 "  -X disable-dollar-quoting, --disable-dollar-quoting\n"
 "                           ��������� ���������� ������������, ������������ ������������ ��� � ��������� SQL\n"
 
-#: pg_dump.c:694
+#: pg_dump.c:695
 #: pg_dumpall.c:358
 #: pg_restore.c:388
 msgid ""
@@ -281,7 +282,7 @@ msgstr ""
 "  -X disable-triggers, --disable-triggers\n"
 "                           ��������� �������� ��� ������ �������������� ������ ������\n"
 
-#: pg_dump.c:696
+#: pg_dump.c:697
 #: pg_dumpall.c:360
 #: pg_restore.c:390
 msgid ""
@@ -293,7 +294,7 @@ msgstr ""
 "                           ������������ ������� SESSION AUTHORIZATION ������\n"
 "                           ������ OWNER TO\n"
 
-#: pg_dump.c:700
+#: pg_dump.c:701
 #: pg_dumpall.c:364
 #: pg_restore.c:394
 msgid ""
@@ -303,31 +304,31 @@ msgstr ""
 "\n"
 "����� ����������:\n"
 
-#: pg_dump.c:701
+#: pg_dump.c:702
 #: pg_dumpall.c:365
 #: pg_restore.c:395
 msgid "  -h, --host=HOSTNAME      database server host or socket directory\n"
 msgstr "  -h, --host=HOSTNAME     ��� ������� ��� ������ ��� ���������� �������\n"
 
-#: pg_dump.c:702
+#: pg_dump.c:703
 #: pg_dumpall.c:366
 #: pg_restore.c:396
 msgid "  -p, --port=PORT          database server port number\n"
 msgstr "  -p, --port=PORT          ����� ����� ������� ��� ������\n"
 
-#: pg_dump.c:703
+#: pg_dump.c:704
 #: pg_dumpall.c:367
 #: pg_restore.c:397
 msgid "  -U, --username=NAME      connect as specified database user\n"
 msgstr "  -U, --username=NAME       ����������� ��� ��������� ������������\n"
 
-#: pg_dump.c:704
+#: pg_dump.c:705
 #: pg_dumpall.c:368
 #: pg_restore.c:398
 msgid "  -W, --password           force password prompt (should happen automatically)\n"
 msgstr "  -W, --password           �������������� ������ ������ (������ ����������� �������������)\n"
 
-#: pg_dump.c:706
+#: pg_dump.c:707
 msgid ""
 "\n"
 "If no database name is supplied, then the PGDATABASE environment\n"
@@ -339,307 +340,307 @@ msgstr ""
 "��������� PGDATABASE.\n"
 "\n"
 
-#: pg_dump.c:708
+#: pg_dump.c:709
 #: pg_dumpall.c:371
 #: pg_restore.c:402
 msgid "Report bugs to <pgsql-bugs@postgresql.org>.\n"
 msgstr "�������� �� �������: <pgsql-bugs@postgresql.org>.\n"
 
 #: pg_backup_archiver.c:1219
-#: pg_dump.c:716
+#: pg_dump.c:717
 msgid "*** aborted because of error\n"
 msgstr "*** ��������� ���������� ��-�� ������\n"
 
-#: pg_dump.c:798
+#: pg_dump.c:799
 #, c-format
 msgid "dumping contents of table %s\n"
 msgstr "�������� ����������� ������� %s\n"
 
-#: pg_dump.c:910
+#: pg_dump.c:911
 #, c-format
 msgid "SQL command to dump the contents of table \"%s\" failed: PQendcopy() failed.\n"
 msgstr "SQL-������� �� �������� ����������� ������� \"%s\" �� �������: PQendcopy() ����������� �����������.\n"
 
-#: pg_dump.c:911
-#: pg_dump.c:8050
+#: pg_dump.c:912
+#: pg_dump.c:8116
 #, c-format
 msgid "Error message from server: %s"
 msgstr "��������� �� ������ � �������: %s"
 
-#: pg_dump.c:912
-#: pg_dump.c:8051
+#: pg_dump.c:913
+#: pg_dump.c:8117
 #, c-format
 msgid "The command was: %s\n"
 msgstr "������� ����: %s\n"
 
-#: pg_dump.c:1183
+#: pg_dump.c:1184
 msgid "saving database definition\n"
 msgstr "����������� ����������� ���� ������\n"
 
-#: pg_dump.c:1229
+#: pg_dump.c:1230
 #, c-format
 msgid "missing pg_database entry for database \"%s\"\n"
 msgstr "����������� ������ � pg_database ��� ���� ������ \"%s\"\n"
 
-#: pg_dump.c:1236
+#: pg_dump.c:1237
 #, c-format
 msgid "query returned more than one (%d) pg_database entry for database \"%s\"\n"
 msgstr "������ ������ ����� ��� ���� (%d) ������ �� pg_database ��� ���� ������ \"%s\"\n"
 
-#: pg_dump.c:1344
+#: pg_dump.c:1345
 msgid "saving encoding\n"
 msgstr "���������� ���������\n"
 
-#: pg_dump.c:1394
+#: pg_dump.c:1395
 msgid "saving large objects\n"
 msgstr "���������� ������� ��������\n"
 
-#: pg_dump.c:1427
+#: pg_dump.c:1428
 #, c-format
 msgid "dumpBlobs(): could not open large object: %s"
 msgstr "dumpBlobs(): �� ������� ������� ������� ������: %s"
 
-#: pg_dump.c:1440
+#: pg_dump.c:1441
 #, c-format
 msgid "dumpBlobs(): error reading large object: %s"
 msgstr "dumpBlobs(): ������ ��� ������ �������� �������: %s"
 
 # TO REVIEW
-#: pg_dump.c:1557
+#: pg_dump.c:1558
 #, c-format
 msgid "WARNING: owner of schema \"%s\" appears to be invalid\n"
 msgstr "��������: �������� ����� \"%s\" ,��-��������, �� �����\n"
 
-#: pg_dump.c:1574
+#: pg_dump.c:1575
 #, c-format
 msgid "specified schema \"%s\" does not exist\n"
 msgstr "��������� ����� \"%s\" �� ����������\n"
 
-#: pg_dump.c:1611
+#: pg_dump.c:1612
 #, c-format
 msgid "schema with OID %u does not exist\n"
 msgstr "����� � OID %u �� ����������\n"
 
-#: pg_dump.c:1796
+#: pg_dump.c:1797
 #, c-format
 msgid "WARNING: owner of data type \"%s\" appears to be invalid\n"
 msgstr "��������: �������� ���� ������ \"%s\", ��������, �� �����\n"
 
-#: pg_dump.c:1894
+#: pg_dump.c:1895
 #, c-format
 msgid "WARNING: owner of operator \"%s\" appears to be invalid\n"
 msgstr "��������: �������� ��������� \"%s\", ��������, �� �����\n"
 
-#: pg_dump.c:2060
+#: pg_dump.c:2061
 #, c-format
 msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n"
 msgstr "��������: �������� ������ ��������� \"%s\", ��������, �� �����\n"
 
-#: pg_dump.c:2164
+#: pg_dump.c:2165
 #, c-format
 msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n"
 msgstr "��������: �������� ���������� ������� \"%s\", ��������, �� �����\n"
 
-#: pg_dump.c:2298
+#: pg_dump.c:2299
 #, c-format
 msgid "WARNING: owner of function \"%s\" appears to be invalid\n"
 msgstr "��������: �������� ������� \"%s\", ��������, �� �����\n"
 
-#: pg_dump.c:2576
+#: pg_dump.c:2586
 #, c-format
 msgid "WARNING: owner of table \"%s\" appears to be invalid\n"
 msgstr "��������: �������� ������� \"%s\", ��������, �� �����\n"
 
-#: pg_dump.c:2595
+#: pg_dump.c:2605
 #, c-format
 msgid "specified table \"%s\" does not exist\n"
 msgstr "��������� ������� \"%s\" �� ����������\n"
 
-#: pg_dump.c:2702
+#: pg_dump.c:2712
 #, c-format
 msgid "reading indexes for table \"%s\"\n"
 msgstr "������ �������� ��� ������� \"%s\"\n"
 
-#: pg_dump.c:2939
+#: pg_dump.c:2949
 #, c-format
 msgid "reading foreign key constraints for table \"%s\"\n"
 msgstr "������ ����������� �� ������� ����� ��� ������� \"%s\"\n"
 
-#: pg_dump.c:3215
+#: pg_dump.c:3234
 #, c-format
 msgid "reading triggers for table \"%s\"\n"
 msgstr "������ ��������� ��� ������� \"%s\"\n"
 
-#: pg_dump.c:3287
+#: pg_dump.c:3306
 #, c-format
 msgid "expected %d triggers on table \"%s\" but found %d\n"
 msgstr "��������� %d ��������� ��� ������� \"%s\", �� ���� ������� %d\n"
 
-#: pg_dump.c:3332
+#: pg_dump.c:3351
 #, c-format
 msgid "query produced null referenced table name for foreign key trigger \"%s\" on table \"%s\" (OID of table: %u)\n"
 msgstr "� ���������� ������� ���������� ������� ������ �� ��� ������� ��� �������� �� �������� ����� \"%s\" ��� ������� \"%s\" (OID �������: %u)\n"
 
-#: pg_dump.c:3633
+#: pg_dump.c:3652
 #, c-format
 msgid "finding the columns and types of table \"%s\"\n"
 msgstr "����� ������� � ����� ��� ������� \"%s\"\n"
 
-#: pg_dump.c:3719
+#: pg_dump.c:3738
 #, c-format
 msgid "invalid column numbering in table \"%s\"\n"
 msgstr "�������� ��������� ������� � ������� \"%s\"\n"
 
-#: pg_dump.c:3753
+#: pg_dump.c:3772
 #, c-format
 msgid "finding default expressions of table \"%s\"\n"
 msgstr "����� ��������� ��-��������� ��� ������� \"%s\"\n"
 
-#: pg_dump.c:3836
+#: pg_dump.c:3855
 #, c-format
 msgid "invalid adnum value %d for table \"%s\"\n"
 msgstr "�������� �������� adnum  %d  ��� ������� \"%s\"\n"
 
-#: pg_dump.c:3854
+#: pg_dump.c:3873
 #, c-format
 msgid "finding check constraints for table \"%s\"\n"
 msgstr "������������ ����� ��������  ����������� ��� ������� \"%s\"\n"
 
-#: pg_dump.c:3918
+#: pg_dump.c:3937
 #, c-format
 msgid "expected %d check constraints on table \"%s\" but found %d\n"
 msgstr "��������� %d �������� ����������� ��� ������� \"%s\", �� ���� �������: %d\n"
 
-#: pg_dump.c:3920
+#: pg_dump.c:3939
 msgid "(The system catalogs might be corrupted.)\n"
 msgstr "(��������� �������� ����� ���� ����������.)\n"
 
-#: pg_dump.c:4605
-#: pg_dump.c:4771
-#: pg_dump.c:5172
-#: pg_dump.c:5558
-#: pg_dump.c:5857
-#: pg_dump.c:6059
-#: pg_dump.c:6244
+#: pg_dump.c:4628
+#: pg_dump.c:4794
+#: pg_dump.c:5195
+#: pg_dump.c:5581
+#: pg_dump.c:5880
+#: pg_dump.c:6082
+#: pg_dump.c:6267
 #, c-format
 msgid "Got %d rows instead of one from: %s"
 msgstr "�������� �����: %d, ����� ��� ��������� ����� ���� ��: %s"
 
-#: pg_dump.c:4880
+#: pg_dump.c:4903
 #, c-format
 msgid "query yielded no rows: %s\n"
 msgstr "������ ������ ���� �����: %s\n"
 
-#: pg_dump.c:5228
+#: pg_dump.c:5251
 msgid "WARNING: could not parse proargnames array\n"
 msgstr "��������: �� ������� ���������������� ������ proargnames\n"
 
 # TO REVEIW
-#: pg_dump.c:5265
+#: pg_dump.c:5288
 #, c-format
 msgid "unrecognized provolatile value for function \"%s\"\n"
 msgstr "������������ �������� provolatile ��� ������� \"%s\"\n"
 
-#: pg_dump.c:5782
+#: pg_dump.c:5805
 #, c-format
 msgid "WARNING: could not find operator with OID %s\n"
 msgstr "��������: �������� � OID %s �� ������\n"
 
-#: pg_dump.c:6272
+#: pg_dump.c:6295
 #, c-format
 msgid "WARNING: aggregate function %s could not be dumped correctly for this database version; ignored\n"
 msgstr "��������: ���������� ������� %s �� ����� ���� ��������� ��������� ��� ���� ������ ���� ������; ������� ���������������\n"
 
-#: pg_dump.c:6406
+#: pg_dump.c:6429
 #, c-format
 msgid "could not parse ACL list (%s) for object \"%s\" (%s)\n"
 msgstr "�� ������� ���������������� ACL-������ (%s) ��� ������� \"%s\" (%s)\n"
 
-#: pg_dump.c:6500
+#: pg_dump.c:6523
 #, c-format
 msgid "query to obtain definition of view \"%s\" returned no data\n"
 msgstr "������ �� ��������� ����������� ������������� \"%s\" �� ��������� ������\n"
 
-#: pg_dump.c:6503
+#: pg_dump.c:6526
 #, c-format
 msgid "query to obtain definition of view \"%s\" returned more than one definition\n"
 msgstr "������ �� ��������� ����������� ������������� \"%s\" ��������� ����� ��� ���� �����������\n"
 
-#: pg_dump.c:6512
+#: pg_dump.c:6535
 #, c-format
 msgid "definition of view \"%s\" appears to be empty (length zero)\n"
 msgstr "����������� ������������� \"%s\" �������� ������ (����� ����� ����)\n"
 
-#: pg_dump.c:6814
+#: pg_dump.c:6848
 #, c-format
 msgid "invalid column number %d for table \"%s\"\n"
 msgstr "�������� ����� ������� %d ��� ������� \"%s\"\n"
 
-#: pg_dump.c:6916
+#: pg_dump.c:6951
 #, c-format
 msgid "missing index for constraint \"%s\"\n"
 msgstr "����������� ������ ��� ����������� \"%s\"\n"
 
-#: pg_dump.c:7076
+#: pg_dump.c:7111
 #, c-format
 msgid "unrecognized constraint type: %c\n"
 msgstr "�������������� ��� �����������: %c\n"
 
-#: pg_dump.c:7118
+#: pg_dump.c:7172
 msgid "inserted invalid OID\n"
 msgstr "�������� �������� OID\n"
 
-#: pg_dump.c:7124
+#: pg_dump.c:7178
 #, c-format
 msgid "maximum system OID is %u\n"
 msgstr "������������ ��������� OID: %u\n"
 
-#: pg_dump.c:7165
+#: pg_dump.c:7219
 msgid "missing pg_database entry for this database\n"
 msgstr "����������� ������ � pg_database ��� ���� ���� ������\n"
 
-#: pg_dump.c:7170
+#: pg_dump.c:7224
 msgid "found more than one pg_database entry for this database\n"
 msgstr "������� ����� ����� ������ � pg_database ��� ���� ���� ������\n"
 
-#: pg_dump.c:7202
+#: pg_dump.c:7256
 msgid "could not find entry for pg_indexes in pg_class\n"
 msgstr "�� ������� ������ ��� pg_indexes � pg_class\n"
 
-#: pg_dump.c:7207
+#: pg_dump.c:7261
 msgid "found more than one entry for pg_indexes in pg_class\n"
 msgstr "������� ����� ����� ������ ��� pg_indexes � pg_class\n"
 
-#: pg_dump.c:7256
+#: pg_dump.c:7310
 #, c-format
 msgid "query to get data of sequence \"%s\" returned %d rows (expected 1)\n"
 msgstr "������ �� ��������� ������ ������������������ \"%s\" ������ ����� ����� > 1 (%d)\n"
 
-#: pg_dump.c:7265
+#: pg_dump.c:7319
 #, c-format
 msgid "query to get data of sequence \"%s\" returned name \"%s\"\n"
 msgstr "������ �� ��������� ������ ������������������ \"%s\" ������ ��� \"%s\"\n"
 
-#: pg_dump.c:7506
+#: pg_dump.c:7560
 #, c-format
 msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n"
 msgstr "�������� ������ ���������� (%s) ��� �������� \"%s\"  ������� \"%s\"\n"
 
-#: pg_dump.c:7613
+#: pg_dump.c:7667
 #, c-format
 msgid "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows returned"
 msgstr "������ �� ��������� ������� \"%s\" ��� ������� \"%s\" �� ������: �������� �������� ����� �����"
 
-#: pg_dump.c:7681
+#: pg_dump.c:7735
 msgid "reading dependency data\n"
 msgstr "������ ������ � ������������\n"
 
-#: pg_dump.c:7858
+#: pg_dump.c:7924
 #, c-format
 msgid "query yielded %d rows instead of one: %s\n"
 msgstr "������ ������ %d ����� ������ �����: %s\n"
 
-#: pg_dump.c:8045
+#: pg_dump.c:8111
 msgid "SQL command failed\n"
 msgstr "SQL-������� �� �������\n"
 
@@ -1026,38 +1027,44 @@ msgstr "
 msgid "could not set session user to \"%s\": %s"
 msgstr "�� ������� ���������� ������������ ������ � \"%s\": %s"
 
-#: pg_backup_archiver.c:2569
+#: pg_backup_archiver.c:2436
+#: pg_backup_archiver.c:2573
+#, c-format
+msgid "WARNING: don't know how to set owner for object type %s\n"
+msgstr "��������: �� ���� ��� ���������� ��������� ��� ������� ���� %s\n"
+
+#: pg_backup_archiver.c:2606
 msgid "WARNING: requested compression not available in this installation -- archive will be uncompressed\n"
 msgstr "��������: ����������� ������ �� �������� � ���� ��������� -- ����� ����� ����������������\n"
 
-#: pg_backup_archiver.c:2604
+#: pg_backup_archiver.c:2641
 msgid "did not find magic string in file header\n"
 msgstr "�� ������� ���������� ������ � ����� ���������\n"
 
-#: pg_backup_archiver.c:2618
+#: pg_backup_archiver.c:2655
 #, c-format
 msgid "unsupported version (%d.%d) in file header\n"
 msgstr "���������������� ������ (%d.%d) � ��������� �����\n"
 
-#: pg_backup_archiver.c:2623
+#: pg_backup_archiver.c:2660
 #, c-format
 msgid "sanity check on integer size (%lu) failed\n"
 msgstr "�������� �� ������ integer (%lu) �� ������\n"
 
-#: pg_backup_archiver.c:2627
+#: pg_backup_archiver.c:2664
 msgid "WARNING: archive was made on a machine with larger integers, some operations may fail\n"
 msgstr "��������: ����� ��� ������ �� ������ � �������� ������, ������� ��������� �������� ����� �� ������\n"
 
-#: pg_backup_archiver.c:2637
+#: pg_backup_archiver.c:2674
 #, c-format
 msgid "expected format (%d) differs from format found in file (%d)\n"
 msgstr "��������� ������ (%d) ���������� �� ������� ���������� � ����� (%d)\n"
 
-#: pg_backup_archiver.c:2653
+#: pg_backup_archiver.c:2690
 msgid "WARNING: archive is compressed, but this installation does not support compression -- no data will be available\n"
 msgstr "��������: ����� ����, �� ������� ��������� �� ������������ ���������� -- ������ ����� ����������\n"
 
-#: pg_backup_archiver.c:2671
+#: pg_backup_archiver.c:2708
 msgid "WARNING: invalid creation date in header\n"
 msgstr "��������: �������� ���� �������� � ���������\n"
 
@@ -1772,35 +1779,50 @@ msgstr "%s: 
 msgid "%s: query was: %s\n"
 msgstr "%s: ������ ���: %s\n"
 
-#: ../../port/exec.c:193
-#: ../../port/exec.c:307
-#: ../../port/exec.c:350
+#: ../../port/exec.c:194
+#: ../../port/exec.c:308
+#: ../../port/exec.c:351
 #, c-format
 msgid "could not identify current directory: %s"
 msgstr "�� ������� ���������������� ������� ����������: %s"
 
-#: ../../port/exec.c:323
-#: ../../port/exec.c:359
+#: ../../port/exec.c:213
+#, c-format
+msgid "invalid binary \"%s\""
+msgstr "�������� �������� \"%s\""
+
+#: ../../port/exec.c:262
+#, c-format
+msgid "could not read binary \"%s\""
+msgstr "�� ������� ������� �������� \"%s\""
+
+#: ../../port/exec.c:269
+#, c-format
+msgid "could not find a \"%s\" to execute"
+msgstr "\"%s\" �� ������ ��� ����������"
+
+#: ../../port/exec.c:324
+#: ../../port/exec.c:360
 #, c-format
 msgid "could not change directory to \"%s\""
 msgstr "�� ������� �������� ���������� �� \"%s\""
 
-#: ../../port/exec.c:338
+#: ../../port/exec.c:339
 #, c-format
 msgid "could not read symbolic link \"%s\""
 msgstr "�� ���������� ������� ������������� ������ \"%s\""
 
-#: ../../port/exec.c:569
+#: ../../port/exec.c:587
 #, c-format
 msgid "child process exited with exit code %d"
 msgstr "�������� ������� ���������� � ����� ������� %d"
 
-#: ../../port/exec.c:572
+#: ../../port/exec.c:590
 #, c-format
 msgid "child process was terminated by signal %d"
 msgstr "�������� ������� �����ۣ� �������� %d"
 
-#: ../../port/exec.c:575
+#: ../../port/exec.c:593
 #, c-format
 msgid "child process exited with unrecognized status %d"
 msgstr "�������� ������� ���������� � �������������� �������� %d"
diff --git a/src/bin/pg_dump/po/tr.po b/src/bin/pg_dump/po/tr.po
index 7d9989f..2ef27c7 100644
--- a/src/bin/pg_dump/po/tr.po
+++ b/src/bin/pg_dump/po/tr.po
@@ -1,18 +1,19 @@
+# translation of pg_dump-tr.po to 
 # translation of pg_dump-tr.po to Turkish
 # Devrim GUNDUZ <devrim@PostgreSQL.org>, 2004.
-# Nicolai TUFAR <ntufar@tdmsoft.org>, 2004.
+# Nicolai TUFAR <ntufar@tdmsoft.org>, 2004, 2005.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: pg_dump-tr\n"
-"POT-Creation-Date: 2004-09-13 07:40+0100\n"
-"PO-Revision-Date: 2005-01-15 14:04+0200\n"
-"Last-Translator: Nicolai Tufar <ntufar@tdmsoft.com>\n"
-"Language-Team: Turkish <pgsql-tr-genel@PostgreSQL.org>\n"
+"POT-Creation-Date: 2005-04-02 07:12+0100\n"
+"PO-Revision-Date: 2005-04-02 19:16+0300\n"
+"Last-Translator: \n"
+"Language-Team:  <en@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.3.1\n"
+"X-Generator: KBabel 1.9.1\n"
 "X-Poedit-Language: Turkish\n"
 "X-Poedit-Country: TURKEY\n"
 "X-Poedit-Basepath: C:\\pgsql\\src\\bin\\pg_dump\n"
@@ -20,96 +21,83 @@ msgstr ""
 "X-Poedit-SearchPath-1: /home/ntufar/pg/pgsql/src/backend\n"
 "X-Poedit-SearchPath-2: c:\\pgsql\\src\\backend\n"
 
-#: pg_dump.c:364
-#: pg_restore.c:229
+#: pg_dump.c:365 pg_restore.c:228
 msgid "User name: "
 msgstr "Kullanıcı adı: "
 
-#: pg_dump.c:400
-#: pg_dumpall.c:264
-#: pg_restore.c:256
+#: pg_dump.c:401 pg_dumpall.c:263 pg_restore.c:255
 #, c-format
 msgid "%s: invalid -X option -- %s\n"
 msgstr "%s: geçersiz -X seçeneği -- %s\n"
 
-#: pg_dump.c:402
-#: pg_dump.c:416
-#: pg_dump.c:425
-#: pg_dumpall.c:266
-#: pg_dumpall.c:275
-#: pg_dumpall.c:292
-#: pg_restore.c:258
-#: pg_restore.c:268
-#: pg_restore.c:285
+#: pg_dump.c:403 pg_dump.c:417 pg_dump.c:426 pg_dumpall.c:265 pg_dumpall.c:274
+#: pg_dumpall.c:291 pg_restore.c:257 pg_restore.c:267 pg_restore.c:284
 #, c-format
 msgid "Try \"%s --help\" for more information.\n"
 msgstr "Daha fazla bilgi için \"%s --help\" yazabilirsiniz.\n"
 
-#: pg_dump.c:423
-#: pg_dumpall.c:290
+#: pg_dump.c:424 pg_dumpall.c:289
 #, c-format
 msgid "%s: too many command-line arguments (first is \"%s\")\n"
 msgstr "%s: çok fazla komut satırı argümanı (ilki \"%s\" idi)\n"
 
-#: pg_dump.c:436
+#: pg_dump.c:437
 msgid "options \"schema only\" (-s) and \"data only\" (-a) cannot be used together\n"
 msgstr "\"schema only\" (-s) ve \"data only\" (-a) seçenekleri beraber kullanılamaz\n"
 
-#: pg_dump.c:442
+#: pg_dump.c:443
 msgid "options \"clean\" (-c) and \"data only\" (-a) cannot be used together\n"
 msgstr "\"clean\" (-c) ve \"data only\" (-a) seçenekleri beraber kullanılamaz\n"
 
-#: pg_dump.c:448
+#: pg_dump.c:449
 msgid "large-object output not supported for a single table\n"
 msgstr "tek bir tablo için large-object çıktısı desteklenmemektedir\n"
 
-#: pg_dump.c:449
-#: pg_dump.c:456
+#: pg_dump.c:450 pg_dump.c:457
 msgid "use a full dump instead\n"
 msgstr "bunun yerine tam dump kullanınız\n"
 
-#: pg_dump.c:455
+#: pg_dump.c:456
 msgid "large-object output not supported for a single schema\n"
 msgstr "tek bir şema için large-object çıktısı desteklenmemektedir\n"
 
-#: pg_dump.c:462
+#: pg_dump.c:463
 msgid "INSERT (-d, -D) and OID (-o) options cannot be used together\n"
 msgstr "INSERT (-d, -D) ve OID (-o)seçenekleri beraber kullanılamaz\n"
 
-#: pg_dump.c:463
+#: pg_dump.c:464
 msgid "(The INSERT command cannot set OIDs.)\n"
 msgstr "(INSERT komutu OIDleri ayarlayamaz.)\n"
 
-#: pg_dump.c:469
+#: pg_dump.c:470
 msgid "large-object output is not supported for plain-text dump files\n"
 msgstr "düz metin dump dosyaları için large-object çıktısı desteklenmemektedir\n"
 
-#: pg_dump.c:470
+#: pg_dump.c:471
 msgid "(Use a different output format.)\n"
 msgstr "(Değişik bir çıktı biçimi kullanınız.)\n"
 
-#: pg_dump.c:499
+#: pg_dump.c:500
 #, c-format
 msgid "invalid output format \"%s\" specified\n"
 msgstr "Geçersiz çıkto biçimi belirtildi: \"%s\" \n"
 
-#: pg_dump.c:505
+#: pg_dump.c:506
 #, c-format
 msgid "could not open output file \"%s\" for writing\n"
 msgstr "\"%s\" çıktı dosyası yazmak için açılamadı\n"
 
-#: pg_backup_db.c:52
-#: pg_dump.c:516
+#: pg_backup_db.c:52 pg_dump.c:517
 #, c-format
 msgid "could not parse version string \"%s\"\n"
 msgstr "\"%s\" sürüm bilgisi parse edilemedi\n"
 
-#: pg_dump.c:552
+#: pg_dump.c:553
 #, c-format
 msgid "last built-in OID is %u\n"
 msgstr "Son gömülü OID : %u\n"
 
-#: pg_dump.c:663
+#: pg_dump.c:664
 #, c-format
 msgid ""
 "%s dumps a database as a text file or to other formats.\n"
@@ -118,20 +106,16 @@ msgstr ""
 "%s veritabanını metin dosyası ya da diğer biçimlerde dump eder.\n"
 "\n"
 
-#: pg_dump.c:664
-#: pg_dumpall.c:337
-#: pg_restore.c:359
+#: pg_dump.c:665 pg_dumpall.c:336 pg_restore.c:358
 msgid "Usage:\n"
 msgstr "Kullanımı:\n"
 
-#: pg_dump.c:665
+#: pg_dump.c:666
 #, c-format
 msgid "  %s [OPTION]... [DBNAME]\n"
 msgstr "  %s [SEÇENEK]... [VERİTABANI_ADI]\n"
 
-#: pg_dump.c:667
-#: pg_dumpall.c:340
-#: pg_restore.c:362
+#: pg_dump.c:668 pg_dumpall.c:339 pg_restore.c:361
 msgid ""
 "\n"
 "General options:\n"
@@ -139,46 +123,40 @@ msgstr ""
 "\n"
 "Genel seçenekler:\n"
 
-#: pg_dump.c:668
-#: pg_restore.c:364
+#: pg_dump.c:669 pg_restore.c:363
 msgid "  -f, --file=FILENAME      output file name\n"
 msgstr "  -f, --file=DOSYA_ADI      çıktı dosya adı\n"
 
-#: pg_dump.c:669
+#: pg_dump.c:670
 msgid "  -F, --format=c|t|p       output file format (custom, tar, plain text)\n"
 msgstr "  -F, --format=c|t|p       çıktı dosya biçimi (özel, tar, düz metin)\n"
 
-#: pg_dump.c:670
+#: pg_dump.c:671
 msgid ""
 "  -i, --ignore-version     proceed even when server version mismatches\n"
 "                           pg_dump version\n"
 msgstr ""
-"  -i, --ignore-version     sunucunun sürümü ile pg_dump'ın sürümü eşleşmezse\n"
+"  -i, --ignore-version     sunucunun sürümü ile pg_dump'ın sürümü "
+"eşleşmezse\n"
 "                           bile devam et\n"
 
-#: pg_dump.c:672
-#: pg_restore.c:368
+#: pg_dump.c:673 pg_restore.c:367
 msgid "  -v, --verbose            verbose mode\n"
 msgstr "  -v, --verbose            verbose modu\n"
 
-#: pg_dump.c:673
+#: pg_dump.c:674
 msgid "  -Z, --compress=0-9       compression level for compressed formats\n"
 msgstr "  -Z, --compress=0-9       sıkıştırılmış biçimler için sıkıştırma seviyesi\n"
 
-#: pg_dump.c:674
-#: pg_dumpall.c:343
-#: pg_restore.c:369
+#: pg_dump.c:675 pg_dumpall.c:342 pg_restore.c:368
 msgid "  --help                   show this help, then exit\n"
 msgstr "  --help                   bu yardımı gösterir ve çıkar\n"
 
-#: pg_dump.c:675
-#: pg_dumpall.c:344
-#: pg_restore.c:370
+#: pg_dump.c:676 pg_dumpall.c:343 pg_restore.c:369
 msgid "  --version                output version information, then exit\n"
 msgstr "  --version                sürüm bilgisini gösterir ve çıkar\n"
 
-#: pg_dump.c:677
-#: pg_dumpall.c:345
+#: pg_dump.c:678 pg_dumpall.c:344
 msgid ""
 "\n"
 "Options controlling the output content:\n"
@@ -186,44 +164,45 @@ msgstr ""
 "\n"
 "Çıktı içeriğini kontrol eden seçenekler:\n"
 
-#: pg_dump.c:678
-#: pg_dumpall.c:346
+#: pg_dump.c:679 pg_dumpall.c:345
 msgid "  -a, --data-only          dump only the data, not the schema\n"
 msgstr "  -a, --data-only          sadece veriyi dump eder, şemayı etmez\n"
 
-#: pg_dump.c:679
+#: pg_dump.c:680
 msgid "  -b, --blobs              include large objects in dump\n"
 msgstr "  -b, --blobs              dump içine large-objectleri de ekler\n"
 
-#: pg_dump.c:680
-#: pg_restore.c:374
+#: pg_dump.c:681 pg_restore.c:373
 msgid "  -c, --clean              clean (drop) schema prior to create\n"
 msgstr "  -c, --clean              şemayı yaratmadan önce onu temizle (kaldır)\n"
 
-#: pg_dump.c:681
+#: pg_dump.c:682
 msgid "  -C, --create             include commands to create database in dump\n"
-msgstr "  -C, --create             dump'ın içinde veritabanını yaratacak komutları da ekle\n"
+msgstr ""
+"  -C, --create             dump'ın içinde veritabanını yaratacak komutları "
+"da ekle\n"
 
-#: pg_dump.c:682
-#: pg_dumpall.c:348
+#: pg_dump.c:683 pg_dumpall.c:347
 msgid "  -d, --inserts            dump data as INSERT, rather than COPY, commands\n"
-msgstr "  -d, --inserts            verileri COPYkomutları yerine INSERT olarak dump et\n"
+msgstr ""
+"  -d, --inserts            verileri COPYkomutları yerine INSERT olarak dump "
+"et\n"
 
-#: pg_dump.c:683
-#: pg_dumpall.c:349
+#: pg_dump.c:684 pg_dumpall.c:348
 msgid "  -D, --column-inserts     dump data as INSERT commands with column names\n"
-msgstr "  -D, --column-inserts     veriyi kolon adları ile insert komutu olarak dump et.\n"
+msgstr ""
+"  -D, --column-inserts     veriyi kolon adları ile insert komutu olarak dump "
+"et.\n"
 
-#: pg_dump.c:684
+#: pg_dump.c:685
 msgid "  -n, --schema=SCHEMA      dump the named schema only\n"
 msgstr "  -n, --schema=SCHEMA      sadece verilen şemayı dump et\n"
 
-#: pg_dump.c:685
-#: pg_dumpall.c:351
+#: pg_dump.c:686 pg_dumpall.c:350
 msgid "  -o, --oids               include OIDs in dump\n"
 msgstr "  -o, --oids               dump içinde OIDleri de içer\n"
 
-#: pg_dump.c:686
+#: pg_dump.c:687
 msgid ""
 "  -O, --no-owner           skip restoration of object ownership\n"
 "                           in plain text format\n"
@@ -231,12 +210,11 @@ msgstr ""
 "  -O, --no-owner           düz metin biçiminde nesne sahipliğini \n"
 "                          ayarlayan komutlarının oluşturmasını engelle\n"
 
-#: pg_dump.c:688
-#: pg_dumpall.c:353
+#: pg_dump.c:689 pg_dumpall.c:352
 msgid "  -s, --schema-only        dump only the schema, no data\n"
 msgstr "  -s, --schema-only        sadece şemayı dump et, veriyi etme\n"
 
-#: pg_dump.c:689
+#: pg_dump.c:690
 msgid ""
 "  -S, --superuser=NAME     specify the superuser user name to use in\n"
 "                           plain text format\n"
@@ -244,37 +222,33 @@ msgstr ""
 "  -S, --superuser=NAME     kullanılacak superuser kullanıcısının adı\n"
 "                           düz metin olarak\n"
 
-#: pg_dump.c:691
+#: pg_dump.c:692
 msgid "  -t, --table=TABLE        dump the named table only\n"
 msgstr "  -t, --table=TABLE        sadece bu tabloyu aktar\n"
 
-#: pg_dump.c:692
-#: pg_dumpall.c:355
+#: pg_dump.c:693 pg_dumpall.c:354
 msgid "  -x, --no-privileges      do not dump privileges (grant/revoke)\n"
 msgstr "  -x, --no-privileges      yetkileri aktarmayı engelle (grant/revoke)\n"
 
-#: pg_dump.c:693
-#: pg_dumpall.c:356
+#: pg_dump.c:694 pg_dumpall.c:355
 msgid ""
 "  -X disable-dollar-quoting, --disable-dollar-quoting\n"
 "                           disable dollar quoting, use SQL standard quoting\n"
 msgstr ""
 "  -X disable-dollar-quoting, --disable-dollar-quoting\n"
-"                           dollar quoting kullanmayı engelle, standart SQL quoting kullan\n"
+"                           dollar quoting kullanmayı engelle, standart SQL "
+"quoting kullan\n"
 
-#: pg_dump.c:695
-#: pg_dumpall.c:358
-#: pg_restore.c:388
+#: pg_dump.c:696 pg_dumpall.c:357 pg_restore.c:387
 msgid ""
 "  -X disable-triggers, --disable-triggers\n"
 "                           disable triggers during data-only restore\n"
 msgstr ""
 "  -X disable-triggers, --disable-triggers\n"
-"                           sadece veri geri yüklemede tetikleyicileri devre dışı bırak\n"
+"                           sadece veri geri yüklemede tetikleyicileri devre "
+"dışı bırak\n"
 
-#: pg_dump.c:697
-#: pg_dumpall.c:360
-#: pg_restore.c:390
+#: pg_dump.c:698 pg_dumpall.c:359 pg_restore.c:389
 msgid ""
 "  -X use-set-session-authorization, --use-set-session-authorization\n"
 "                           use SESSION AUTHORIZATION commands instead of\n"
@@ -284,9 +258,7 @@ msgstr ""
 "                           OWNER TO komutun yerine\n"
 "                           SESSION AUTHORIZATION komutunu kullan\n"
 
-#: pg_dump.c:701
-#: pg_dumpall.c:364
-#: pg_restore.c:394
+#: pg_dump.c:702 pg_dumpall.c:363 pg_restore.c:393
 msgid ""
 "\n"
 "Connection options:\n"
@@ -294,31 +266,27 @@ msgstr ""
 "\n"
 "Bağlantı Seçenekleri:\n"
 
-#: pg_dump.c:702
-#: pg_dumpall.c:365
-#: pg_restore.c:395
+#: pg_dump.c:703 pg_dumpall.c:364 pg_restore.c:394
 msgid "  -h, --host=HOSTNAME      database server host or socket directory\n"
-msgstr "  -h, --host=HOSTNAME          veritabanı sunucusu adresi ya da soket dizini\n"
+msgstr ""
+"  -h, --host=HOSTNAME          veritabanı sunucusu adresi ya da soket "
+"dizini\n"
 
-#: pg_dump.c:703
-#: pg_dumpall.c:366
-#: pg_restore.c:396
+#: pg_dump.c:704 pg_dumpall.c:365 pg_restore.c:395
 msgid "  -p, --port=PORT          database server port number\n"
 msgstr "  -p PORT         veritabanı sunucusunun port numarası\n"
 
-#: pg_dump.c:704
-#: pg_dumpall.c:367
-#: pg_restore.c:397
+#: pg_dump.c:705 pg_dumpall.c:366 pg_restore.c:396
 msgid "  -U, --username=NAME      connect as specified database user\n"
 msgstr "  -U, --username=KULLANICI_ADI   bağlanılacak kullanıcı adı\n"
 
-#: pg_dump.c:705
-#: pg_dumpall.c:368
-#: pg_restore.c:398
-msgid "  -W, --password           force password prompt (should happen automatically)\n"
+#: pg_dump.c:706 pg_dumpall.c:367 pg_restore.c:397
+msgid ""
+"  -W, --password           force password prompt (should happen "
+"automatically)\n"
 msgstr "  -W              şifre sor (otomatik olarak her zaman açık)\n"
 
-#: pg_dump.c:707
+#: pg_dump.c:708
 msgid ""
 "\n"
 "If no database name is supplied, then the PGDATABASE environment\n"
@@ -330,305 +298,336 @@ msgstr ""
 "kullanılacaktır.\n"
 "\n"
 
-#: pg_dump.c:709
-#: pg_dumpall.c:371
-#: pg_restore.c:402
+#: pg_dump.c:710 pg_dumpall.c:370 pg_restore.c:401
 msgid "Report bugs to <pgsql-bugs@postgresql.org>.\n"
 msgstr "Hataları <pgsql-bugs@postgresql.org> adresine bildirin.\n"
 
-#: pg_backup_archiver.c:1219
-#: pg_dump.c:717
+#: pg_backup_archiver.c:1215 pg_dump.c:718
 msgid "*** aborted because of error\n"
 msgstr "*** hata nedeniyle durduruldu\n"
 
-#: pg_dump.c:799
+#: pg_dump.c:800
 #, c-format
 msgid "dumping contents of table %s\n"
 msgstr "%s tablosunun içeriği aktarılıyor\n"
 
-#: pg_dump.c:911
+#: pg_dump.c:912
 #, c-format
-msgid "SQL command to dump the contents of table \"%s\" failed: PQendcopy() failed.\n"
-msgstr "\"%s\" tablosunu içeriğini aktarmak için üretilen SQL sorgusu başarısız: PQendcopy() başarısız.\n"
+msgid ""
+"SQL command to dump the contents of table \"%s\" failed: PQendcopy() "
+"failed.\n"
+msgstr ""
+"\"%s\" tablosunu içeriğini aktarmak için üretilen SQL sorgusu başarısız: "
+"PQendcopy() başarısız.\n"
 
-#: pg_dump.c:912
-#: pg_dump.c:8116
+#: pg_dump.c:913 pg_dump.c:8248
 #, c-format
 msgid "Error message from server: %s"
 msgstr "Sunucudan hata mesajı alındı: %s"
 
-#: pg_dump.c:913
-#: pg_dump.c:8117
+#: pg_dump.c:914 pg_dump.c:8249
 #, c-format
 msgid "The command was: %s\n"
 msgstr "O sırada yürütülen komut: %s\n"
 
-#: pg_dump.c:1184
+#: pg_dump.c:1185
 msgid "saving database definition\n"
 msgstr "veritabanın tanımı kaydediliyor\n"
 
-#: pg_dump.c:1230
+#: pg_dump.c:1231
 #, c-format
 msgid "missing pg_database entry for database \"%s\"\n"
 msgstr "\"%s\" veritabanı için pg_database kaydı bulunamadı\n"
 
-#: pg_dump.c:1237
+#: pg_dump.c:1238
 #, c-format
 msgid "query returned more than one (%d) pg_database entry for database \"%s\"\n"
-msgstr "\"%2$s\" veritabanı için sorgu, birden fazla (%1$d) pg_database kaydı getirdi\n"
+msgstr ""
+"\"%2$s\" veritabanı için sorgu, birden fazla (%1$d) pg_database kaydı "
+"getirdi\n"
 
-#: pg_dump.c:1345
+#: pg_dump.c:1346
 msgid "saving encoding\n"
 msgstr "dil kodlaması kaydediliyor\n"
 
-#: pg_dump.c:1395
+#: pg_dump.c:1396
 msgid "saving large objects\n"
 msgstr "large objectler kaydediliyor\n"
 
-#: pg_dump.c:1428
+#: pg_dump.c:1429
 #, c-format
 msgid "dumpBlobs(): could not open large object: %s"
 msgstr "dumpBlobs(): large object açılamadı: %s"
 
-#: pg_dump.c:1441
+#: pg_dump.c:1442
 #, c-format
 msgid "dumpBlobs(): error reading large object: %s"
 msgstr "dumpBlobs(): large object okuma hatası: %s"
 
-#: pg_dump.c:1558
+#: pg_dump.c:1559
 #, c-format
 msgid "WARNING: owner of schema \"%s\" appears to be invalid\n"
 msgstr "UYARI: \"%s\" şemasının sahibi geçersizdir\n"
 
-#: pg_dump.c:1575
+#: pg_dump.c:1576
 #, c-format
 msgid "specified schema \"%s\" does not exist\n"
 msgstr "belirlenen \"%s\" şeması mevcut değil\n"
 
-#: pg_dump.c:1612
+#: pg_dump.c:1613
 #, c-format
 msgid "schema with OID %u does not exist\n"
 msgstr "OID %u olan şema mevcut değil\n"
 
-#: pg_dump.c:1797
+#: pg_dump.c:1798
 #, c-format
 msgid "WARNING: owner of data type \"%s\" appears to be invalid\n"
 msgstr "UYARI: \"%s\" veri tipinin sahibi geçersizdir\n"
 
-#: pg_dump.c:1895
+#: pg_dump.c:1896
 #, c-format
 msgid "WARNING: owner of operator \"%s\" appears to be invalid\n"
 msgstr "UYARI: \"%s\" operatörün  sahibi geçersizdir\n"
 
-#: pg_dump.c:2061
+#: pg_dump.c:2062
 #, c-format
 msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n"
 msgstr "UYARI: \"%s\" operator sınıfının sahibi geçersizdir\n"
 
-#: pg_dump.c:2165
+#: pg_dump.c:2166
 #, c-format
 msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n"
 msgstr "UYARI: \"%s\" aggregate fonksiyonun sahibi geçersizdir\n"
 
-#: pg_dump.c:2299
+#: pg_dump.c:2300
 #, c-format
 msgid "WARNING: owner of function \"%s\" appears to be invalid\n"
 msgstr "UYARI: \"%s\" fonksiyonunun sahibi geçersizdir\n"
 
-#: pg_dump.c:2586
+#: pg_dump.c:2587
 #, c-format
 msgid "WARNING: owner of table \"%s\" appears to be invalid\n"
 msgstr "UYARI: \"%s\" tablosunun sahibi geçersizdir\n"
 
-#: pg_dump.c:2605
+#: pg_dump.c:2606
 #, c-format
 msgid "specified table \"%s\" does not exist\n"
 msgstr "belirlenen \"%s\" tablosu mevcut değil\n"
 
-#: pg_dump.c:2712
+#: pg_dump.c:2713
 #, c-format
 msgid "reading indexes for table \"%s\"\n"
 msgstr "\"%s\" tablosunun indexleri okunuyor\n"
 
-#: pg_dump.c:2949
+#: pg_dump.c:2950
 #, c-format
 msgid "reading foreign key constraints for table \"%s\"\n"
 msgstr "\"%s\" tablosunun foreign key bütünlük kısıtlamaları okunuyor\n"
 
-#: pg_dump.c:3234
+#: pg_dump.c:3162
+#, c-format
+msgid ""
+"failed sanity check, parent table OID %u of pg_rewrite entry OID %u not "
+"found\n"
+msgstr "tutarlılık kontrolü başarısız, üst tablo OID'inin %u, pg_rewrite girdisi OID'i %u bulunamadı\n"
+
+#: pg_dump.c:3242
 #, c-format
 msgid "reading triggers for table \"%s\"\n"
 msgstr "\"%s\" tablosunun tetikleyicileri okunuyor\n"
 
-#: pg_dump.c:3306
+#: pg_dump.c:3314
 #, c-format
 msgid "expected %d triggers on table \"%s\" but found %d\n"
 msgstr "\"%2$s\" tablosu zerinde %1$d tetikleyici beklenirken %3$d bulundu\n"
 
-#: pg_dump.c:3351
+#: pg_dump.c:3359
 #, c-format
-msgid "query produced null referenced table name for foreign key trigger \"%s\" on table \"%s\" (OID of table: %u)\n"
-msgstr "\"%2$s\" tablosu üzerindeki \"%1$s\" foreign key tetikleyici için sorgu, null referans edilen tablo sayısı getirdi (tablo OID: %3$u)\n"
+msgid ""
+"query produced null referenced table name for foreign key trigger \"%s\" on "
+"table \"%s\" (OID of table: %u)\n"
+msgstr ""
+"\"%2$s\" tablosu üzerindeki \"%1$s\" foreign key tetikleyici için sorgu, "
+"null referans edilen tablo sayısı getirdi (tablo OID: %3$u)\n"
 
-#: pg_dump.c:3652
+#: pg_dump.c:3660
 #, c-format
 msgid "finding the columns and types of table \"%s\"\n"
 msgstr "\"%s\" tablosunun bütünlük kısıtlamaları ve tipleri bulunuyor\n"
 
-#: pg_dump.c:3738
+#: pg_dump.c:3746
 #, c-format
 msgid "invalid column numbering in table \"%s\"\n"
 msgstr "\"%s\" tablosunda geçersiz kolon numaralandırlması\n"
 
-#: pg_dump.c:3772
+#: pg_dump.c:3780
 #, c-format
 msgid "finding default expressions of table \"%s\"\n"
 msgstr "\"%s\" tablosu için varsayılan ifadeler aranıyor\n"
 
-#: pg_dump.c:3855
+#: pg_dump.c:3863
 #, c-format
 msgid "invalid adnum value %d for table \"%s\"\n"
 msgstr "\"%2$s\" tablosu için geçersiz adnum değeri %1$d\n"
 
-#: pg_dump.c:3873
+#: pg_dump.c:3881
 #, c-format
 msgid "finding check constraints for table \"%s\"\n"
 msgstr "\"%s\" tablosu için bütünlük kısıtlamaları bulunuyor\n"
 
-#: pg_dump.c:3937
+#: pg_dump.c:3945
 #, c-format
 msgid "expected %d check constraints on table \"%s\" but found %d\n"
 msgstr "\"%2$s\" tablosu üzerinde %1$dbütünlük kısıtlaması beklenirken %3$d bulundu\n"
 
-#: pg_dump.c:3939
+#: pg_dump.c:3947
 msgid "(The system catalogs might be corrupted.)\n"
 msgstr "(Sistem kataloğu bozulmuş olabilir.)\n"
 
-#: pg_dump.c:4628
-#: pg_dump.c:4794
-#: pg_dump.c:5195
-#: pg_dump.c:5581
-#: pg_dump.c:5880
-#: pg_dump.c:6082
-#: pg_dump.c:6267
+#: pg_dump.c:4636 pg_dump.c:4802 pg_dump.c:5288 pg_dump.c:5713 pg_dump.c:6012
+#: pg_dump.c:6214 pg_dump.c:6399
 #, c-format
 msgid "Got %d rows instead of one from: %s"
 msgstr "%2$s sorgusundan bir yerine %1$d satır alındı"
 
-#: pg_dump.c:4903
+#: pg_dump.c:4911
 #, c-format
 msgid "query yielded no rows: %s\n"
 msgstr "sorgu hiçbir satır getirmedi: %s\n"
 
-#: pg_dump.c:5251
+#: pg_dump.c:5108
+msgid "WARNING: bogus value in proargmodes array\n"
+msgstr "UYARI: proargnames dizisi içinde beklenmeyen değer\n"
+
+#: pg_dump.c:5348
+msgid "WARNING: could not parse proallargtypes array\n"
+msgstr "UYARI: proallargtypes dizisi ayrıştırılamadı\n"
+
+#: pg_dump.c:5364
+msgid "WARNING: could not parse proargmodes array\n"
+msgstr "UYARI: proargmodes dizisi ayrıştırılamadı\n"
+
+#: pg_dump.c:5378
 msgid "WARNING: could not parse proargnames array\n"
 msgstr "UYARI: proargnames dizisi ayrıştırılamadı\n"
 
-#: pg_dump.c:5288
+#: pg_dump.c:5416
 #, c-format
 msgid "unrecognized provolatile value for function \"%s\"\n"
 msgstr "\"%s\" fonksiyonu için bilinmeyen provolatile değeri\n"
 
-#: pg_dump.c:5805
+#: pg_dump.c:5937
 #, c-format
 msgid "WARNING: could not find operator with OID %s\n"
 msgstr "UYARI: OID %s olan operatör bulunamadı\n"
 
-#: pg_dump.c:6295
+#: pg_dump.c:6427
 #, c-format
-msgid "WARNING: aggregate function %s could not be dumped correctly for this database version; ignored\n"
-msgstr "UYARI: %s aggregate fonksiyonu veritabanın bu sürümünde düzgün dump edilemiyor; atlanıyor\n"
+msgid ""
+"WARNING: aggregate function %s could not be dumped correctly for this "
+"database version; ignored\n"
+msgstr ""
+"UYARI: %s aggregate fonksiyonu veritabanın bu sürümünde düzgün dump "
+"edilemiyor; atlanıyor\n"
 
-#: pg_dump.c:6429
+#: pg_dump.c:6561
 #, c-format
 msgid "could not parse ACL list (%s) for object \"%s\" (%s)\n"
 msgstr "\"%2$s\" nesnesinin ACL listesi (%1$s) ayrıştırılamıyor (%3$s)\n"
 
-#: pg_dump.c:6523
+#: pg_dump.c:6655
 #, c-format
 msgid "query to obtain definition of view \"%s\" returned no data\n"
 msgstr "\"%s\" vew tanımını getirecek sorgu hiçbir veri getirmedi\n"
 
-#: pg_dump.c:6526
+#: pg_dump.c:6658
 #, c-format
 msgid "query to obtain definition of view \"%s\" returned more than one definition\n"
 msgstr "\"%s\" vew tanımını getirecek sorgu birden çık tanımı getirdi\n"
 
-#: pg_dump.c:6535
+#: pg_dump.c:6667
 #, c-format
 msgid "definition of view \"%s\" appears to be empty (length zero)\n"
 msgstr "\"%s\" vew tanımı boştur (uzunluk sıfır)\n"
 
-#: pg_dump.c:6848
+#: pg_dump.c:6980
 #, c-format
 msgid "invalid column number %d for table \"%s\"\n"
 msgstr "\"%2$s\" tablosu için geçersiz sütun numarası %1$d\n"
 
-#: pg_dump.c:6951
+#: pg_dump.c:7083
 #, c-format
 msgid "missing index for constraint \"%s\"\n"
 msgstr "\"%s\" bütünlük kısıtlamasının indexi eksik\n"
 
-#: pg_dump.c:7111
+#: pg_dump.c:7243
 #, c-format
 msgid "unrecognized constraint type: %c\n"
 msgstr "bilinmeyen bütünlük kısıtlama türü: %c\n"
 
-#: pg_dump.c:7172
+#: pg_dump.c:7304
 msgid "inserted invalid OID\n"
 msgstr "geçersiz OID eklendi\n"
 
-#: pg_dump.c:7178
+#: pg_dump.c:7310
 #, c-format
 msgid "maximum system OID is %u\n"
 msgstr "ne yüksek OID değeri: %u\n"
 
-#: pg_dump.c:7219
+#: pg_dump.c:7351
 msgid "missing pg_database entry for this database\n"
 msgstr "bu veritabanı için pg_database kaydı bulunamadı\n"
 
-#: pg_dump.c:7224
+#: pg_dump.c:7356
 msgid "found more than one pg_database entry for this database\n"
 msgstr "bu veritabanı için birden fazla pg_database kaydı bulundu\n"
 
-#: pg_dump.c:7256
+#: pg_dump.c:7388
 msgid "could not find entry for pg_indexes in pg_class\n"
 msgstr "pg_class içinde pg_indexes için kayıt bulunamadı\n"
 
-#: pg_dump.c:7261
+#: pg_dump.c:7393
 msgid "found more than one entry for pg_indexes in pg_class\n"
 msgstr "pg_class içinde pg_indexes için birden çok kayıt bulundu\n"
 
-#: pg_dump.c:7310
+#: pg_dump.c:7442
 #, c-format
 msgid "query to get data of sequence \"%s\" returned %d rows (expected 1)\n"
-msgstr "\"%s\" sequence verisini getirecek sorgu %d satır getirdi tanımı getirdi (bir satır bekleniyordu)\n"
+msgstr ""
+"\"%s\" sequence verisini getirecek sorgu %d satır getirdi tanımı getirdi "
+"(bir satır bekleniyordu)\n"
 
-#: pg_dump.c:7319
+#: pg_dump.c:7451
 #, c-format
 msgid "query to get data of sequence \"%s\" returned name \"%s\"\n"
 msgstr "\"%s\" sequence verisini getirecek sorgu \"%s\" adını getirdi\n"
 
-#: pg_dump.c:7560
+#: pg_dump.c:7692
 #, c-format
 msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n"
-msgstr "\"%3$s\" tablosunun \"%2$s\" tetikleyicisi için geçersiz satır argümanı (%1$s)\n"
+msgstr ""
+"\"%3$s\" tablosunun \"%2$s\" tetikleyicisi için geçersiz satır argümanı (%1"
+"$s)\n"
 
-#: pg_dump.c:7667
+#: pg_dump.c:7799
 #, c-format
-msgid "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows returned"
-msgstr "\"%2$s\" tablosunun \"%1$s\" rule getiren sorgu başarısız: yanlış satır sayısı getirildi"
+msgid ""
+"query to get rule \"%s\" for table \"%s\" failed: wrong number of rows "
+"returned"
+msgstr ""
+"\"%2$s\" tablosunun \"%1$s\" rule getiren sorgu başarısız: yanlış satır "
+"sayısı getirildi"
 
-#: pg_dump.c:7735
+#: pg_dump.c:7867
 msgid "reading dependency data\n"
 msgstr "bağımlılık verileri okunuyor\n"
 
-#: pg_dump.c:7924
+#: pg_dump.c:8056
 #, c-format
 msgid "query yielded %d rows instead of one: %s\n"
 msgstr "%2$s sorgusundan bir yerine %1$d satır alındı\n"
 
-#: pg_dump.c:8111
+#: pg_dump.c:8243
 msgid "SQL command failed\n"
 msgstr "SQL komutu başarısız\n"
 
@@ -704,32 +703,22 @@ msgstr "bütünlük kısıtlamaları okunuyor\n"
 msgid "reading triggers\n"
 msgstr "tetikleyiciler okunuyor\n"
 
-#: common.c:421
-#: common.c:553
-#: common.c:587
-#: pg_backup_archiver.c:619
-#: pg_backup_archiver.c:970
-#: pg_backup_archiver.c:1084
-#: pg_backup_archiver.c:1522
-#: pg_backup_archiver.c:1672
-#: pg_backup_archiver.c:1705
-#: pg_backup_custom.c:141
-#: pg_backup_custom.c:146
-#: pg_backup_custom.c:152
-#: pg_backup_custom.c:167
-#: pg_backup_custom.c:544
-#: pg_backup_db.c:157
-#: pg_backup_db.c:233
-#: pg_backup_files.c:112
-#: pg_backup_tar.c:168
-#: pg_backup_tar.c:960
+#: common.c:421 common.c:553 common.c:587 pg_backup_archiver.c:615
+#: pg_backup_archiver.c:966 pg_backup_archiver.c:1080
+#: pg_backup_archiver.c:1518 pg_backup_archiver.c:1668
+#: pg_backup_archiver.c:1701 pg_backup_custom.c:141 pg_backup_custom.c:146
+#: pg_backup_custom.c:152 pg_backup_custom.c:167 pg_backup_custom.c:544
+#: pg_backup_db.c:157 pg_backup_db.c:233 pg_backup_files.c:112
+#: pg_backup_tar.c:168 pg_backup_tar.c:960
 msgid "out of memory\n"
 msgstr "yetersiz bellek\n"
 
 #: common.c:728
 #, c-format
 msgid "failed sanity check, parent OID %u of table \"%s\" (OID %u) not found\n"
-msgstr "tutarlılık kontrolü başarısız, \"%2$s\" tablosunun (OID %3$u) üst OID %1$u bulunamadı\n"
+msgstr ""
+"tutarlılık kontrolü başarısız, \"%2$s\" tablosunun (OID %3$u) üst OID %1$u "
+"bulunamadı\n"
 
 #: common.c:770
 msgid "could not parse numeric array: too many numbers\n"
@@ -739,320 +728,331 @@ msgstr "numerik dizi ayrıştırılamadı: çok fazla sayı\n"
 msgid "could not parse numeric array: invalid character in number\n"
 msgstr "numerik sizi ayrıştırılamadı: sayıda geçersiz karakter\n"
 
-#: pg_backup_archiver.c:45
+#: pg_backup_archiver.c:42
 msgid "archiver"
 msgstr "arşivleyici"
 
-#: pg_backup_archiver.c:126
+#: pg_backup_archiver.c:124
 msgid "could not close output archive file\n"
 msgstr "çıkış arşiv dosyası kapatılamadı\n"
 
-#: pg_backup_archiver.c:153
+#: pg_backup_archiver.c:150
 msgid "-C and -c are incompatible options\n"
 msgstr "-C ve -c seçenekler bir arada kullanılamaz\n"
 
-#: pg_backup_archiver.c:160
+#: pg_backup_archiver.c:157
 msgid "connecting to database for restore\n"
 msgstr "geri yüklemek için veritabana bağlanılıyor\n"
 
-#: pg_backup_archiver.c:162
+#: pg_backup_archiver.c:159
 msgid "direct database connections are not supported in pre-1.3 archives\n"
-msgstr "1.3 sürüm öncesi arşivlerinde doğrudan veritabanı bağlantıları desteklenmemektedir\n"
+msgstr ""
+"1.3 sürüm öncesi arşivlerinde doğrudan veritabanı bağlantıları "
+"desteklenmemektedir\n"
 
-#: pg_backup_archiver.c:205
+#: pg_backup_archiver.c:201
 msgid "implied data-only restore\n"
 msgstr "örtük salt veri geri yükleme\n"
 
-#: pg_backup_archiver.c:238
+#: pg_backup_archiver.c:234
 #, c-format
 msgid "dropping %s %s\n"
 msgstr "%s %s kaldırılıyor\n"
 
-#: pg_backup_archiver.c:264
-#: pg_backup_archiver.c:266
+#: pg_backup_archiver.c:260 pg_backup_archiver.c:262
 #, c-format
 msgid "warning from original dump file: %s\n"
 msgstr "asıl dump dosyasından uyarı: %s\n"
 
-#: pg_backup_archiver.c:273
+#: pg_backup_archiver.c:269
 #, c-format
 msgid "creating %s %s\n"
 msgstr "%s %s oluşturuluyor\n"
 
-#: pg_backup_archiver.c:281
+#: pg_backup_archiver.c:277
 #, c-format
 msgid "connecting to new database \"%s\"\n"
 msgstr "\"%s\" veritabanına bağlanılıyor\n"
 
-#: pg_backup_archiver.c:306
-msgid "cannot restore from compressed archive (not configured for compression support)\n"
+#: pg_backup_archiver.c:302
+msgid ""
+"cannot restore from compressed archive (not configured for compression "
+"support)\n"
 msgstr "sıkıştırılmış arşivden yüklenemiyor (sıkıştırma desteği dahil edilmemiş)\n"
 
-#: pg_backup_archiver.c:326
+#: pg_backup_archiver.c:322
 msgid "WARNING: skipping large-object restoration\n"
 msgstr "UYARI: large-object yüklemesi atlanıyor\n"
 
-#: pg_backup_archiver.c:336
+#: pg_backup_archiver.c:332
 #, c-format
 msgid "restoring data for table \"%s\"\n"
 msgstr "\"%s\" tablosunun verileri geri yükleniyor\n"
 
-#: pg_backup_archiver.c:368
-#: pg_backup_archiver.c:454
+#: pg_backup_archiver.c:364 pg_backup_archiver.c:450
 #, c-format
 msgid "fixing up large-object cross-reference for \"%s\"\n"
 msgstr "\"%s\" için large-object referansı düzeltiliyor\n"
 
-#: pg_backup_archiver.c:379
+#: pg_backup_archiver.c:375
 #, c-format
 msgid "executing %s %s\n"
 msgstr "%s %s yürütülüyor\n"
 
-#: pg_backup_archiver.c:399
+#: pg_backup_archiver.c:395
 #, c-format
 msgid "setting owner and privileges for %s %s\n"
 msgstr "%s %s için sahiplik ve izinler ayarlanıyor\n"
 
-#: pg_backup_archiver.c:517
+#: pg_backup_archiver.c:513
 msgid "disabling triggers\n"
 msgstr "tetikleyiciler etkisiz hale getiriliyor\n"
 
-#: pg_backup_archiver.c:556
+#: pg_backup_archiver.c:552
 msgid "enabling triggers\n"
 msgstr "tetikleyiciler etkineştiriliyor\n"
 
-#: pg_backup_archiver.c:591
-msgid "internal error -- WriteData cannot be called outside the context of a DataDumper routine\n"
-msgstr "İç hata - WriteData cannot be called outside the context of a DataDumper routine\n"
+#: pg_backup_archiver.c:587
+msgid ""
+"internal error -- WriteData cannot be called outside the context of a "
+"DataDumper routine\n"
+msgstr ""
+"İç hata - WriteData cannot be called outside the context of a DataDumper "
+"routine\n"
 
-#: pg_backup_archiver.c:734
+#: pg_backup_archiver.c:730
 msgid "large-object output not supported in chosen format\n"
 msgstr "seçilen biçimde large-object çıktısı desteklenememektedir\n"
 
-#: pg_backup_archiver.c:774
-#: pg_backup_archiver.c:862
+#: pg_backup_archiver.c:770 pg_backup_archiver.c:858
 msgid "committing large-object transactions\n"
 msgstr "large-object transaction commit ediliyor\n"
 
-#: pg_backup_archiver.c:784
+#: pg_backup_archiver.c:780
 #, c-format
 msgid "restored %d large objects\n"
 msgstr "%d large object geri yüklendi\n"
 
-#: pg_backup_archiver.c:801
+#: pg_backup_archiver.c:797
 msgid "cannot restore large objects without a database connection\n"
 msgstr "veritabanı bağlantısı olmadan large-object yüklemesi yapılamıyor\n"
 
-#: pg_backup_archiver.c:815
+#: pg_backup_archiver.c:811
 msgid "starting large-object transactions\n"
 msgstr "large-object transaction başlatılıyor\n"
 
-#: pg_backup_archiver.c:823
+#: pg_backup_archiver.c:819
 msgid "could not create large object\n"
 msgstr "large object oluşturulamadı\n"
 
-#: pg_backup_archiver.c:825
+#: pg_backup_archiver.c:821
 #, c-format
 msgid "restoring large object with OID %u as %u\n"
 msgstr "UID %u olan large-object %u olarak yükleniyor\n"
 
-#: pg_backup_archiver.c:831
+#: pg_backup_archiver.c:827
 msgid "could not open large object\n"
 msgstr "large object açılamadı\n"
 
-#: pg_backup_archiver.c:846
+#: pg_backup_archiver.c:842
 #, c-format
 msgid "wrote remaining %lu bytes of large-object data (result = %lu)\n"
 msgstr "large-objectin kalan %lu bayt verisi yazılıyor (sonuç = %lu)\n"
 
-#: pg_backup_archiver.c:849
-#: pg_backup_archiver.c:1141
+#: pg_backup_archiver.c:845 pg_backup_archiver.c:1137
 #, c-format
 msgid "could not write to large object (result: %lu, expected: %lu)\n"
 msgstr "large-object yazılamıyor (sonuç: %lu, beklenen: %lu)\n"
 
-#: pg_backup_archiver.c:895
+#: pg_backup_archiver.c:891
 msgid "could not open TOC file\n"
 msgstr "TOC dosyası açılamadı\n"
 
-#: pg_backup_archiver.c:916
+#: pg_backup_archiver.c:912
 #, c-format
 msgid "WARNING: line ignored: %s\n"
 msgstr "UYARI: satır yoksayıldı: %s\n"
 
-#: pg_backup_archiver.c:923
+#: pg_backup_archiver.c:919
 #, c-format
 msgid "could not find entry for ID %d\n"
 msgstr "ID %d için bir alan girdisi bulunamıyor\n"
 
-#: pg_backup_archiver.c:933
-#: pg_backup_files.c:156
-#: pg_backup_files.c:439
+#: pg_backup_archiver.c:929 pg_backup_files.c:156 pg_backup_files.c:439
 #, c-format
 msgid "could not close TOC file: %s\n"
 msgstr "TOC dosyası kapatılamıyor: %s\n"
 
-#: pg_backup_archiver.c:1032
-#: pg_backup_files.c:130
+#: pg_backup_archiver.c:1028 pg_backup_files.c:130
 #, c-format
 msgid "could not open output file: %s\n"
 msgstr "çıktı dosyası açılamadı: %s\n"
 
-#: pg_backup_archiver.c:1048
+#: pg_backup_archiver.c:1044
 #, c-format
 msgid "could not close output file: %s\n"
 msgstr "çıktı dosyası kapatılamadı: %s\n"
 
-#: pg_backup_archiver.c:1137
+#: pg_backup_archiver.c:1133
 #, c-format
 msgid "wrote %lu bytes of large object data (result = %lu)\n"
 msgstr "large object verisinn %lu baytı yazıldı (sonuç = %lu)\n"
 
-#: pg_backup_archiver.c:1159
+#: pg_backup_archiver.c:1155
 msgid "could not write to compressed archive\n"
 msgstr "sıkıştırılmış arşive yazma hatası\n"
 
-#: pg_backup_archiver.c:1167
+#: pg_backup_archiver.c:1163
 msgid "could not write to custom output routine\n"
 msgstr "kullanıcı tanımlı çıktı yordamına yazma hatası\n"
 
-#: pg_backup_archiver.c:1182
+#: pg_backup_archiver.c:1178
 #, c-format
 msgid "could not write to output file (%lu != %lu)\n"
 msgstr "çıktı dosysına yazma hatası (%lu != %lu)\n"
 
-#: pg_backup_archiver.c:1267
+#: pg_backup_archiver.c:1263
 msgid "Error while INITIALIZING:\n"
 msgstr "INITIALIZING sırasında hata:\n"
 
-#: pg_backup_archiver.c:1272
+#: pg_backup_archiver.c:1268
 msgid "Error while PROCESSING TOC:\n"
 msgstr "PROCESSING TOC sırasında hata:\n"
 
-#: pg_backup_archiver.c:1277
+#: pg_backup_archiver.c:1273
 msgid "Error while FINALIZING:\n"
 msgstr "FINALIZING sırasında hata:\n"
 
-#: pg_backup_archiver.c:1282
+#: pg_backup_archiver.c:1278
 #, c-format
 msgid "Error from TOC entry %d; %u %u %s %s %s\n"
 msgstr "TOC girişte hata %d; %u %u %s %s %s\n"
 
-#: pg_backup_archiver.c:1415
+#: pg_backup_archiver.c:1411
 #, c-format
 msgid "Unexpected data offset flag %d\n"
 msgstr "Beklenmeyen veri konum bayrağı %d\n"
 
-#: pg_backup_archiver.c:1428
+#: pg_backup_archiver.c:1424
 msgid "file offset in dump file is too large\n"
 msgstr "dump dosyasında dosya göstergesi çok büyük\n"
 
-#: pg_backup_archiver.c:1540
+#: pg_backup_archiver.c:1536
 msgid "attempting to ascertain archive format\n"
 msgstr "arşiv formatı doğrulanmaya çalışılıyor\n"
 
-#: pg_backup_archiver.c:1560
-#: pg_backup_files.c:148
+#: pg_backup_archiver.c:1556 pg_backup_files.c:148
 #, c-format
 msgid "could not open input file: %s\n"
 msgstr "giriş dosyası açılamadı: %s\n"
 
-#: pg_backup_archiver.c:1567
+#: pg_backup_archiver.c:1563
 #, c-format
 msgid "could not read input file: %s\n"
 msgstr "giriş dosyası okuma hatası: %s\n"
 
-#: pg_backup_archiver.c:1569
+#: pg_backup_archiver.c:1565
 #, c-format
 msgid "input file is too short (read %lu, expected 5)\n"
 msgstr "giriş fazla kısa (okunan: %lu, beklenen: 5)\n"
 
-#: pg_backup_archiver.c:1622
+#: pg_backup_archiver.c:1618
 msgid "input file does not appear to be a valid archive (too short?)\n"
 msgstr "giriş, geçerli bir arşiv değildir (çok kısa?)\n"
 
-#: pg_backup_archiver.c:1625
+#: pg_backup_archiver.c:1621
 msgid "input file does not appear to be a valid archive\n"
 msgstr "girdi geçerli bir arşiv değildir\n"
 
-#: pg_backup_archiver.c:1643
+#: pg_backup_archiver.c:1639
 #, c-format
 msgid "read %lu bytes into lookahead buffer\n"
 msgstr "ileri bakma art alanına %lu bayt okundu\n"
 
-#: pg_backup_archiver.c:1650
+#: pg_backup_archiver.c:1646
 #, c-format
 msgid "could not close the input file after reading header: %s\n"
 msgstr "başlık okumaktan sonra giriş dosysı kapatma hatası: %s\n"
 
-#: pg_backup_archiver.c:1667
+#: pg_backup_archiver.c:1663
 #, c-format
 msgid "allocating AH for %s, format %d\n"
 msgstr "%s için AH ayırılıyor, biçim %d\n"
 
-#: pg_backup_archiver.c:1721
+#: pg_backup_archiver.c:1732
 #, c-format
 msgid "archive format is %d\n"
 msgstr "%d arşiv biçimi\n"
 
-#: pg_backup_archiver.c:1749
+#: pg_backup_archiver.c:1759
 #, c-format
 msgid "unrecognized file format \"%d\"\n"
 msgstr "tanınmayan dosya biçimi: \"%d\"\n"
 
-#: pg_backup_archiver.c:1877
+#: pg_backup_archiver.c:1887
 #, c-format
 msgid "entry ID %d out of range -- perhaps a corrupt TOC\n"
 msgstr "ID %d olan giriş kapsam dışıdır -- bozuk TOC olabilir\n"
 
-#: pg_backup_archiver.c:1962
+#: pg_backup_archiver.c:1972
 #, c-format
 msgid "read TOC entry %d (ID %d) for %s %s\n"
 msgstr "%3$s %4$s için TOC öğe %1$d (ID %2$d) okunuyor\n"
 
-#: pg_backup_archiver.c:2124
+#: pg_backup_archiver.c:2134
 #, c-format
 msgid "could not set session user to \"%s\": %s"
 msgstr "oturum kullanıcısını \"%s\" olarak değiştirilemedi: %s"
 
-#: pg_backup_archiver.c:2436
-#: pg_backup_archiver.c:2573
+#: pg_backup_archiver.c:2460 pg_backup_archiver.c:2597
 #, c-format
 msgid "WARNING: don't know how to set owner for object type %s\n"
 msgstr "UAYRI: %s tipinde nesnenin sahib bilgisi ayarlanamıyor\n"
 
-#: pg_backup_archiver.c:2606
-msgid "WARNING: requested compression not available in this installation -- archive will be uncompressed\n"
-msgstr "UYARI: bu kurulumda sıkıştırma desteklenmemektedir -- arşiv sıkıştırılmayacak\n"
+#: pg_backup_archiver.c:2630
+msgid ""
+"WARNING: requested compression not available in this installation -- archive "
+"will be uncompressed\n"
+msgstr ""
+"UYARI: bu kurulumda sıkıştırma desteklenmemektedir -- arşiv "
+"sıkıştırılmayacak\n"
 
-#: pg_backup_archiver.c:2641
+#: pg_backup_archiver.c:2665
 msgid "did not find magic string in file header\n"
 msgstr "dosya başlığında kod satırı blunamadı\n"
 
-#: pg_backup_archiver.c:2655
+#: pg_backup_archiver.c:2679
 #, c-format
 msgid "unsupported version (%d.%d) in file header\n"
 msgstr "dosya başlığında desteklenmeyen sürüm (%d.%d)\n"
 
-#: pg_backup_archiver.c:2660
+#: pg_backup_archiver.c:2684
 #, c-format
 msgid "sanity check on integer size (%lu) failed\n"
 msgstr "integer boyutu (%lu) turtarlılık kontrolü başarısız\n"
 
-#: pg_backup_archiver.c:2664
-msgid "WARNING: archive was made on a machine with larger integers, some operations may fail\n"
-msgstr "UYARI: arşıv doyası daha büyük integer sayılarınasahip platformda yapılmış, bazı işlemler başarısız olabilir\n"
+#: pg_backup_archiver.c:2688
+msgid ""
+"WARNING: archive was made on a machine with larger integers, some operations "
+"may fail\n"
+msgstr ""
+"UYARI: arşıv doyası daha büyük integer sayılarınasahip platformda yapılmış, "
+"bazı işlemler başarısız olabilir\n"
 
-#: pg_backup_archiver.c:2674
+#: pg_backup_archiver.c:2698
 #, c-format
 msgid "expected format (%d) differs from format found in file (%d)\n"
 msgstr "dosyada bulunan biçim (%2$d) beklenen biçimden (%1$d) farklıdır\n"
 
-#: pg_backup_archiver.c:2690
-msgid "WARNING: archive is compressed, but this installation does not support compression -- no data will be available\n"
-msgstr "UYARI: arşiv sıkıştırılmıştır, ancak bu kurulum sıkıştırmayı desteklemiyor -- veri kaydedilmeyecek\n"
+#: pg_backup_archiver.c:2714
+msgid ""
+"WARNING: archive is compressed, but this installation does not support "
+"compression -- no data will be available\n"
+msgstr ""
+"UYARI: arşiv sıkıştırılmıştır, ancak bu kurulum sıkıştırmayı desteklemiyor "
+"-- veri kaydedilmeyecek\n"
 
-#: pg_backup_archiver.c:2708
+#: pg_backup_archiver.c:2732
 msgid "WARNING: invalid creation date in header\n"
 msgstr "UTAYI: veri başlığında geçersiz tarih\n"
 
@@ -1060,8 +1060,7 @@ msgstr "UTAYI: veri başlığında geçersiz tarih\n"
 msgid "custom archiver"
 msgstr "özel arşiv uygulaması"
 
-#: pg_backup_custom.c:180
-#: pg_backup_custom.c:191
+#: pg_backup_custom.c:180 pg_backup_custom.c:191
 #, c-format
 msgid "could not open archive file \"%s\": %s\n"
 msgstr "\"%s\" arşiv dosyası açılamadı: %s\n"
@@ -1071,8 +1070,12 @@ msgid "invalid OID for large object\n"
 msgstr "large object için geçersiz OID\n"
 
 #: pg_backup_custom.c:447
-msgid "Dumping a specific TOC data block out of order is not supported without ID on this input stream (fseek required)\n"
-msgstr "Sıra dışı TOC veri blokun aktarılması, giriş akımında ID olmadan desteklenmemektedir (fseek gerekir)\n"
+msgid ""
+"Dumping a specific TOC data block out of order is not supported without ID "
+"on this input stream (fseek required)\n"
+msgstr ""
+"Sıra dışı TOC veri blokun aktarılması, giriş akımında ID olmadan "
+"desteklenmemektedir (fseek gerekir)\n"
 
 #: pg_backup_custom.c:462
 #, c-format
@@ -1098,20 +1101,17 @@ msgstr "veritabanı bağlantısı olmadan large-object yüklemesi yapılamıyor\
 msgid "unrecognized data block type %d while restoring archive\n"
 msgstr "arşivi yüklerken bilinmeyen veri blok tipi %d bulundu\n"
 
-#: pg_backup_custom.c:531
-#: pg_backup_custom.c:893
+#: pg_backup_custom.c:531 pg_backup_custom.c:893
 #, c-format
 msgid "could not initialize compression library: %s\n"
 msgstr "sıkıştırma kütüphanesi ilklendirilemedi: %s\n"
 
-#: pg_backup_custom.c:553
-#: pg_backup_custom.c:676
+#: pg_backup_custom.c:553 pg_backup_custom.c:676
 #, c-format
 msgid "could not read data block -- expected %lu, got %lu\n"
 msgstr "veri bloğu okunamıyor -- %lu beklenirken, %lu alındı\n"
 
-#: pg_backup_custom.c:571
-#: pg_backup_custom.c:601
+#: pg_backup_custom.c:571 pg_backup_custom.c:601
 #, c-format
 msgid "could not uncompress data: %s\n"
 msgstr "sıkıştırılmış veri açılamadı: %s\n"
@@ -1126,8 +1126,7 @@ msgstr "sıkıştırma kütüphanesi kapatılamadı: %s\n"
 msgid "could not write byte: %s\n"
 msgstr "bayt yazılamadı: %s\n"
 
-#: pg_backup_custom.c:748
-#: pg_backup_files.c:414
+#: pg_backup_custom.c:748 pg_backup_files.c:414
 #, c-format
 msgid "write error in _WriteBuf (%lu != %lu)\n"
 msgstr "_WriteBuf yazma hatası (%lu != %lu)\n"
@@ -1139,7 +1138,9 @@ msgstr "arşiv dosyası kapatma hatası: %s\n"
 
 #: pg_backup_custom.c:842
 msgid "WARNING: ftell mismatch with expected position -- ftell used\n"
-msgstr "WARNING: ftell fonksiyonun bidirdiği pozisyonu ile beklenen pozisyon uyumsuz -- ftell kullanıldı\n"
+msgstr ""
+"WARNING: ftell fonksiyonun bidirdiği pozisyonu ile beklenen pozisyon uyumsuz "
+"-- ftell kullanıldı\n"
 
 #: pg_backup_custom.c:925
 #, c-format
@@ -1177,20 +1178,20 @@ msgid "proceeding despite version mismatch\n"
 msgstr "sürüm uyuşmazlığa rağmen devam ediliyor\n"
 
 #: pg_backup_db.c:84
-msgid "aborting because of version mismatch  (Use the -i option to proceed anyway.)\n"
-msgstr "sürüm uyuşmazlığı yüzünden işlem duruduruldu (Buna rağmen devam etmek için -i seçeneği kullanın).\n"
+msgid ""
+"aborting because of version mismatch  (Use the -i option to proceed "
+"anyway.)\n"
+msgstr ""
+"sürüm uyuşmazlığı yüzünden işlem duruduruldu (Buna rağmen devam etmek için -"
+"i seçeneği kullanın).\n"
 
 #: pg_backup_db.c:151
 #, c-format
 msgid "connecting to database \"%s\" as user \"%s\"\n"
 msgstr "\"%2$s\" kullanıcısı olarak \"%1$s\" veritabanına bağlanıldı\n"
 
-#: pg_backup_db.c:155
-#: pg_backup_db.c:187
-#: pg_backup_db.c:231
-#: pg_backup_db.c:260
-#: pg_dumpall.c:941
-#: pg_dumpall.c:967
+#: pg_backup_db.c:155 pg_backup_db.c:187 pg_backup_db.c:231 pg_backup_db.c:260
+#: pg_dumpall.c:940 pg_dumpall.c:966
 msgid "Password: "
 msgstr "Şifre: "
 
@@ -1343,8 +1344,7 @@ msgstr "veri dosyası okunduktan sonra kapatılamadı\n"
 msgid "could not open large object TOC for input: %s\n"
 msgstr "girdi için large object TOC açılamadı: %s\n"
 
-#: pg_backup_files.c:375
-#: pg_backup_files.c:545
+#: pg_backup_files.c:375 pg_backup_files.c:545
 #, c-format
 msgid "could not close large object TOC file: %s\n"
 msgstr "large object TOC dosyası kapatılamadı: %s\n"
@@ -1358,8 +1358,7 @@ msgstr "byte yazılamadı\n"
 msgid "could not open large object TOC for output: %s\n"
 msgstr "çıktı için large object TOC açılamadı: %s\n"
 
-#: pg_backup_files.c:493
-#: pg_backup_tar.c:884
+#: pg_backup_files.c:493 pg_backup_tar.c:884
 #, c-format
 msgid "invalid OID for large object (%u)\n"
 msgstr "(%u) large objecti için geçersiz OID\n"
@@ -1437,8 +1436,12 @@ msgstr "geçersiz COPY komutu -- \"%s\" satırında \"copy\" bulunamadı\n"
 
 #: pg_backup_tar.c:656
 #, c-format
-msgid "invalid COPY statement -- could not find \"from stdin\" in string \"%s\" starting at position %lu\n"
-msgstr "geçersiz COPY komutu -- \"%s\" satırında %lu pozisyonunda \"from stdin\" bulunamadı\n"
+msgid ""
+"invalid COPY statement -- could not find \"from stdin\" in string \"%s\" "
+"starting at position %lu\n"
+msgstr ""
+"geçersiz COPY komutu -- \"%s\" satırında %lu pozisyonunda \"from stdin\" "
+"bulunamadı\n"
 
 #: pg_backup_tar.c:692
 #, c-format
@@ -1456,7 +1459,9 @@ msgstr "tar biçimi için arşiv öğesi çok büyük\n"
 #: pg_backup_tar.c:1037
 #, c-format
 msgid "write error appending to tar archive (wrote %lu, attempted %lu)\n"
-msgstr "tar arşivine ekleme yapılırken yazma hatası (yazılan: %lu, yazmak istenilen: %lu)\n"
+msgstr ""
+"tar arşivine ekleme yapılırken yazma hatası (yazılan: %lu, yazmak istenilen: "
+"%lu)\n"
 
 #: pg_backup_tar.c:1043
 #, c-format
@@ -1482,8 +1487,7 @@ msgstr "dosya içerisinde %s yerinden bir sonraki %s yerine geçiş yapılamıyo
 msgid "now at file position %s\n"
 msgstr "şu an dosyanın %s yerinde\n"
 
-#: pg_backup_tar.c:1109
-#: pg_backup_tar.c:1136
+#: pg_backup_tar.c:1109 pg_backup_tar.c:1136
 #, c-format
 msgid "could not find header for file %s in tar archive\n"
 msgstr "tar arşivinde %s dosyası için başlık bulunamadı\n"
@@ -1495,8 +1499,12 @@ msgstr "%s tar öğesi atlandı\n"
 
 #: pg_backup_tar.c:1124
 #, c-format
-msgid "dumping data out of order is not supported in this archive format: %s is required, but comes before %s in the archive file.\n"
-msgstr "bu arşiv biçinide sıra dışı veri aktarımı desteklenmemektedir: %s bekleniyor ancak arşiv dosyasında ondan önce %s gelmektedir.\n"
+msgid ""
+"dumping data out of order is not supported in this archive format: %s is "
+"required, but comes before %s in the archive file.\n"
+msgstr ""
+"bu arşiv biçinide sıra dışı veri aktarımı desteklenmemektedir: %s bekleniyor "
+"ancak arşiv dosyasında ondan önce %s gelmektedir.\n"
 
 #: pg_backup_tar.c:1172
 #, c-format
@@ -1516,53 +1524,56 @@ msgstr "%2$s adresinde %1$s TOC Girişi (uzunluk %3$lu, checksum %4$d)\n"
 #: pg_backup_tar.c:1232
 #, c-format
 msgid "corrupt tar header found in %s (expected %d, computed %d) file position %s\n"
-msgstr "%s dosyasında bozuk tar başlığı (beklenen: %d, hesaplanan: %d) dosya pozisyonu %s\n"
+msgstr ""
+"%s dosyasında bozuk tar başlığı (beklenen: %d, hesaplanan: %d) dosya "
+"pozisyonu %s\n"
 
 #: pg_backup_tar.c:1325
 msgid "could not write tar header\n"
 msgstr "tar başlığı yazma hatası\n"
 
-#: pg_restore.c:283
+#: pg_restore.c:282
 #, c-format
 msgid "%s: cannot specify both -d and -f output\n"
 msgstr "%s: çıktıda hem -d hem de -f belirtilemez\n"
 
-#: pg_restore.c:344
+#: pg_restore.c:343
 #, c-format
 msgid "WARNING: errors ignored on restore: %d\n"
 msgstr "UYARI: yükleme sırasında hata esgeçildi: %d\n"
 
-#: pg_restore.c:358
+#: pg_restore.c:357
 #, c-format
 msgid ""
 "%s restores a PostgreSQL database from an archive created by pg_dump.\n"
 "\n"
 msgstr ""
-"%s, pg_dump tarafından oluşturulan PostgreSQL arşivinden veritabanı geri yükleniyor.\n"
+"%s, pg_dump tarafından oluşturulan PostgreSQL arşivinden veritabanı geri "
+"yükleniyor.\n"
 "\n"
 
-#: pg_restore.c:360
+#: pg_restore.c:359
 #, c-format
 msgid "  %s [OPTION]... [FILE]\n"
 msgstr "  %s [SEÇENEK]... [DOSYA]\n"
 
-#: pg_restore.c:363
+#: pg_restore.c:362
 msgid "  -d, --dbname=NAME        connect to database name\n"
 msgstr "  -d, --dbname=NAME        bağlanacak veritabanının adı\n"
 
-#: pg_restore.c:365
+#: pg_restore.c:364
 msgid "  -F, --format=c|t         specify backup file format\n"
 msgstr "  -F, --format=c|t         yedek dosya biçimi\n"
 
-#: pg_restore.c:366
+#: pg_restore.c:365
 msgid "  -i, --ignore-version     proceed even when server version mismatches\n"
 msgstr "  -i, --ignore-version     sunucunun sürümü uyuşmadığında bile devam et\n"
 
-#: pg_restore.c:367
+#: pg_restore.c:366
 msgid "  -l, --list               print summarized TOC of the archive\n"
 msgstr "  -l, --list               arşivin kısa içeriğini yaz\n"
 
-#: pg_restore.c:372
+#: pg_restore.c:371
 msgid ""
 "\n"
 "Options controlling the restore:\n"
@@ -1570,19 +1581,19 @@ msgstr ""
 "\n"
 "Geri güklemeyi kontrol eden seçenekler:\n"
 
-#: pg_restore.c:373
+#: pg_restore.c:372
 msgid "  -a, --data-only          restore only the data, no schema\n"
 msgstr "  -s, --schema-only        sadece şemayı aktar, veriyi aktarma\n"
 
-#: pg_restore.c:375
+#: pg_restore.c:374
 msgid "  -C, --create             create the target database\n"
 msgstr "  -C, --create             hedef veritabanını oluştur\n"
 
-#: pg_restore.c:376
+#: pg_restore.c:375
 msgid "  -I, --index=NAME         restore named index\n"
 msgstr "  -I, --index=NAME         adı geçen indexi de yükle\n"
 
-#: pg_restore.c:377
+#: pg_restore.c:376
 msgid ""
 "  -L, --use-list=FILENAME  use specified table of contents for ordering\n"
 "                           output from this file\n"
@@ -1590,12 +1601,13 @@ msgstr ""
 "  -L, --use-list=FILENAME  bu dosyadan çıkışını sıralamak için belirli bir\n"
 "                           içerik tablosuınu kullan\n"
 
-#: pg_dumpall.c:352
-#: pg_restore.c:379
+#: pg_dumpall.c:351 pg_restore.c:378
 msgid "  -O, --no-owner           skip restoration of object ownership\n"
-msgstr "  -O, --no-owner           nesne sahipliğini ayarlayan komutlarının oluşturmasını engelle\n"
+msgstr ""
+"  -O, --no-owner           nesne sahipliğini ayarlayan komutlarının "
+"oluşturmasını engelle\n"
 
-#: pg_restore.c:380
+#: pg_restore.c:379
 msgid ""
 "  -P, --function=NAME(args)\n"
 "                           restore named function\n"
@@ -1603,45 +1615,53 @@ msgstr ""
 "  -P, --function=NAME(args)\n"
 "                           adı geçen fonksiyonu geri yükle\n"
 
-#: pg_restore.c:382
+#: pg_restore.c:381
 msgid "  -s, --schema-only        restore only the schema, no data\n"
 msgstr "  -s, --schema-only        sadece şemayı yükle, veriyi yükleme\n"
 
-#: pg_restore.c:383
+#: pg_restore.c:382
 msgid ""
 "  -S, --superuser=NAME     specify the superuser user name to use for\n"
 "                           disabling triggers\n"
 msgstr ""
-"  -S, --superuser=NAME     veritabanı tetikleyicileri için kullanılacak superuser\n"
+"  -S, --superuser=NAME     veritabanı tetikleyicileri için kullanılacak "
+"superuser\n"
 "                           kullanıcı adını ayarla\n"
 
-#: pg_restore.c:385
+#: pg_restore.c:384
 msgid "  -t, --table=NAME         restore named table\n"
 msgstr "  -t, --table=NAME         adı geçen tabloyu yükle\n"
 
-#: pg_restore.c:386
+#: pg_restore.c:385
 msgid "  -T, --trigger=NAME       restore named trigger\n"
 msgstr "  -T, --trigger=NAME         adı geçen triggeri de yükle\n"
 
-#: pg_restore.c:387
-msgid "  -x, --no-privileges      skip restoration of access privileges (grant/revoke)\n"
-msgstr "  -x, --no-privileges      erişim haklarının yüklemesini engelle (grant/revoke)\n"
+#: pg_restore.c:386
+msgid ""
+"  -x, --no-privileges      skip restoration of access privileges (grant/"
+"revoke)\n"
+msgstr ""
+"  -x, --no-privileges      erişim haklarının yüklemesini engelle (grant/"
+"revoke)\n"
 
-#: pg_restore.c:399
+#: pg_restore.c:398
 msgid "  -e, --exit-on-error      exit on error, default is to continue\n"
-msgstr "  -e, --exit-on-error      hata durumunda çık, varsayılan seçenek ise devam et\n"
+msgstr ""
+"  -e, --exit-on-error      hata durumunda çık, varsayılan seçenek ise devam "
+"et\n"
 
-#: pg_restore.c:401
+#: pg_restore.c:400
 msgid ""
 "\n"
 "If no input file name is supplied, then standard input is used.\n"
 "\n"
 msgstr ""
 "\n"
-"Eğer giriş dosya adı verilmemişse, standart giriş akımı (stdin) kulanılacaktır.\n"
+"Eğer giriş dosya adı verilmemişse, standart giriş akımı (stdin) "
+"kulanılacaktır.\n"
 "\n"
 
-#: pg_dumpall.c:149
+#: pg_dumpall.c:148
 #, c-format
 msgid ""
 "The program \"pg_dump\" is needed by %s but was not found in the\n"
@@ -1652,7 +1672,7 @@ msgstr ""
 "\"%s\" ile aynı dizinde bulunamadı.\n"
 "Kurulumunuzu kontrol edin.\n"
 
-#: pg_dumpall.c:156
+#: pg_dumpall.c:155
 #, c-format
 msgid ""
 "The program \"pg_dump\" was found by \"%s\"\n"
@@ -1663,7 +1683,7 @@ msgstr ""
 "ancak %s ile aynı sürüm değildir.\n"
 "Kurulumunuzu kontrol edin.\n"
 
-#: pg_dumpall.c:336
+#: pg_dumpall.c:335
 #, c-format
 msgid ""
 "%s extracts a PostgreSQL database cluster into an SQL script file.\n"
@@ -1672,12 +1692,12 @@ msgstr ""
 "%s, PostgreSQL veritabanı clusteri SQL betik dosyasına aktarıyor.\n"
 "\n"
 
-#: pg_dumpall.c:338
+#: pg_dumpall.c:337
 #, c-format
 msgid "  %s [OPTION]...\n"
 msgstr "  %s [SEÇENEK]...\n"
 
-#: pg_dumpall.c:341
+#: pg_dumpall.c:340
 msgid ""
 "  -i, --ignore-version     proceed even when server version mismatches\n"
 "                           pg_dumpall version\n"
@@ -1685,21 +1705,25 @@ msgstr ""
 "  -i, --ignore-version     sunucunun sürümü uyuşmadığı durumda\n"
 "                           bile devam et\n"
 
-#: pg_dumpall.c:347
+#: pg_dumpall.c:346
 msgid "  -c, --clean              clean (drop) databases prior to create\n"
 msgstr "  -c, --clean              şemayı yaratmadan önce onu temizle (kaldır)\n"
 
-#: pg_dumpall.c:350
+#: pg_dumpall.c:349
 msgid "  -g, --globals-only       dump only global objects, no databases\n"
-msgstr "  -g, --globals-only       sadece global nesneleri aktarıyor, veritabanları aktarmıyor\n"
+msgstr ""
+"  -g, --globals-only       sadece global nesneleri aktarıyor, veritabanları "
+"aktarmıyor\n"
 
-#: pg_dumpall.c:354
-msgid "  -S, --superuser=NAME     specify the superuser user name to use in the dump\n"
+#: pg_dumpall.c:353
+msgid ""
+"  -S, --superuser=NAME     specify the superuser user name to use in the "
+"dump\n"
 msgstr ""
 "  -S, --superuser=NAME     kullanılacak superuser kullanıcısının adı\n"
 "                           düz metin olarak ayarla\n"
 
-#: pg_dumpall.c:370
+#: pg_dumpall.c:369
 msgid ""
 "\n"
 "The SQL script will be written to the standard output.\n"
@@ -1709,69 +1733,67 @@ msgstr ""
 "SQL betik dosyası standart çıktısına (stdout) yazılacaktır.\n"
 "\n"
 
-#: pg_dumpall.c:570
+#: pg_dumpall.c:569
 #, c-format
 msgid "%s: could not parse ACL list (%s) for tablespace \"%s\"\n"
 msgstr "%1$s: \"%3$s\" tablespace için ACL (%2$s) listesi ayrıştırılamadı\n"
 
-#: pg_dumpall.c:702
+#: pg_dumpall.c:701
 #, c-format
 msgid "%s: could not parse ACL list (%s) for database \"%s\"\n"
 msgstr "%1$s: \"%3$s\" veritabanı için ACL (%2$s) listesi ayrıştırılamadı\n"
 
-#: pg_dumpall.c:852
+#: pg_dumpall.c:851
 #, c-format
 msgid "%s: dumping database \"%s\"...\n"
 msgstr "%s: \"%s\" veritabanı aktarılıyor...\n"
 
-#: pg_dumpall.c:858
+#: pg_dumpall.c:857
 #, c-format
 msgid "%s: pg_dump failed on database \"%s\", exiting\n"
 msgstr "%s: pg_dump \"%s\" veritabanında başarısız oldu, çıkılıyor\n"
 
-#: pg_dumpall.c:913
+#: pg_dumpall.c:912
 #, c-format
 msgid "%s: running \"%s\"\n"
 msgstr "%s: \"%s\" yürütülüyor\n"
 
-#: pg_dumpall.c:954
+#: pg_dumpall.c:953
 #, c-format
 msgid "%s: could not connect to database \"%s\"\n"
 msgstr "%s: \"%s\" veritabanına bağlanılamadı\n"
 
-#: pg_dumpall.c:977
+#: pg_dumpall.c:976
 #, c-format
 msgid "%s: could not connect to database \"%s\": %s\n"
 msgstr "%s: \"%s\" veritabanına bağlanılamadı: %s\n"
 
-#: pg_dumpall.c:985
+#: pg_dumpall.c:984
 #, c-format
 msgid "%s: could not get server version\n"
 msgstr "%s: sunucu sürüm bilgisi alınamadı\n"
 
-#: pg_dumpall.c:991
+#: pg_dumpall.c:990
 #, c-format
 msgid "%s: could not parse server version \"%s\"\n"
 msgstr "%s: \"%s\" sürüm bilgisi ayrıştırılamadı\n"
 
-#: pg_dumpall.c:1010
+#: pg_dumpall.c:1009
 #, c-format
 msgid "%s: executing %s\n"
 msgstr "%s: %s yürütülüyor\n"
 
-#: pg_dumpall.c:1016
+#: pg_dumpall.c:1015
 #, c-format
 msgid "%s: query failed: %s"
 msgstr "%s: sorgu başarısız oldu: %s"
 
-#: pg_dumpall.c:1017
+#: pg_dumpall.c:1016
 #, c-format
 msgid "%s: query was: %s\n"
 msgstr "%s: sorgu şu idi: %s\n"
 
-#: ../../port/exec.c:194
-#: ../../port/exec.c:308
-#: ../../port/exec.c:351
+#: ../../port/exec.c:194 ../../port/exec.c:308 ../../port/exec.c:351
 #, c-format
 msgid "could not identify current directory: %s"
 msgstr "geçerli dizin tespit edilemedi: %s"
@@ -1791,8 +1813,7 @@ msgstr "\"%s\" ikili (binary) dosyası okunamadı"
 msgid "could not find a \"%s\" to execute"
 msgstr "\"%s\"  çalıştırmak için bulunamadı"
 
-#: ../../port/exec.c:324
-#: ../../port/exec.c:360
+#: ../../port/exec.c:324 ../../port/exec.c:360
 #, c-format
 msgid "could not change directory to \"%s\""
 msgstr "çalışma dizini \"%s\" olarak değiştirilemedi"
diff --git a/src/bin/pg_resetxlog/po/pt_BR.po b/src/bin/pg_resetxlog/po/pt_BR.po
index aa4135e..d6ae1fc 100644
--- a/src/bin/pg_resetxlog/po/pt_BR.po
+++ b/src/bin/pg_resetxlog/po/pt_BR.po
@@ -1,13 +1,13 @@
 # "pg_resetxlog" translation to Brazilian Portuguese Language.
 # Cesar Suga <sartre@linuxbr.com>, 2002.
 # Roberto Mello <rmello@fslc.usu.edu>, 2002.
-# Euler Taveira de Oliveira <eulerto@yahoo.com.br>, 2003, 2004.
+# Euler Taveira de Oliveira <eulerto@yahoo.com.br>, 2003, 2004, 2005.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: PostgreSQL 8.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-01-15 12:04-0200\n"
+"POT-Creation-Date: 2005-05-08 21:42-0300\n"
 "PO-Revision-Date: 2004-10-27 18:36-0300\n"
 "Last-Translator: Euler Taveira de Oliveira <eulerto@yahoo.com.br>\n"
 "Language-Team: Brazilian Portuguese <desenvolvimento-postgresql@listas."
@@ -21,8 +21,8 @@ msgstr ""
 msgid "%s: invalid argument for option -x\n"
 msgstr "%s: argumento inv�lido para op��o -x\n"
 
-#: pg_resetxlog.c:126 pg_resetxlog.c:141 pg_resetxlog.c:156 pg_resetxlog.c:163
-#: pg_resetxlog.c:170 pg_resetxlog.c:176 pg_resetxlog.c:184
+#: pg_resetxlog.c:126 pg_resetxlog.c:141 pg_resetxlog.c:156 pg_resetxlog.c:171
+#: pg_resetxlog.c:178 pg_resetxlog.c:185 pg_resetxlog.c:191 pg_resetxlog.c:199
 #, c-format
 msgid "Try \"%s --help\" for more information.\n"
 msgstr "Tente \"%s --help\" para obter mais informa��o.\n"
@@ -30,7 +30,7 @@ msgstr "Tente \"%s --help\" para obter mais informa
 #: pg_resetxlog.c:131
 #, c-format
 msgid "%s: transaction ID (-x) must not be 0\n"
-msgstr "%s: ID da transa��o (-x) n�o deve ser 0\n"
+msgstr "%s: ID de transa��o (-x) n�o deve ser 0\n"
 
 #: pg_resetxlog.c:140
 #, c-format
@@ -42,32 +42,42 @@ msgstr "%s: argumento inv
 msgid "%s: OID (-o) must not be 0\n"
 msgstr "%s: OID (-o) n�o deve ser 0\n"
 
-#: pg_resetxlog.c:155 pg_resetxlog.c:162 pg_resetxlog.c:169
+#: pg_resetxlog.c:155
+#, c-format
+msgid "%s: invalid argument for option -m\n"
+msgstr "%s: argumento inv�lido para op��o -m\n"
+
+#: pg_resetxlog.c:161
+#, c-format
+msgid "%s: multi transaction ID (-m) must not be 0\n"
+msgstr "%s: ID de multi-transa��o (-m) n�o deve ser 0\n"
+
+#: pg_resetxlog.c:170 pg_resetxlog.c:177 pg_resetxlog.c:184
 #, c-format
 msgid "%s: invalid argument for option -l\n"
 msgstr "%s: argumento inv�lido para op��o -l\n"
 
-#: pg_resetxlog.c:183
+#: pg_resetxlog.c:198
 #, c-format
 msgid "%s: no data directory specified\n"
 msgstr "%s: nenhum diret�rio de dados especificado\n"
 
-#: pg_resetxlog.c:198
+#: pg_resetxlog.c:213
 #, c-format
 msgid "%s: cannot be executed by \"root\"\n"
 msgstr "%s: n�o pode ser executado pelo \"root\"\n"
 
-#: pg_resetxlog.c:200
+#: pg_resetxlog.c:215
 #, c-format
 msgid "You must run %s as the PostgreSQL superuser.\n"
 msgstr "Voc� deve executar %s como um super-usu�rio do PostgreSQL.\n"
 
-#: pg_resetxlog.c:222 pg_resetxlog.c:321
+#: pg_resetxlog.c:237 pg_resetxlog.c:339
 #, c-format
 msgid "%s: could not open file \"%s\" for reading: %s\n"
 msgstr "%s: n�o p�de abrir arquivo \"%s\" para leitura: %s\n"
 
-#: pg_resetxlog.c:228
+#: pg_resetxlog.c:243
 #, c-format
 msgid ""
 "%s: lock file \"%s\" exists\n"
@@ -77,7 +87,7 @@ msgstr ""
 "O servidor est� executando? Se n�o, apague o arquivo de bloqueio e tente "
 "novamente.\n"
 
-#: pg_resetxlog.c:270
+#: pg_resetxlog.c:288
 #, c-format
 msgid ""
 "\n"
@@ -86,7 +96,7 @@ msgstr ""
 "\n"
 "Se estes valores lhe parecem aceit�veis, use -f para for�ar o rein�cio.\n"
 
-#: pg_resetxlog.c:282
+#: pg_resetxlog.c:300
 #, c-format
 msgid ""
 "The database server was not shut down cleanly.\n"
@@ -97,12 +107,12 @@ msgstr ""
 "Reiniciar o log de transa��o pode causar perdas de dados.\n"
 "Se voc� quer continuar, use -f para for�ar o rein�cio.\n"
 
-#: pg_resetxlog.c:295
+#: pg_resetxlog.c:313
 #, c-format
 msgid "Transaction log reset\n"
 msgstr "Log de transa��o reiniciado\n"
 
-#: pg_resetxlog.c:324
+#: pg_resetxlog.c:342
 #, c-format
 msgid ""
 "If you are sure the data directory path is correct, execute\n"
@@ -114,34 +124,34 @@ msgstr ""
 "  touch %s\n"
 "e tente novamente.\n"
 
-#: pg_resetxlog.c:337
+#: pg_resetxlog.c:355
 #, c-format
 msgid "%s: could not read file \"%s\": %s\n"
 msgstr "%s: n�o p�de ler arquivo \"%s\": %s\n"
 
-#: pg_resetxlog.c:360
+#: pg_resetxlog.c:378
 #, c-format
 msgid "%s: pg_control exists but has invalid CRC; proceed with caution\n"
 msgstr "%s: pg_control existe mas tem CRC inv�lido: prossiga com cuidado\n"
 
-#: pg_resetxlog.c:369
+#: pg_resetxlog.c:387
 #, c-format
 msgid "%s: pg_control exists but is broken or unknown version; ignoring it\n"
 msgstr ""
 "%s: pg_control existe mas n�o funciona ou sua vers�o � desconhecida; "
 "ignorando-o\n"
 
-#: pg_resetxlog.c:433
+#: pg_resetxlog.c:452
 #, c-format
 msgid "%s: invalid LC_COLLATE setting\n"
 msgstr "%s: defini��o do LC_COLLATE inv�lido\n"
 
-#: pg_resetxlog.c:440
+#: pg_resetxlog.c:459
 #, c-format
 msgid "%s: invalid LC_CTYPE setting\n"
 msgstr "%s: defini��o do LC_CTYPE inv�lido\n"
 
-#: pg_resetxlog.c:464
+#: pg_resetxlog.c:483
 #, c-format
 msgid ""
 "Guessed pg_control values:\n"
@@ -150,7 +160,7 @@ msgstr ""
 "Valores supostos do pg_control:\n"
 "\n"
 
-#: pg_resetxlog.c:466
+#: pg_resetxlog.c:485
 #, c-format
 msgid ""
 "pg_control values:\n"
@@ -159,95 +169,100 @@ msgstr ""
 "valores do pg_control:\n"
 "\n"
 
-#: pg_resetxlog.c:475
+#: pg_resetxlog.c:494
 #, c-format
 msgid "pg_control version number:            %u\n"
 msgstr "n�mero da vers�o do pg_control:       %u\n"
 
-#: pg_resetxlog.c:476
+#: pg_resetxlog.c:495
 #, c-format
 msgid "Catalog version number:               %u\n"
 msgstr "N�mero da vers�o do cat�logo:         %u\n"
 
-#: pg_resetxlog.c:477
+#: pg_resetxlog.c:496
 #, c-format
 msgid "Database system identifier:           %s\n"
 msgstr "Identificador do sistema de banco de dados:   %s\n"
 
-#: pg_resetxlog.c:478
+#: pg_resetxlog.c:497
 #, c-format
 msgid "Current log file ID:                  %u\n"
 msgstr "ID do arquivo de log atual:           %u\n"
 
-#: pg_resetxlog.c:479
+#: pg_resetxlog.c:498
 #, c-format
 msgid "Next log file segment:                %u\n"
 msgstr "Pr�ximo segmento do arquivo de log:   %u\n"
 
-#: pg_resetxlog.c:480
+#: pg_resetxlog.c:499
 #, c-format
 msgid "Latest checkpoint's TimeLineID:       %u\n"
 msgstr "�ltimo TimeLineID do ponto de controle:         %u\n"
 
-#: pg_resetxlog.c:481
+#: pg_resetxlog.c:500
 #, c-format
 msgid "Latest checkpoint's NextXID:          %u\n"
 msgstr "�ltimo NextXID do ponto de controle:         %u\n"
 
-#: pg_resetxlog.c:482
+#: pg_resetxlog.c:501
 #, c-format
 msgid "Latest checkpoint's NextOID:          %u\n"
 msgstr "�ltimo NextOID do ponto de controle:         %u\n"
 
-#: pg_resetxlog.c:483
+#: pg_resetxlog.c:502
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId:  %u\n"
+msgstr "�ltimo NextMultiXactId do ponto de controle: %u\n"
+
+#: pg_resetxlog.c:503
 #, c-format
 msgid "Database block size:                  %u\n"
 msgstr "Tamanho do bloco do banco de dados:   %u\n"
 
-#: pg_resetxlog.c:484
+#: pg_resetxlog.c:504
 #, c-format
 msgid "Blocks per segment of large relation: %u\n"
 msgstr "Blocos por segmento da rela��o grande:   %u\n"
 
-#: pg_resetxlog.c:485
+#: pg_resetxlog.c:505
 #, c-format
 msgid "Maximum length of identifiers:        %u\n"
 msgstr "Tamanho m�ximo de identificadores:        %u\n"
 
-#: pg_resetxlog.c:486
+#: pg_resetxlog.c:506
 #, c-format
-msgid "Maximum number of function arguments: %u\n"
-msgstr "N�mero m�ximo de argumentos da fun��o: %u\n"
+msgid "Maximum columns in an index:          %u\n"
+msgstr "N�mero m�ximo de colunas em um �ndice:        %u\n"
 
-#: pg_resetxlog.c:487
+#: pg_resetxlog.c:507
 #, c-format
 msgid "Date/time type storage:               %s\n"
 msgstr "Tipo de data/hora do reposit�rio:               %s\n"
 
-#: pg_resetxlog.c:488
+#: pg_resetxlog.c:508
 msgid "64-bit integers"
 msgstr "inteiros de 64 bits"
 
-#: pg_resetxlog.c:488
+#: pg_resetxlog.c:508
 msgid "floating-point numbers"
 msgstr "n�meros de ponto flutuante"
 
-#: pg_resetxlog.c:489
+#: pg_resetxlog.c:509
 #, c-format
 msgid "Maximum length of locale name:        %u\n"
 msgstr "Tamanho m�ximo do nome da localidade:        %u\n"
 
-#: pg_resetxlog.c:490
+#: pg_resetxlog.c:510
 #, c-format
 msgid "LC_COLLATE:                           %s\n"
 msgstr "LC_COLLATE:                           %s\n"
 
-#: pg_resetxlog.c:491
+#: pg_resetxlog.c:511
 #, c-format
 msgid "LC_CTYPE:                             %s\n"
 msgstr "LC_CTYPE:                             %s\n"
 
-#: pg_resetxlog.c:552
+#: pg_resetxlog.c:572
 #, c-format
 msgid ""
 "%s: internal error -- sizeof(ControlFileData) is too large ... fix xlog.c\n"
@@ -255,47 +270,47 @@ msgstr ""
 "%s: erro interno -- sizeof(ControlFileData) � muito grande ... conserte o "
 "xlog.c\n"
 
-#: pg_resetxlog.c:565
+#: pg_resetxlog.c:585
 #, c-format
 msgid "%s: could not create pg_control file: %s\n"
 msgstr "%s: n�o p�de criar arquivo pg_control: %s\n"
 
-#: pg_resetxlog.c:576
+#: pg_resetxlog.c:596
 #, c-format
 msgid "%s: could not write pg_control file: %s\n"
 msgstr "%s: n�o p�de escrever no arquivo pg_control: %s\n"
 
-#: pg_resetxlog.c:583 pg_resetxlog.c:739
+#: pg_resetxlog.c:603 pg_resetxlog.c:759
 #, c-format
 msgid "%s: fsync error: %s\n"
 msgstr "%s: erro ao executar fsync: %s\n"
 
-#: pg_resetxlog.c:604
+#: pg_resetxlog.c:624
 #, c-format
 msgid "%s: could not open directory \"%s\": %s\n"
 msgstr "%s: n�o p�de abrir diret�rio \"%s\": %s\n"
 
-#: pg_resetxlog.c:618
+#: pg_resetxlog.c:638
 #, c-format
 msgid "%s: could not delete file \"%s\": %s\n"
 msgstr "%s: n�o p�de apagar arquivo \"%s\": %s\n"
 
-#: pg_resetxlog.c:637
+#: pg_resetxlog.c:657
 #, c-format
 msgid "%s: could not read from directory \"%s\": %s\n"
 msgstr "%s: n�o p�de ler diret�rio \"%s\": %s\n"
 
-#: pg_resetxlog.c:706
+#: pg_resetxlog.c:726
 #, c-format
 msgid "%s: could not open file \"%s\": %s\n"
 msgstr "%s: n�o p�de abrir arquivo \"%s\": %s\n"
 
-#: pg_resetxlog.c:717 pg_resetxlog.c:731
+#: pg_resetxlog.c:737 pg_resetxlog.c:751
 #, c-format
 msgid "%s: could not write file \"%s\": %s\n"
 msgstr "%s: n�o p�de escrever no arquivo \"%s\": %s\n"
 
-#: pg_resetxlog.c:750
+#: pg_resetxlog.c:770
 #, c-format
 msgid ""
 "%s resets the PostgreSQL transaction log.\n"
@@ -304,7 +319,7 @@ msgstr ""
 "%s reinicia o log de transa��o do PostgreSQL.\n"
 "\n"
 
-#: pg_resetxlog.c:751
+#: pg_resetxlog.c:771
 #, c-format
 msgid ""
 "Usage:\n"
@@ -315,17 +330,17 @@ msgstr ""
 "  %s [OP��O] DIRDADOS\n"
 "\n"
 
-#: pg_resetxlog.c:752
+#: pg_resetxlog.c:772
 #, c-format
 msgid "Options:\n"
 msgstr "Op��es:\n"
 
-#: pg_resetxlog.c:753
+#: pg_resetxlog.c:773
 #, c-format
 msgid "  -f              force update to be done\n"
 msgstr "  -f                for�a atualiza��o\n"
 
-#: pg_resetxlog.c:754
+#: pg_resetxlog.c:774
 #, c-format
 msgid ""
 "  -l TLI,FILE,SEG force minimum WAL starting location for new transaction "
@@ -334,7 +349,7 @@ msgstr ""
 "  -l TLI,FILE,SEG     for�a local inicial m�nimo do WAL para novo log de "
 "transa��o\n"
 
-#: pg_resetxlog.c:755
+#: pg_resetxlog.c:775
 #, c-format
 msgid ""
 "  -n              no update, just show extracted control values (for "
@@ -343,31 +358,39 @@ msgstr ""
 "  -n                sem atualiza��o, mostra somente valores de controle "
 "extra�dos (para teste)\n"
 
-#: pg_resetxlog.c:756
+#: pg_resetxlog.c:776
 #, c-format
 msgid "  -o OID          set next OID\n"
-msgstr "  -o OID            ajusta pr�ximo OID\n"
+msgstr "  -o OID            define pr�ximo OID\n"
 
-#: pg_resetxlog.c:757
+#: pg_resetxlog.c:777
 #, c-format
 msgid "  -x XID          set next transaction ID\n"
-msgstr "  -x XID            ajusta pr�ximo ID de transa��o\n"
+msgstr "  -x XID            define pr�ximo ID de transa��o\n"
 
-#: pg_resetxlog.c:758
+#: pg_resetxlog.c:778
+#, c-format
+msgid "  -m multiXID     set next multi transaction ID\n"
+msgstr "  -m multiXID       define pr�ximo ID de multi-transa��o\n"
+
+#: pg_resetxlog.c:779
 #, c-format
 msgid "  --help          show this help, then exit\n"
 msgstr "  --help            mostra esta ajuda e sai\n"
 
-#: pg_resetxlog.c:759
+#: pg_resetxlog.c:780
 #, c-format
 msgid "  --version       output version information, then exit\n"
 msgstr "  --version         mostra informa��o sobre a vers�o e sai\n"
 
-#: pg_resetxlog.c:760
+#: pg_resetxlog.c:781
 #, c-format
 msgid ""
 "\n"
 "Report bugs to <pgsql-bugs@postgresql.org>.\n"
 msgstr ""
 "\n"
-"Reporte erros a <pgsql-bugs@postgresql.org>.\n"
+"Relate erros a <pgsql-bugs@postgresql.org>.\n"
+
+#~ msgid "Maximum number of function arguments: %u\n"
+#~ msgstr "N�mero m�ximo de argumentos da fun��o: %u\n"
diff --git a/src/bin/pg_resetxlog/po/ru.po b/src/bin/pg_resetxlog/po/ru.po
index a15b298..59b9b3f 100644
--- a/src/bin/pg_resetxlog/po/ru.po
+++ b/src/bin/pg_resetxlog/po/ru.po
@@ -1,9 +1,13 @@
 # ru.po
 # PG_RESETXLOG Translated Messages into the Russian Language (KOI8-R)
 #
+# Copyright (c) 2002-2005 Serguei A. Mokhov, mokhov@cs.concordia.ca
+# Distributed under the same licensing terms as PostgreSQL itself.
+#
 # $PostgreSQL$
 #
 # ChangeLog:
+#   - January 17, 2005: Complete translation for 8.0, Serguei A. Mokhov <mokhov@cs.concordia.ca>
 #   - December, 2004: Corrections and improvements by Oleg Bartunov <oleg@sai.msu.su>
 #   - April 6 - August 11, 2004: Updates for 8.0; <mokhov@cs.concordia.ca>
 #   - July 24 - August 23, 2003: Updates for 7.4.*; <mokhov@cs.concordia.ca>
@@ -14,62 +18,74 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PostgreSQL 8.0\n"
-"POT-Creation-Date: 2004-08-11 19:15-0300\n"
-"PO-Revision-Date: 2004-08-11 23:32-0500\n"
+"POT-Creation-Date: 2005-01-17 19:06+0000\n"
+"PO-Revision-Date: 2005-01-17 16:01-0500\n"
 "Last-Translator: Serguei A. Mokhov <mokhov@cs.concordia.ca>\n"
 "Language-Team: pgsql-rus <pgsql-rus@yahoogroups.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=koi8-r\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: pg_resetxlog.c:120
+#: pg_resetxlog.c:125
 #, c-format
 msgid "%s: invalid argument for option -x\n"
 msgstr "%s: ������������ �������� ��� ����� -x\n"
 
-#: pg_resetxlog.c:121
-#: pg_resetxlog.c:136
-#: pg_resetxlog.c:151
-#: pg_resetxlog.c:158
-#: pg_resetxlog.c:164
-#: pg_resetxlog.c:172
+#: pg_resetxlog.c:126
+#: pg_resetxlog.c:141
+#: pg_resetxlog.c:156
+#: pg_resetxlog.c:163
+#: pg_resetxlog.c:170
+#: pg_resetxlog.c:176
+#: pg_resetxlog.c:184
 #, c-format
 msgid "Try \"%s --help\" for more information.\n"
 msgstr "�������� \"%s --help\" ��� ����� ��������� ����������.\n"
 
-#: pg_resetxlog.c:126
+#: pg_resetxlog.c:131
 #, c-format
 msgid "%s: transaction ID (-x) must not be 0\n"
 msgstr "%s: ID ���������� (-x) �� ������ ���� 0\n"
 
-#: pg_resetxlog.c:135
+#: pg_resetxlog.c:140
 #, c-format
 msgid "%s: invalid argument for option -o\n"
 msgstr "%s: ��������� �������� ��� ����� -o\n"
 
-#: pg_resetxlog.c:141
+#: pg_resetxlog.c:146
 #, c-format
 msgid "%s: OID (-o) must not be 0\n"
 msgstr "%s: OID (-o) �� ������ ���� 0\n"
 
-#: pg_resetxlog.c:150
-#: pg_resetxlog.c:157
+#: pg_resetxlog.c:155
+#: pg_resetxlog.c:162
+#: pg_resetxlog.c:169
 #, c-format
 msgid "%s: invalid argument for option -l\n"
 msgstr "%s: ��������� �������� ��� ����� -l\n"
 
-#: pg_resetxlog.c:171
+#: pg_resetxlog.c:183
 #, c-format
 msgid "%s: no data directory specified\n"
 msgstr "%s: �� ������� ���������� ������\n"
 
-#: pg_resetxlog.c:191
-#: pg_resetxlog.c:287
+#: pg_resetxlog.c:198
+#, c-format
+msgid "%s: cannot be executed by \"root\"\n"
+msgstr "%s: �� ����� ����������� \"root\"��\n"
+
+#: pg_resetxlog.c:200
+#, c-format
+msgid "You must run %s as the PostgreSQL superuser.\n"
+msgstr "�� ������ ��������� %s ��� ������������� PostgreSQL.\n"
+
+#: pg_resetxlog.c:222
+#: pg_resetxlog.c:321
 #, c-format
 msgid "%s: could not open file \"%s\" for reading: %s\n"
 msgstr "%s: �� ������� ������� ���� \"%s\" ��� ������: %s\n"
 
-#: pg_resetxlog.c:197
+#: pg_resetxlog.c:228
 #, c-format
 msgid ""
 "%s: lock file \"%s\" exists\n"
@@ -78,7 +94,7 @@ msgstr ""
 "%s: ��������� lock-���� \"%s\"\n"
 "������� �� ������? ���� ���, ������� ���� ���� � ���������� �����.\n"
 
-#: pg_resetxlog.c:236
+#: pg_resetxlog.c:270
 msgid ""
 "\n"
 "If these values seem acceptable, use -f to force reset.\n"
@@ -86,7 +102,7 @@ msgstr ""
 "\n"
 "���� ��� �������� �������� �����������, ����������� -f ��� ���������������  ������.\n"
 
-#: pg_resetxlog.c:248
+#: pg_resetxlog.c:282
 msgid ""
 "The database server was not shut down cleanly.\n"
 "Resetting the transaction log may cause data to be lost.\n"
@@ -96,11 +112,11 @@ msgstr ""
 "����� ���� ���������� ����� �������� � ������ ������.\n"
 "���� �� �ӣ �� ������ ���������� �� ������ �� ���, ����������� -f ��� ��������������� ������.\n"
 
-#: pg_resetxlog.c:261
+#: pg_resetxlog.c:295
 msgid "Transaction log reset\n"
 msgstr "��� ���������� �������\n"
 
-#: pg_resetxlog.c:290
+#: pg_resetxlog.c:324
 #, c-format
 msgid ""
 "If you are sure the data directory path is correct, execute\n"
@@ -111,32 +127,32 @@ msgstr ""
 "  touch %s\n"
 "� ���������� �����.\n"
 
-#: pg_resetxlog.c:303
+#: pg_resetxlog.c:337
 #, c-format
 msgid "%s: could not read file \"%s\": %s\n"
 msgstr "%s: �� ������� ������� ���� \"%s\": %s\n"
 
-#: pg_resetxlog.c:326
+#: pg_resetxlog.c:360
 #, c-format
 msgid "%s: pg_control exists but has invalid CRC; proceed with caution\n"
 msgstr "%s: pg_control ����������, �� ��� ����������� ����� CRC �������; ����������� � �������������\n"
 
-#: pg_resetxlog.c:335
+#: pg_resetxlog.c:369
 #, c-format
 msgid "%s: pg_control exists but is broken or unknown version; ignoring it\n"
 msgstr "%s: pg_control ����������, �� ������ģ� ��� ����������� ������; ������������...\n"
 
-#: pg_resetxlog.c:399
+#: pg_resetxlog.c:433
 #, c-format
 msgid "%s: invalid LC_COLLATE setting\n"
 msgstr "%s: ��������� �������� LC_COLLATE\n"
 
-#: pg_resetxlog.c:406
+#: pg_resetxlog.c:440
 #, c-format
 msgid "%s: invalid LC_CTYPE setting\n"
 msgstr "%s: ��������� �������� LC_CTYPE\n"
 
-#: pg_resetxlog.c:430
+#: pg_resetxlog.c:464
 msgid ""
 "Guessed pg_control values:\n"
 "\n"
@@ -144,7 +160,7 @@ msgstr ""
 "��������� �������� pg_control:\n"
 "\n"
 
-#: pg_resetxlog.c:432
+#: pg_resetxlog.c:466
 msgid ""
 "pg_control values:\n"
 "\n"
@@ -152,142 +168,142 @@ msgstr ""
 "�������� pg_control:\n"
 "\n"
 
-#: pg_resetxlog.c:441
+#: pg_resetxlog.c:475
 #, c-format
 msgid "pg_control version number:            %u\n"
 msgstr "����� ������ pg_control:              %u\n"
 
-#: pg_resetxlog.c:442
+#: pg_resetxlog.c:476
 #, c-format
 msgid "Catalog version number:               %u\n"
 msgstr "����� ������ ��������:                %u\n"
 
-#: pg_resetxlog.c:443
+#: pg_resetxlog.c:477
 #, c-format
 msgid "Database system identifier:           %s\n"
 msgstr "������������� ������� ��� ������:     %s\n"
 
-#: pg_resetxlog.c:444
+#: pg_resetxlog.c:478
 #, c-format
 msgid "Current log file ID:                  %u\n"
 msgstr "������� ID ����� �������:             %u\n"
 
-#: pg_resetxlog.c:445
+#: pg_resetxlog.c:479
 #, c-format
 msgid "Next log file segment:                %u\n"
 msgstr "��������� ������� ����� �������:      %u\n"
 
-#: pg_resetxlog.c:446
+#: pg_resetxlog.c:480
 #, c-format
 msgid "Latest checkpoint's TimeLineID:       %u\n"
 msgstr "TimeLineID ��������� checkpoint:      %u\n"
 
-#: pg_resetxlog.c:447
+#: pg_resetxlog.c:481
 #, c-format
 msgid "Latest checkpoint's NextXID:          %u\n"
 msgstr "NextXID ��������� checkpoint:         %u\n"
 
-#: pg_resetxlog.c:448
+#: pg_resetxlog.c:482
 #, c-format
 msgid "Latest checkpoint's NextOID:          %u\n"
 msgstr "NextOID ��������� checkpoint:         %u\n"
 
-#: pg_resetxlog.c:449
+#: pg_resetxlog.c:483
 #, c-format
 msgid "Database block size:                  %u\n"
 msgstr "������ ����� ����:                    %u\n"
 
-#: pg_resetxlog.c:450
+#: pg_resetxlog.c:484
 #, c-format
 msgid "Blocks per segment of large relation: %u\n"
 msgstr "������ �� ������� �������� ���������:      %u\n"
 
-#: pg_resetxlog.c:451
+#: pg_resetxlog.c:485
 #, c-format
 msgid "Maximum length of identifiers:        %u\n"
 msgstr "������������ ����� ���������������:   %u\n"
 
-#: pg_resetxlog.c:452
+#: pg_resetxlog.c:486
 #, c-format
 msgid "Maximum number of function arguments: %u\n"
 msgstr "������������ ����� ���������� �������:       %u\n"
 
-#: pg_resetxlog.c:453
+#: pg_resetxlog.c:487
 #, c-format
 msgid "Date/time type storage:               %s\n"
 msgstr "��� �������� ����/�������:            %s\n"
 
-#: pg_resetxlog.c:454
+#: pg_resetxlog.c:488
 msgid "64-bit integers"
 msgstr "64-������ �����"
 
-#: pg_resetxlog.c:454
+#: pg_resetxlog.c:488
 msgid "floating-point numbers"
 msgstr "��������� �������"
 
-#: pg_resetxlog.c:455
+#: pg_resetxlog.c:489
 #, c-format
 msgid "Maximum length of locale name:        %u\n"
 msgstr "������������ ����� ����� ������:      %u\n"
 
-#: pg_resetxlog.c:456
+#: pg_resetxlog.c:490
 #, c-format
 msgid "LC_COLLATE:                           %s\n"
 msgstr "LC_COLLATE:                           %s\n"
 
-#: pg_resetxlog.c:457
+#: pg_resetxlog.c:491
 #, c-format
 msgid "LC_CTYPE:                             %s\n"
 msgstr "LC_CTYPE:                             %s\n"
 
-#: pg_resetxlog.c:518
+#: pg_resetxlog.c:552
 #, c-format
 msgid "%s: internal error -- sizeof(ControlFileData) is too large ... fix xlog.c\n"
 msgstr "%s: ���������� ������ -- sizeof(ControlFileData) ������� ����� ... ���� ��������� xlog.c\n"
 
-#: pg_resetxlog.c:531
+#: pg_resetxlog.c:565
 #, c-format
 msgid "%s: could not create pg_control file: %s\n"
 msgstr "%s: �� ������� ������� ���� pg_control: %s\n"
 
-#: pg_resetxlog.c:542
+#: pg_resetxlog.c:576
 #, c-format
 msgid "%s: could not write pg_control file: %s\n"
 msgstr "%s: �� ������� �������� � ���� pg_control: %s\n"
 
-#: pg_resetxlog.c:549
-#: pg_resetxlog.c:704
+#: pg_resetxlog.c:583
+#: pg_resetxlog.c:739
 #, c-format
 msgid "%s: fsync error: %s\n"
 msgstr "%s: ������ fsync: %s\n"
 
-#: pg_resetxlog.c:570
+#: pg_resetxlog.c:604
 #, c-format
 msgid "%s: could not open directory \"%s\": %s\n"
 msgstr "%s: �� ������� ������� ���������� \"%s\": %s\n"
 
-#: pg_resetxlog.c:584
+#: pg_resetxlog.c:618
 #, c-format
 msgid "%s: could not delete file \"%s\": %s\n"
 msgstr "%s: �� ������� ������� ���� \"%s\": %s\n"
 
-#: pg_resetxlog.c:600
+#: pg_resetxlog.c:637
 #, c-format
 msgid "%s: could not read from directory \"%s\": %s\n"
 msgstr "%s: �� ������� ������� �� ���������� \"%s\": %s\n"
 
-#: pg_resetxlog.c:671
+#: pg_resetxlog.c:706
 #, c-format
 msgid "%s: could not open file \"%s\": %s\n"
 msgstr "%s: �� ������� ������� ���� \"%s\": %s\n"
 
-#: pg_resetxlog.c:682
-#: pg_resetxlog.c:696
+#: pg_resetxlog.c:717
+#: pg_resetxlog.c:731
 #, c-format
 msgid "%s: could not write file \"%s\": %s\n"
 msgstr "%s: �� ������� �������� ���� \"%s\": %s\n"
 
-#: pg_resetxlog.c:715
+#: pg_resetxlog.c:750
 #, c-format
 msgid ""
 "%s resets the PostgreSQL transaction log.\n"
@@ -296,7 +312,7 @@ msgstr ""
 "%s ���������� ��� ���������� PostgreSQL.\n"
 "\n"
 
-#: pg_resetxlog.c:716
+#: pg_resetxlog.c:751
 #, c-format
 msgid ""
 "Usage:\n"
@@ -307,39 +323,39 @@ msgstr ""
 "  %s [OPTION]... DATADIR\n"
 "\n"
 
-#: pg_resetxlog.c:717
+#: pg_resetxlog.c:752
 msgid "Options:\n"
 msgstr "�����:\n"
 
-#: pg_resetxlog.c:718
+#: pg_resetxlog.c:753
 msgid "  -f              force update to be done\n"
 msgstr "  -f              �������������� ���������� ����������\n"
 
-#: pg_resetxlog.c:719
-msgid "  -l FILEID,SEG   force minimum WAL starting location for new transaction log\n"
-msgstr "  -l FILEID,SEG   ��������� ����������� ��������� ��������� �������� WAL ��� ������ ���� ����������\n"
+#: pg_resetxlog.c:754
+msgid "  -l TLI,FILE,SEG force minimum WAL starting location for new transaction log\n"
+msgstr "  -l TLI,FILE,SEG ��������� ����������� ��������� ��������� �������� WAL ��� ������ ���� ����������\n"
 
-#: pg_resetxlog.c:720
+#: pg_resetxlog.c:755
 msgid "  -n              no update, just show extracted control values (for testing)\n"
 msgstr "  -n              ��� ����������, ������ �������� ����������� ����������� �������� (��� ������������)\n"
 
-#: pg_resetxlog.c:721
+#: pg_resetxlog.c:756
 msgid "  -o OID          set next OID\n"
 msgstr "  -o OID          ������ ����������� OID\n"
 
-#: pg_resetxlog.c:722
+#: pg_resetxlog.c:757
 msgid "  -x XID          set next transaction ID\n"
 msgstr "  -x XID          ������ ID ��������� ����������\n"
 
-#: pg_resetxlog.c:723
+#: pg_resetxlog.c:758
 msgid "  --help          show this help, then exit\n"
 msgstr "  --help          �������� ��� ��������� � �����\n"
 
-#: pg_resetxlog.c:724
+#: pg_resetxlog.c:759
 msgid "  --version       output version information, then exit\n"
 msgstr "  --version       �������� ������ � �����\n"
 
-#: pg_resetxlog.c:725
+#: pg_resetxlog.c:760
 msgid ""
 "\n"
 "Report bugs to <pgsql-bugs@postgresql.org>.\n"
diff --git a/src/bin/pg_resetxlog/po/tr.po b/src/bin/pg_resetxlog/po/tr.po
index 5537535..8b52d2b 100644
--- a/src/bin/pg_resetxlog/po/tr.po
+++ b/src/bin/pg_resetxlog/po/tr.po
@@ -1,3 +1,4 @@
+# translation of pg_resetxlog-tr.po to 
 # translation of pg_resetxlog-tr1.po to Turkish
 # translation of pg_resetxlog-tr.po to Turkish
 # Devrim GUNDUZ <devrim@PostgreSQL.org>, 2004, 2005.
@@ -5,10 +6,10 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: pg_resetxlog-tr\n"
-"POT-Creation-Date: 2005-01-04 19:06+0000\n"
-"PO-Revision-Date: 2005-01-04 21:55+0200\n"
-"Last-Translator: Devrim GUNDUZ <devrim@PostgreSQL.org>\n"
-"Language-Team: Turkish <pgsql-tr-genel@PostgreSQL.org>\n"
+"POT-Creation-Date: 2005-04-02 07:13+0100\n"
+"PO-Revision-Date: 2005-04-02 19:17+0300\n"
+"Last-Translator: \n"
+"Language-Team:  <en@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -16,58 +17,58 @@ msgstr ""
 "X-Poedit-Language: Turkish\n"
 "X-Poedit-Country: TURKEY\n"
 
-#: pg_resetxlog.c:125
+#: pg_resetxlog.c:123
 #, c-format
 msgid "%s: invalid argument for option -x\n"
 msgstr "%s: -x seçeneği için geçersiz argüman\n"
 
-#: pg_resetxlog.c:126 pg_resetxlog.c:141 pg_resetxlog.c:156 pg_resetxlog.c:163
-#: pg_resetxlog.c:170 pg_resetxlog.c:176 pg_resetxlog.c:184
+#: pg_resetxlog.c:124 pg_resetxlog.c:139 pg_resetxlog.c:154 pg_resetxlog.c:161
+#: pg_resetxlog.c:168 pg_resetxlog.c:174 pg_resetxlog.c:182
 #, c-format
 msgid "Try \"%s --help\" for more information.\n"
 msgstr "Daha fazla bilgi için \"%s --help\" parametresini kullanınız.\n"
 
-#: pg_resetxlog.c:131
+#: pg_resetxlog.c:129
 #, c-format
 msgid "%s: transaction ID (-x) must not be 0\n"
 msgstr "%s: transaction ID (-x) 0 olamaz\n"
 
-#: pg_resetxlog.c:140
+#: pg_resetxlog.c:138
 #, c-format
 msgid "%s: invalid argument for option -o\n"
 msgstr "%s: -o seçeneği için geçersiz argüman\n"
 
-#: pg_resetxlog.c:146
+#: pg_resetxlog.c:144
 #, c-format
 msgid "%s: OID (-o) must not be 0\n"
 msgstr "%s: OID (-o) 0 olamaz\n"
 
-#: pg_resetxlog.c:155 pg_resetxlog.c:162 pg_resetxlog.c:169
+#: pg_resetxlog.c:153 pg_resetxlog.c:160 pg_resetxlog.c:167
 #, c-format
 msgid "%s: invalid argument for option -l\n"
 msgstr "%s: -l seçeneği için geçersiz argüman\n"
 
-#: pg_resetxlog.c:183
+#: pg_resetxlog.c:181
 #, c-format
 msgid "%s: no data directory specified\n"
 msgstr "%s: veri dizini belirtilmedi\n"
 
-#: pg_resetxlog.c:198
+#: pg_resetxlog.c:196
 #, c-format
 msgid "%s: cannot be executed by \"root\"\n"
 msgstr "%s: \"root\" tarafından çalıştırılamaz\n"
 
-#: pg_resetxlog.c:200
+#: pg_resetxlog.c:198
 #, c-format
 msgid "You must run %s as the PostgreSQL superuser.\n"
 msgstr "%s komutunu PostgreSQL superuser olarak çalıştırmalısınız.\n"
 
-#: pg_resetxlog.c:222 pg_resetxlog.c:321
+#: pg_resetxlog.c:220 pg_resetxlog.c:319
 #, c-format
 msgid "%s: could not open file \"%s\" for reading: %s\n"
 msgstr "%s: \"%s\" dosyası okunmak için açılamadı: %s\n"
 
-#: pg_resetxlog.c:228
+#: pg_resetxlog.c:226
 #, c-format
 msgid ""
 "%s: lock file \"%s\" exists\n"
@@ -77,7 +78,7 @@ msgstr ""
 "Bir sunucu çalışıyor mu? Eğer çalışmıyorsa, lock dosyasını silin ve yeniden "
 "deneyin.\n"
 
-#: pg_resetxlog.c:270
+#: pg_resetxlog.c:268
 msgid ""
 "\n"
 "If these values seem acceptable, use -f to force reset.\n"
@@ -86,7 +87,7 @@ msgstr ""
 "Eğer bu değerler kabul edilebilir görünüyorsa, reset işlemini zorlamak için -"
 "f yi kullanınız.\n"
 
-#: pg_resetxlog.c:282
+#: pg_resetxlog.c:280
 msgid ""
 "The database server was not shut down cleanly.\n"
 "Resetting the transaction log may cause data to be lost.\n"
@@ -97,11 +98,11 @@ msgstr ""
 "Yine de devam etmek istiyorsanız, sıfırlama işlemini zorlamak için -f "
 "parametresini kullanınız.\n"
 
-#: pg_resetxlog.c:295
+#: pg_resetxlog.c:293
 msgid "Transaction log reset\n"
 msgstr "Transaction kayıt dosyası sıfırlandı\n"
 
-#: pg_resetxlog.c:324
+#: pg_resetxlog.c:322
 #, c-format
 msgid ""
 "If you are sure the data directory path is correct, execute\n"
@@ -112,36 +113,36 @@ msgstr ""
 "  touch %s\n"
 "komutunu çalıştırın ve tekrar deneyin.\n"
 
-#: pg_resetxlog.c:337
+#: pg_resetxlog.c:335
 #, c-format
 msgid "%s: could not read file \"%s\": %s\n"
 msgstr "%s: \"%s\" dosyası okunamadı: %s\n"
 
-#: pg_resetxlog.c:360
+#: pg_resetxlog.c:358
 #, c-format
 msgid "%s: pg_control exists but has invalid CRC; proceed with caution\n"
 msgstr ""
 "%s: pg_control mevcut ancak geçersiz CRC'ye sahip, dikkat ederek devam "
 "ediniz\n"
 
-#: pg_resetxlog.c:369
+#: pg_resetxlog.c:367
 #, c-format
 msgid "%s: pg_control exists but is broken or unknown version; ignoring it\n"
 msgstr ""
 "%s: pg_control mevcut ama bozuk ya da bilinmeyen bir sürüme sahip; gözardı "
 "ediliyor\n"
 
-#: pg_resetxlog.c:433
+#: pg_resetxlog.c:431
 #, c-format
 msgid "%s: invalid LC_COLLATE setting\n"
 msgstr "%s: Geçersiz LC_COLLATE ayarı\n"
 
-#: pg_resetxlog.c:440
+#: pg_resetxlog.c:438
 #, c-format
 msgid "%s: invalid LC_CTYPE setting\n"
 msgstr "%s: geçersiz LC_CTYPE ayarı\n"
 
-#: pg_resetxlog.c:464
+#: pg_resetxlog.c:462
 msgid ""
 "Guessed pg_control values:\n"
 "\n"
@@ -149,7 +150,7 @@ msgstr ""
 "Tahmin edilen pg_control değerleri:\n"
 "\n"
 
-#: pg_resetxlog.c:466
+#: pg_resetxlog.c:464
 msgid ""
 "pg_control values:\n"
 "\n"
@@ -157,142 +158,142 @@ msgstr ""
 "pg_control değerleri:\n"
 "\n"
 
-#: pg_resetxlog.c:475
+#: pg_resetxlog.c:473
 #, c-format
 msgid "pg_control version number:            %u\n"
 msgstr "pg_control sürüm numarası:            %u\n"
 
-#: pg_resetxlog.c:476
+#: pg_resetxlog.c:474
 #, c-format
 msgid "Catalog version number:               %u\n"
 msgstr "Katalog sürüm numarası:               %u\n"
 
-#: pg_resetxlog.c:477
+#: pg_resetxlog.c:475
 #, c-format
 msgid "Database system identifier:           %s\n"
 msgstr "Veritabanı sistem tanımlayıcısı:           %s\n"
 
-#: pg_resetxlog.c:478
+#: pg_resetxlog.c:476
 #, c-format
 msgid "Current log file ID:                  %u\n"
 msgstr "Mevcut kayıt dosyası dosya numarası:                  %u\n"
 
-#: pg_resetxlog.c:479
+#: pg_resetxlog.c:477
 #, c-format
 msgid "Next log file segment:                %u\n"
 msgstr "Sıradaki kayıt dosyası bölümü:                %u\n"
 
-#: pg_resetxlog.c:480
+#: pg_resetxlog.c:478
 #, c-format
 msgid "Latest checkpoint's TimeLineID:       %u\n"
 msgstr "Son checkpoint''in TimeLineID değeri:          %u\n"
 
-#: pg_resetxlog.c:481
+#: pg_resetxlog.c:479
 #, c-format
 msgid "Latest checkpoint's NextXID:          %u\n"
 msgstr "Son checkpoint''in NextXID değeri:          %u\n"
 
-#: pg_resetxlog.c:482
+#: pg_resetxlog.c:480
 #, c-format
 msgid "Latest checkpoint's NextOID:          %u\n"
 msgstr "Son checkpoint''in NextOID değeri:          %u\n"
 
-#: pg_resetxlog.c:483
+#: pg_resetxlog.c:481
 #, c-format
 msgid "Database block size:                  %u\n"
 msgstr "Veritabanı blok büyüklüğü:                  %u\n"
 
-#: pg_resetxlog.c:484
+#: pg_resetxlog.c:482
 #, c-format
 msgid "Blocks per segment of large relation: %u\n"
 msgstr "büyük nesnenin bölümü başına blok sayısı: %u\n"
 
-#: pg_resetxlog.c:485
+#: pg_resetxlog.c:483
 #, c-format
 msgid "Maximum length of identifiers:        %u\n"
 msgstr "Tanımlayıcıların en yüksek sayısı:        %u\n"
 
-#: pg_resetxlog.c:486
+#: pg_resetxlog.c:484
 #, c-format
-msgid "Maximum number of function arguments: %u\n"
-msgstr "Fonksiyon argümanları için en yüksek sayı: %u\n"
+msgid "Maximum columns in an index:          %u\n"
+msgstr "Bir indexteki en fazla kolon sayısı:        %u\n"
 
-#: pg_resetxlog.c:487
+#: pg_resetxlog.c:485
 #, c-format
 msgid "Date/time type storage:               %s\n"
 msgstr "Tarih/zaman tipi saklanması:               %s\n"
 
-#: pg_resetxlog.c:488
+#: pg_resetxlog.c:486
 msgid "64-bit integers"
 msgstr "64-bit tamsayılar"
 
-#: pg_resetxlog.c:488
+#: pg_resetxlog.c:486
 msgid "floating-point numbers"
 msgstr "kayan nokta sayılar"
 
-#: pg_resetxlog.c:489
+#: pg_resetxlog.c:487
 #, c-format
 msgid "Maximum length of locale name:        %u\n"
 msgstr "Yerel adının en büyük uzunluğu:        %u\n"
 
-#: pg_resetxlog.c:490
+#: pg_resetxlog.c:488
 #, c-format
 msgid "LC_COLLATE:                           %s\n"
 msgstr "LC_COLLATE:                           %s\n"
 
-#: pg_resetxlog.c:491
+#: pg_resetxlog.c:489
 #, c-format
 msgid "LC_CTYPE:                             %s\n"
 msgstr "LC_CTYPE:                             %s\n"
 
-#: pg_resetxlog.c:552
+#: pg_resetxlog.c:550
 #, c-format
 msgid "%s: internal error -- sizeof(ControlFileData) is too large ... fix xlog.c\n"
 msgstr ""
 "%s: iç hata -- sizeof(ControlFileData) çok büyük ... xlog.c dosyasını "
 "düzeltiniz\n"
 
-#: pg_resetxlog.c:565
+#: pg_resetxlog.c:563
 #, c-format
 msgid "%s: could not create pg_control file: %s\n"
 msgstr "%s: pg_control dosyası yaratılamadı: %s\n"
 
-#: pg_resetxlog.c:576
+#: pg_resetxlog.c:574
 #, c-format
 msgid "%s: could not write pg_control file: %s\n"
 msgstr "%s: pg_control dosyasına yazılamadı: %s\n"
 
-#: pg_resetxlog.c:583 pg_resetxlog.c:739
+#: pg_resetxlog.c:581 pg_resetxlog.c:737
 #, c-format
 msgid "%s: fsync error: %s\n"
 msgstr "%s: fsync hatası: %s\n"
 
-#: pg_resetxlog.c:604
+#: pg_resetxlog.c:602
 #, c-format
 msgid "%s: could not open directory \"%s\": %s\n"
 msgstr "%s:  \"%s\" dizini açılamadı: %s\n"
 
-#: pg_resetxlog.c:618
+#: pg_resetxlog.c:616
 #, c-format
 msgid "%s: could not delete file \"%s\": %s\n"
 msgstr "%s:  \"%s\" dosyası silinemedi: %s\n"
 
-#: pg_resetxlog.c:637
+#: pg_resetxlog.c:635
 #, c-format
 msgid "%s: could not read from directory \"%s\": %s\n"
 msgstr "%s:  \"%s\" dizini okunamadı: %s\n"
 
-#: pg_resetxlog.c:706
+#: pg_resetxlog.c:704
 #, c-format
 msgid "%s: could not open file \"%s\": %s\n"
 msgstr "%s: \"%s\" dosyası açılamadı: %s\n"
 
-#: pg_resetxlog.c:717 pg_resetxlog.c:731
+#: pg_resetxlog.c:715 pg_resetxlog.c:729
 #, c-format
 msgid "%s: could not write file \"%s\": %s\n"
 msgstr "%s: \"%s\" dosyasına yazılamadı: %s\n"
 
-#: pg_resetxlog.c:750
+#: pg_resetxlog.c:748
 #, c-format
 msgid ""
 "%s resets the PostgreSQL transaction log.\n"
@@ -301,7 +302,7 @@ msgstr ""
 "%s PostgreSQL transaction kayıt dosyasını sıfırlar.\n"
 "\n"
 
-#: pg_resetxlog.c:751
+#: pg_resetxlog.c:749
 #, c-format
 msgid ""
 "Usage:\n"
@@ -312,15 +313,15 @@ msgstr ""
 "  %s [SEÇENEK]... VERİ_DİZİNİ\n"
 "\n"
 
-#: pg_resetxlog.c:752
+#: pg_resetxlog.c:750
 msgid "Options:\n"
 msgstr "Seçenekler:\n"
 
-#: pg_resetxlog.c:753
+#: pg_resetxlog.c:751
 msgid "  -f              force update to be done\n"
 msgstr "  -f              güncellemenin yapılmasını sağla\n"
 
-#: pg_resetxlog.c:754
+#: pg_resetxlog.c:752
 msgid ""
 "  -l TLI,FILE,SEG force minimum WAL starting location for new transaction "
 "log\n"
@@ -328,7 +329,7 @@ msgstr ""
 "  -l TLI,FILE,SEG   Yeni transaction kayıt dosyası için en düşük WAL başlama "
 "yerini belirt\n"
 
-#: pg_resetxlog.c:755
+#: pg_resetxlog.c:753
 msgid ""
 "  -n              no update, just show extracted control values (for "
 "testing)\n"
@@ -336,23 +337,23 @@ msgstr ""
 "  -n              güncelleme yapma, sadece extract edilmiş kontrol "
 "değerlerini göster (denemek için)\n"
 
-#: pg_resetxlog.c:756
+#: pg_resetxlog.c:754
 msgid "  -o OID          set next OID\n"
 msgstr "  -o OID          sıradaki OID'i ayarla\n"
 
-#: pg_resetxlog.c:757
+#: pg_resetxlog.c:755
 msgid "  -x XID          set next transaction ID\n"
 msgstr "  -x XID          sıradaki transaction ID'sini ayarla\n"
 
-#: pg_resetxlog.c:758
+#: pg_resetxlog.c:756
 msgid "  --help          show this help, then exit\n"
 msgstr "  --help          bu yardımı göster ve çık\n"
 
-#: pg_resetxlog.c:759
+#: pg_resetxlog.c:757
 msgid "  --version       output version information, then exit\n"
 msgstr "  --version       sürüm bilgisini göster ve çık\n"
 
-#: pg_resetxlog.c:760
+#: pg_resetxlog.c:758
 msgid ""
 "\n"
 "Report bugs to <pgsql-bugs@postgresql.org>.\n"
diff --git a/src/bin/psql/Makefile b/src/bin/psql/Makefile
index 9934d95..1b214bd 100644
--- a/src/bin/psql/Makefile
+++ b/src/bin/psql/Makefile
@@ -29,7 +29,7 @@ FLEXFLAGS = -Cfe
 all: submake-libpq submake-libpgport psql
 
 psql: $(OBJS) $(libpq_builddir)/libpq.a
-	$(CC) $(CFLAGS) $(OBJS) $(libpq) $(LDFLAGS) $(LIBS) -o $@$(X)
+	$(CC) $(CFLAGS) $(OBJS) $(libpq_pgport) $(LDFLAGS) $(LIBS) -o $@$(X)
 
 help.o: $(srcdir)/sql_help.h
 
diff --git a/src/bin/psql/bcc32.mak b/src/bin/psql/bcc32.mak
index 60a2b69..98bd404 100644
--- a/src/bin/psql/bcc32.mak
+++ b/src/bin/psql/bcc32.mak
@@ -1,6 +1,17 @@
 # Makefile for Borland C++ 5.5
+
 # Borland C++ base install directory goes here
-# BCB=d:\Borland\Bcc55
+# BCB=c:\Borland\Bcc55
+
+!IF "$(BCB)" == ""
+!MESSAGE You must edit bcc32.mak and define BCB at the top
+!ERROR missing BCB
+!ENDIF
+
+!IF "$(__NMAKE__)" == ""
+!MESSAGE You must use the -N compatibility flag, e.g. make -N -f bcc32.make
+!ERROR missing -N
+!ENDIF
 
 !MESSAGE Building PSQL.EXE ...
 !MESSAGE
@@ -19,7 +30,7 @@ CFG=Release
 !MESSAGE You can specify a configuration when running MAKE
 !MESSAGE by defining the macro CFG on the command line. For example:
 !MESSAGE
-!MESSAGE make  -DCFG=[Release | Debug] /f bcc32.mak
+!MESSAGE make -N -DCFG=[Release | Debug] -f bcc32.mak
 !MESSAGE
 !MESSAGE Possible choices for configuration are:
 !MESSAGE
@@ -49,10 +60,29 @@ INTDIR=.\Release
 !endif
 REFDOCDIR=../../../doc/src/sgml/ref
 
+CPP_PROJ = -I$(BCB)\include;..\..\include;..\..\interfaces\libpq;..\..\include\port\win32 \
+           -c -D$(USERDEFINES) -DFRONTEND -n"$(INTDIR)" -tWM -tWC -q -5 -a8 -pc -X -w-use \
+	   -w-par -w-pia -w-csu -w-aus -w-ccc
+
+!IFDEF DEBUG
+CPP_PROJ  	= $(CPP_PROJ) -Od -r- -k -v -y -vi- -D_DEBUG
+LIBPG_DIR 	= Debug
+!ELSE
+CPP_PROJ	= $(CPP_PROJ) -O -Oi -OS -DNDEBUG
+LIBPG_DIR 	= Release
+!ENDIF
+
+!IFDEF DLL_LIBS
+CPP_PROJ	= $(CPP_PROJ) -D_RTLDLL
+LIBRARIES	= cw32mti.lib ..\..\interfaces\libpq\$(LIBPG_DIR)\blibpqdll.lib
+!ELSE
+CPP_PROJ	= $(CPP_PROJ) -DBCC32_STATIC
+LIBRARIES	= cw32mt.lib ..\..\interfaces\libpq\$(LIBPG_DIR)\blibpq.lib
+!ENDIF
+
 .path.obj = $(INTDIR)
 
-.c.obj:
-	$(CPP) -o"$(INTDIR)\$&" $(CPP_PROJ) $<
+USERDEFINES = WIN32;_CONSOLE;_MBCS;HAVE_STRDUP
 
 ALL : sql_help.h psqlscan.c "..\..\port\pg_config_paths.h" "$(OUTDIR)\psql.exe"
 
@@ -86,68 +116,51 @@ CLEAN :
 	-@erase "$(OUTDIR)\psql.exe"
 	-@erase "$(INTDIR)\..\..\port\pg_config_paths.h"
 
-"..\..\port\pg_config_paths.h": win32.mak
-	echo #define PGBINDIR "" >$@
-	echo #define PGSHAREDIR "" >>$@
-	echo #define SYSCONFDIR "" >>$@
-	echo #define INCLUDEDIR "" >>$@
-	echo #define PKGINCLUDEDIR "" >>$@
-	echo #define INCLUDEDIRSERVER "" >>$@
-	echo #define LIBDIR "" >>$@
-	echo #define PKGLIBDIR "" >>$@
-	echo #define LOCALEDIR "" >>$@
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-USERDEFINES = WIN32;_CONSOLE;_MBCS;HAVE_STRDUP
-
-# ---------------------------------------------------------------------------
-CPP_PROJ = -I$(BCB)\include;..\..\include;..\..\interfaces\libpq;..\..\include\port\win32 \
-           -c -D$(USERDEFINES) -DFRONTEND -tWM -tWC -q -5 -a8 -pc -X -w-use -w-par -w-pia \
-	   -w-csu -w-aus -w-ccc
+LINK32=ilink32.exe
+LINK32_FLAGS=-L$(BCB)\lib;.\$(LIBPG_DIR) -x -v
+LINK32_OBJS= \
+	"$(INTDIR)\command.obj" \
+	"$(INTDIR)\common.obj" \
+	"$(INTDIR)\copy.obj" \
+	"$(INTDIR)\describe.obj" \
+	"$(INTDIR)\help.obj" \
+	"$(INTDIR)\input.obj" \
+	"$(INTDIR)\large_obj.obj" \
+	"$(INTDIR)\mainloop.obj" \
+	"$(INTDIR)\mbprint.obj" \
+	"$(INTDIR)\print.obj" \
+	"$(INTDIR)\prompt.obj" \
+	"$(INTDIR)\psqlscan.obj" \
+	"$(INTDIR)\startup.obj" \
+	"$(INTDIR)\stringutils.obj" \
+	"$(INTDIR)\tab-complete.obj" \
+	"$(INTDIR)\variables.obj" \
+	"$(INTDIR)\exec.obj" \
+	"$(INTDIR)\getopt.obj" \
+	"$(INTDIR)\getopt_long.obj" \
+	"$(INTDIR)\path.obj" \
+	"$(INTDIR)\pgstrcasecmp.obj" \
+	"$(INTDIR)\sprompt.obj"
 
 !IFDEF DEBUG
-CPP_PROJ  	= $(CPP_PROJ) -Od -r- -k -v -y -vi- -D_DEBUG
-LIBPG_DIR 	= Debug
+LINK32_OBJS	= $(LINK32_OBJS) "..\..\interfaces\libpq\Debug\blibpqddll.lib"
 !ELSE
-CPP_PROJ	= $(CPP_PROJ) -O -Oi -OS -DNDEBUG
-LIBPG_DIR 	= Release
+LINK32_OBJS	= $(LINK32_OBJS) "..\..\interfaces\libpq\Release\blibpqdll.lib"
 !ENDIF
 
-!IFDEF DLL_LIBS
-CPP_PROJ	= $(CPP_PROJ) -D_RTLDLL
-LIBRARIES	= cw32mti.lib ..\..\interfaces\libpq\$(LIBPG_DIR)\blibpqdll.lib
-!ELSE
-CPP_PROJ	= $(CPP_PROJ) -DBCC32_STATIC
-LIBRARIES	= cw32mt.lib ..\..\interfaces\libpq\$(LIBPG_DIR)\blibpq.lib
-!ENDIF
+"..\..\port\pg_config_paths.h": win32.mak
+	echo \#define PGBINDIR "" >$@
+	echo \#define PGSHAREDIR "" >>$@
+	echo \#define SYSCONFDIR "" >>$@
+	echo \#define INCLUDEDIR "" >>$@
+	echo \#define PKGINCLUDEDIR "" >>$@
+	echo \#define INCLUDEDIRSERVER "" >>$@
+	echo \#define LIBDIR "" >>$@
+	echo \#define PKGLIBDIR "" >>$@
+	echo \#define LOCALEDIR "" >>$@
 
-LINK32=ilink32.exe
-LINK32_FLAGS=-L$(BCB)\lib;.\$(LIBPG_DIR) -x -v 
-LINK32_OBJS= \
-	command.obj \
-	common.obj \
-	copy.obj \
-	describe.obj \
-	help.obj \
-	input.obj \
-	large_obj.obj \
-	mainloop.obj \
-	mbprint.obj
-	print.obj \
-	prompt.obj \
-	startup.obj \
-	stringutils.obj \
-	tab-complete.obj \
-	variables.obj \
-	exec.obj \
-	getopt.obj \
-	getopt_long.obj \
-	path.obj \
-	pgstrcasecmp.obj \
-	sprompt.obj \
-	
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
 
 "$(OUTDIR)\psql.exe" : "$(OUTDIR)" $(LINK32_OBJS)
 	$(LINK32) @&&!
@@ -157,15 +170,42 @@ LINK32_OBJS= \
 	import32.lib $(LIBRARIES),,
 !
 
-exec.obj : "$(OUTDIR)" ..\..\port\exec.c
-getopt.obj : "$(OUTDIR)" ..\..\port\getopt.c
-getopt_long.obj : "$(OUTDIR)" ..\..\port\getopt_long.c
-path.obj : "$(OUTDIR)" ..\..\port\path.c
-pgstrcasecmp.obj : "$(OUTDIR)" ..\..\port\pgstrcasecmp.c
-sprompt.obj : "$(OUTDIR)" ..\..\port\sprompt.c
+"$(INTDIR)\exec.obj" : ..\..\port\exec.c
+    $(CPP) @<<
+    $(CPP_PROJ) ..\..\port\exec.c
+<<
+
+"$(INTDIR)\getopt.obj" : "$(INTDIR)" ..\..\port\getopt.c
+    $(CPP) @<<
+    $(CPP_PROJ) ..\..\port\getopt.c
+<<
+
+"$(INTDIR)\getopt_long.obj" : "$(INTDIR)" ..\..\port\getopt_long.c
+    $(CPP) @<<
+    $(CPP_PROJ) ..\..\port\getopt_long.c
+<<
+
+"$(INTDIR)\path.obj" : "$(INTDIR)" ..\..\port\path.c
+    $(CPP) @<<
+    $(CPP_PROJ) ..\..\port\path.c
+<<
+
+"$(INTDIR)\pgstrcasecmp.obj" : ..\..\port\pgstrcasecmp.c
+    $(CPP) @<<
+    $(CPP_PROJ) ..\..\port\pgstrcasecmp.c
+<<
+
+"$(INTDIR)\sprompt.obj" : "$(INTDIR)" ..\..\port\sprompt.c
+    $(CPP) @<<
+    $(CPP_PROJ) ..\..\port\sprompt.c
+<<
 
 "sql_help.h": create_help.pl 
        $(PERL) create_help.pl $(REFDOCDIR) $@
 
 psqlscan.c : psqlscan.l
 	$(FLEX) -Cfe -opsqlscan.c psqlscan.l
+
+.c.obj:
+	$(CPP) -o"$(INTDIR)\$&" $(CPP_PROJ) $<
+
diff --git a/src/bin/psql/po/pt_BR.po b/src/bin/psql/po/pt_BR.po
index 80e2e5d..de27f21 100644
--- a/src/bin/psql/po/pt_BR.po
+++ b/src/bin/psql/po/pt_BR.po
@@ -1,11 +1,11 @@
 # "psql" translation to Brazilian Portuguese Language.
-# Euler Taveira de Oliveira <eulerto@yahoo.com.br>, 2003, 2004.
+# Euler Taveira de Oliveira <eulerto@yahoo.com.br>, 2003, 2004, 2005.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: PostgreSQL 8.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-01-15 12:04-0200\n"
+"POT-Creation-Date: 2005-05-08 21:42-0300\n"
 "PO-Revision-Date: 2004-11-13 18:42-0300\n"
 "Last-Translator: Euler Taveira de Oliveira <eulerto@yahoo.com.br>\n"
 "Language-Team: Brazilian Portuguese <desenvolvimento-postgresql@listas."
@@ -14,243 +14,244 @@ msgstr ""
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: command.c:116
+#: command.c:120
 msgid "Warning: This syntax is deprecated.\n"
 msgstr "Aviso: Esta sintaxe est� obsoleta.\n"
 
-#: command.c:124
+#: command.c:128
 #, c-format
 msgid "Invalid command \\%s. Try \\? for help.\n"
 msgstr "Comando inv�lido \\%s. Tente \\? para ajuda.\n"
 
-#: command.c:126
+#: command.c:130
 #, c-format
 msgid "invalid command \\%s\n"
 msgstr "comando inv�lido \\%s\n"
 
-#: command.c:137
+#: command.c:141
 #, c-format
 msgid "\\%s: extra argument \"%s\" ignored\n"
 msgstr "\\%s: argumento extra \"%s\" ignorado\n"
 
-#: command.c:254
+#: command.c:258
 #, c-format
 msgid "could not get home directory: %s\n"
 msgstr "n�o p�de alternar para diret�rio base do usu�rio: %s\n"
 
-#: command.c:270
+#: command.c:274
 #, c-format
 msgid "\\%s: could not change directory to \"%s\": %s\n"
 msgstr "\\%s: n�o p�de mudar diret�rio para \"%s\": %s\n"
 
-#: command.c:384 command.c:776
+#: command.c:388 command.c:780
 msgid "no query buffer\n"
 msgstr "nenhum buffer de consulta\n"
 
-#: command.c:447
+#: command.c:451
 #, c-format
 msgid "%s: invalid encoding name or conversion procedure not found\n"
 msgstr ""
 "%s: nome da codifica��o � inv�lido ou procedimento de convers�o n�o foi "
 "encontrado\n"
 
-#: command.c:515 command.c:549 command.c:563 command.c:580 command.c:626
-#: command.c:756 command.c:787
+#: command.c:519 command.c:553 command.c:567 command.c:584 command.c:630
+#: command.c:760 command.c:791
 #, c-format
 msgid "\\%s: missing required argument\n"
 msgstr "\\%s: faltando argumento requerido\n"
 
-#: command.c:612
+#: command.c:616
 msgid "Query buffer is empty."
 msgstr "Buffer de consulta est� vazio."
 
-#: command.c:646
+#: command.c:650
 msgid "Query buffer reset (cleared)."
 msgstr "Buffer de consulta reiniciado (limpo)."
 
-#: command.c:660
+#: command.c:664
 #, c-format
 msgid "Wrote history to file \"%s\".\n"
 msgstr "Hist�rico escrito para arquivo \"%s\".\n"
 
-#: command.c:697 common.c:85 common.c:99 mainloop.c:71 print.c:230 print.c:237
-#: print.c:256 print.c:440 print.c:464 print.c:488 print.c:517 print.c:535
-#: print.c:1156 print.c:1168 print.c:1189 print.c:1196 print.c:1211
+#: command.c:701 common.c:85 common.c:99 mainloop.c:71 print.c:231 print.c:238
+#: print.c:257 print.c:441 print.c:465 print.c:489 print.c:518 print.c:536
+#: print.c:1157 print.c:1169 print.c:1190 print.c:1197 print.c:1212
 #, c-format
 msgid "out of memory\n"
 msgstr "sem mem�ria\n"
 
-#: command.c:712 command.c:761
+#: command.c:716 command.c:765
 #, c-format
 msgid "\\%s: error\n"
 msgstr "\\%s: erro\n"
 
-#: command.c:742
+#: command.c:746
 msgid "Timing is on."
 msgstr "Tempo de execu��o est� habilitado."
 
-#: command.c:744
+#: command.c:748
 msgid "Timing is off."
 msgstr "Tempo de execu��o est� desabilitado."
 
-#: command.c:804 command.c:824 command.c:1209 command.c:1216 command.c:1226
-#: command.c:1238 command.c:1251 command.c:1265 command.c:1287 command.c:1318
-#: common.c:170 copy.c:530 copy.c:575
+#: command.c:808 command.c:828 command.c:1213 command.c:1220 command.c:1230
+#: command.c:1242 command.c:1255 command.c:1269 command.c:1291 command.c:1322
+#: common.c:170 copy.c:536 copy.c:581
 #, c-format
 msgid "%s: %s\n"
 msgstr "%s: %s\n"
 
-#: command.c:931 command.c:955 startup.c:188 startup.c:206
+#: command.c:935 command.c:959 startup.c:189 startup.c:207
 msgid "Password: "
 msgstr "Senha: "
 
-#: command.c:969 common.c:216 common.c:685 common.c:740 common.c:983
+#: command.c:973 common.c:216 common.c:685 common.c:740 common.c:987
+#: common.c:1012 common.c:1066
 #, c-format
 msgid "%s"
 msgstr "%s"
 
-#: command.c:973
+#: command.c:977
 msgid "Previous connection kept\n"
 msgstr "Conex�o anterior mantida\n"
 
-#: command.c:985
+#: command.c:989
 #, c-format
 msgid "\\connect: %s"
 msgstr "\\connect: %s"
 
-#: command.c:997
+#: command.c:1001
 #, c-format
 msgid "You are now connected to database \"%s\".\n"
 msgstr "Voc� est� conectado ao banco de dados \"%s\" agora.\n"
 
-#: command.c:999
+#: command.c:1003
 #, c-format
 msgid "You are now connected as new user \"%s\".\n"
 msgstr "Voc� est� conectado como usu�rio \"%s\" agora.\n"
 
-#: command.c:1002
+#: command.c:1006
 #, c-format
 msgid "You are now connected to database \"%s\" as user \"%s\".\n"
 msgstr ""
 "Voc� est� conectado ao banco de dados \"%s\" como usu�rio \"%s\" agora.\n"
 
-#: command.c:1127
+#: command.c:1131
 #, c-format
 msgid "could not start editor \"%s\"\n"
 msgstr "n�o p�de iniciar o editor \"%s\"\n"
 
-#: command.c:1129
+#: command.c:1133
 msgid "could not start /bin/sh\n"
 msgstr "n�o p�de iniciar /bin/sh\n"
 
-#: command.c:1168
+#: command.c:1172
 #, c-format
 msgid "cannot locate temporary directory: %s"
 msgstr "n�o p�de localizar diret�rio tempor�rio: %s"
 
-#: command.c:1194
+#: command.c:1198
 #, c-format
 msgid "could not open temporary file \"%s\": %s\n"
 msgstr "n�o p�de abrir arquivo tempor�rio \"%s\": %s\n"
 
-#: command.c:1386
+#: command.c:1390
 msgid "\\pset: allowed formats are unaligned, aligned, html, latex\n"
 msgstr "\\pset: formatos permitidos s�o unaligned, aligned, html, latex\n"
 
-#: command.c:1391
+#: command.c:1395
 #, c-format
 msgid "Output format is %s.\n"
 msgstr "Formato de sa�da � %s.\n"
 
-#: command.c:1401
+#: command.c:1405
 #, c-format
 msgid "Border style is %d.\n"
 msgstr "Estilo de borda � %d.\n"
 
-#: command.c:1410
+#: command.c:1414
 #, c-format
 msgid "Expanded display is on.\n"
-msgstr "Exibi��o expandida est� ativada.\n"
+msgstr "Exibi��o expandida est� habilitada.\n"
 
-#: command.c:1411
+#: command.c:1415
 #, c-format
 msgid "Expanded display is off.\n"
-msgstr "Exibi��o expandida est� desativada.\n"
+msgstr "Exibi��o expandida est� desabilitada.\n"
 
-#: command.c:1423
+#: command.c:1427
 #, c-format
 msgid "Null display is \"%s\".\n"
 msgstr "Exibi��o nula � \"%s\".\n"
 
-#: command.c:1435
+#: command.c:1439
 #, c-format
 msgid "Field separator is \"%s\".\n"
 msgstr "Separador de campos � \"%s\".\n"
 
-#: command.c:1449
+#: command.c:1453
 #, c-format
 msgid "Record separator is <newline>."
 msgstr "Separador de registros � <novalinha>."
 
-#: command.c:1451
+#: command.c:1455
 #, c-format
 msgid "Record separator is \"%s\".\n"
 msgstr "Separador de registros � \"%s\".\n"
 
-#: command.c:1462
+#: command.c:1466
 msgid "Showing only tuples."
 msgstr "Mostrando apenas tuplas."
 
-#: command.c:1464
+#: command.c:1468
 msgid "Tuples only is off."
-msgstr "Somente tuplas est� desativado."
+msgstr "Somente tuplas est� desabilitado."
 
-#: command.c:1480
+#: command.c:1484
 #, c-format
 msgid "Title is \"%s\".\n"
 msgstr "T�tulo � \"%s\".\n"
 
-#: command.c:1482
+#: command.c:1486
 #, c-format
 msgid "Title is unset.\n"
 msgstr "T�tulo n�o est� definido.\n"
 
-#: command.c:1498
+#: command.c:1502
 #, c-format
 msgid "Table attribute is \"%s\".\n"
 msgstr "Atributo de tabela � \"%s\".\n"
 
-#: command.c:1500
+#: command.c:1504
 #, c-format
 msgid "Table attributes unset.\n"
 msgstr "Atributos de tabela n�o est�o definidos.\n"
 
-#: command.c:1516
+#: command.c:1520
 msgid "Pager is used for long output."
 msgstr "Pagina��o � usada para sa�da longa."
 
-#: command.c:1518
+#: command.c:1522
 msgid "Pager is always used."
 msgstr "Pagina��o � sempre utilizada."
 
-#: command.c:1520
+#: command.c:1524
 msgid "Pager usage is off."
-msgstr "Uso de pagina��o est� desativado."
+msgstr "Uso de pagina��o est� desabilitado."
 
-#: command.c:1531
+#: command.c:1535
 msgid "Default footer is on."
-msgstr "Rodap� padr�o est� ativado."
+msgstr "Rodap� padr�o est� habilitado."
 
-#: command.c:1533
+#: command.c:1537
 msgid "Default footer is off."
-msgstr "Rodap� padr�o est� desativado."
+msgstr "Rodap� padr�o est� desabilitado."
 
-#: command.c:1539
+#: command.c:1543
 #, c-format
 msgid "\\pset: unknown option: %s\n"
 msgstr "\\pset: op��o desconhecida: %s\n"
 
-#: command.c:1592
+#: command.c:1598
 msgid "\\!: failed\n"
 msgstr "\\!: falhou\n"
 
@@ -294,7 +295,7 @@ msgstr "LINHA %d: "
 msgid "%s\n"
 msgstr "%s\n"
 
-#: common.c:716 common.c:951
+#: common.c:716 common.c:953
 msgid "You are currently not connected to a database.\n"
 msgstr "Voc� n�o est� conectado ao banco de dados.\n"
 
@@ -303,9 +304,9 @@ msgstr "Voc
 msgid ""
 "Asynchronous notification \"%s\" received from server process with PID %d.\n"
 msgstr ""
-"Notifica��o ass�ncrona \"%s\" recebida do processo servidor com PID %d.\n"
+"Notifica��o ass�ncrona \"%s\" recebida do processo do servidor com PID %d.\n"
 
-#: common.c:959
+#: common.c:961
 #, c-format
 msgid ""
 "***(Single step mode: verify command)"
@@ -320,40 +321,47 @@ msgstr ""
 "***(pressione Enter para prosseguir ou digite x e Enter para cancelar)"
 "********************\n"
 
-#: common.c:1010
+#: common.c:1003
+#, c-format
+msgid ""
+"The server version (%d) does not support savepoints for ON_ERROR_ROLLBACK.\n"
+msgstr ""
+"A vers�o do servidor (%d) n�o suporta savepoints para ON_ERROR_ROLLBACK.\n"
+
+#: common.c:1076
 #, c-format
 msgid "Time: %.3f ms\n"
 msgstr "Tempo: %.3f ms\n"
 
-#: copy.c:122
+#: copy.c:123
 msgid "\\copy: arguments required\n"
 msgstr "\\copy: argumentos s�o requeridos\n"
 
-#: copy.c:408
+#: copy.c:411
 #, c-format
 msgid "\\copy: parse error at \"%s\"\n"
-msgstr "\\copy: erro de valida��o em \"%s\"\n"
+msgstr "\\copy: erro de an�lise em \"%s\"\n"
 
-#: copy.c:410
+#: copy.c:413
 msgid "\\copy: parse error at end of line\n"
-msgstr "\\copy: erro de valida��o no fim da linha\n"
+msgstr "\\copy: erro de an�lise no fim da linha\n"
 
-#: copy.c:541
+#: copy.c:547
 #, c-format
 msgid "%s: cannot copy from/to a directory\n"
 msgstr "%s: n�o pode copiar de/para o diret�rio\n"
 
-#: copy.c:562
+#: copy.c:568
 #, c-format
 msgid "\\copy: %s"
 msgstr "\\copy: %s"
 
-#: copy.c:566
+#: copy.c:572
 #, c-format
 msgid "\\copy: unexpected response (%d)\n"
 msgstr "\\copy: resposta inesperada (%d)\n"
 
-#: copy.c:668
+#: copy.c:674
 msgid ""
 "Enter data to be copied followed by a newline.\n"
 "End with a backslash and a period on a line by itself."
@@ -361,20 +369,20 @@ msgstr ""
 "Informe os dados a serem copiados seguido pelo caracter de nova linha.\n"
 "Finalize com uma barra invertida e um ponto na linha."
 
-#: help.c:49
+#: help.c:47
 msgid "on"
-msgstr "ativado"
+msgstr "habilitado"
 
-#: help.c:49
+#: help.c:47
 msgid "off"
-msgstr "desativado"
+msgstr "desabilitado"
 
-#: help.c:71
+#: help.c:69
 #, c-format
 msgid "could not get current user name: %s\n"
 msgstr "n�o p�de obter nome de usu�rio atual: %s\n"
 
-#: help.c:84
+#: help.c:82
 #, c-format
 msgid ""
 "This is psql %s, the PostgreSQL interactive terminal.\n"
@@ -383,19 +391,19 @@ msgstr ""
 "Este � o psql %s, o terminal iterativo do PostgreSQL.\n"
 "\n"
 
-#: help.c:86
+#: help.c:84
 msgid "Usage:"
 msgstr "Uso:"
 
-#: help.c:87
+#: help.c:85
 msgid "  psql [OPTIONS]... [DBNAME [USERNAME]]\n"
 msgstr " psql [OP��ES]... [NOMEBD [USU�RIO]]\n"
 
-#: help.c:89
+#: help.c:87
 msgid "General options:"
 msgstr "Op��es gerais:"
 
-#: help.c:94
+#: help.c:92
 #, c-format
 msgid ""
 "  -d DBNAME       specify database name to connect to (default: \"%s\")\n"
@@ -403,35 +411,35 @@ msgstr ""
 "  -d NOMEBD       especifica o nome do banco de dados ao qual quer se "
 "conectar (padr�o: \"%s\")\n"
 
-#: help.c:95
+#: help.c:93
 msgid "  -c COMMAND      run only single command (SQL or internal) and exit"
 msgstr "  -c COMANDO      executa somente um comando (SQL ou interno) e sai"
 
-#: help.c:96
+#: help.c:94
 msgid "  -f FILENAME     execute commands from file, then exit"
 msgstr "  -f ARQUIVO      executa comandos de um arquivo e sai"
 
-#: help.c:97
+#: help.c:95
 msgid "  -l              list available databases, then exit"
 msgstr "  -l              lista os bancos de dados dispon�veis e sai"
 
-#: help.c:98
+#: help.c:96
 msgid "  -v NAME=VALUE   set psql variable NAME to VALUE"
 msgstr "  -v NOME=VALOR   define vari�vel NOME para VALOR no psql"
 
-#: help.c:99
+#: help.c:97
 msgid "  -X              do not read startup file (~/.psqlrc)"
 msgstr "  -X              n�o l� o arquivo de inicializa��o (~/.psqlrc)"
 
-#: help.c:100
+#: help.c:98
 msgid "  --help          show this help, then exit"
 msgstr "  --help          mostra esta ajuda e sai"
 
-#: help.c:101
+#: help.c:99
 msgid "  --version       output version information, then exit"
 msgstr "  --version       mostra informa��o sobre a vers�o e sai"
 
-#: help.c:103
+#: help.c:101
 msgid ""
 "\n"
 "Input and output options:"
@@ -439,44 +447,44 @@ msgstr ""
 "\n"
 "Op��es de entrada e sa�da:"
 
-#: help.c:104
+#: help.c:102
 msgid "  -a              echo all input from script"
 msgstr "  -a              mostra toda entrada do script"
 
-#: help.c:105
+#: help.c:103
 msgid "  -e              echo commands sent to server"
 msgstr "  -e              mostra comandos enviados ao servidor"
 
-#: help.c:106
+#: help.c:104
 msgid "  -E              display queries that internal commands generate"
 msgstr "  -E              mostra consultas que os comandos internos geram"
 
-#: help.c:107
+#: help.c:105
 msgid "  -q              run quietly (no messages, only query output)"
 msgstr ""
 "  -q              executa silenciosamente (sem mensagens, somente sa�da da "
 "consulta)"
 
-#: help.c:108
+#: help.c:106
 msgid "  -o FILENAME     send query results to file (or |pipe)"
 msgstr ""
 "  -o ARQUIVO      envia resultados da consulta para um arquivo (ou |pipe)"
 
-#: help.c:109
+#: help.c:107
 msgid "  -n              disable enhanced command line editing (readline)"
 msgstr ""
 "  -n              desabilita edi��o de linha de comando melhorada (readline)"
 
-#: help.c:110
+#: help.c:108
 msgid "  -s              single-step mode (confirm each query)"
 msgstr "  -s              modo passo-a-passo (confirma cada consulta)"
 
-#: help.c:111
+#: help.c:109
 msgid "  -S              single-line mode (end of line terminates SQL command)"
 msgstr ""
 "  -S              modo linha �nica (fim da linha termina o comando SQL)"
 
-#: help.c:113
+#: help.c:111
 msgid ""
 "\n"
 "Output format options:"
@@ -484,20 +492,20 @@ msgstr ""
 "\n"
 "Op��es para formato de sa�da:"
 
-#: help.c:114
+#: help.c:112
 msgid "  -A              unaligned table output mode (-P format=unaligned)"
 msgstr ""
 "  -A              modo de sa�da em tabela desalinhada (-P format=unaligned)"
 
-#: help.c:115
+#: help.c:113
 msgid "  -H              HTML table output mode (-P format=html)"
 msgstr "  -H              modo de sa�da em tabela HTML (-P format=html)"
 
-#: help.c:116
+#: help.c:114
 msgid "  -t              print rows only (-P tuples_only)"
-msgstr "  -t              mostra somente os registros (-P tuples_only)"
+msgstr "  -t              exibe somente os registros (-P tuples_only)"
 
-#: help.c:117
+#: help.c:115
 msgid ""
 "  -T TEXT         set HTML table tag attributes (width, border) (-P "
 "tableattr=)"
@@ -505,16 +513,16 @@ msgstr ""
 "  -T TEXTO        define atributos do marcador table do HTML (width, border) "
 "(-P tableattr=)"
 
-#: help.c:118
+#: help.c:116
 msgid "  -x              turn on expanded table output (-P expanded)"
 msgstr "  -x              habilita sa�da em tabela expandida (-P expanded)"
 
-#: help.c:119
+#: help.c:117
 msgid "  -P VAR[=ARG]    set printing option VAR to ARG (see \\pset command)"
 msgstr ""
 "  -P VAR[=ARG]    define op��o de exibi��o VAR para ARG (veja comando \\pset)"
 
-#: help.c:120
+#: help.c:118
 #, c-format
 msgid ""
 "  -F STRING       set field separator (default: \"%s\") (-P fieldsep=)\n"
@@ -522,14 +530,14 @@ msgstr ""
 "  -F SEPARADOR    define separador de campos (padr�o: \"%s\") (-P "
 "fieldsep=)\n"
 
-#: help.c:122
+#: help.c:120
 msgid ""
 "  -R STRING       set record separator (default: newline) (-P recordsep=)"
 msgstr ""
 "  -R SEPARADOR    define separador de registros (padr�o: nova_linha) (-P "
 "recordsep=)"
 
-#: help.c:124
+#: help.c:122
 msgid ""
 "\n"
 "Connection options:"
@@ -537,7 +545,7 @@ msgstr ""
 "\n"
 "Op��es de conex�o:"
 
-#: help.c:127
+#: help.c:125
 #, c-format
 msgid ""
 "  -h HOSTNAME     database server host or socket directory (default: \"%s"
@@ -546,26 +554,26 @@ msgstr ""
 "  -h M�QUINA      m�quina do servidor de banco de dados ou diret�rio do "
 "soquete (padr�o: \"%s\")\n"
 
-#: help.c:128
+#: help.c:126
 msgid "local socket"
 msgstr "soquete local"
 
-#: help.c:131
+#: help.c:129
 #, c-format
 msgid "  -p PORT         database server port (default: \"%s\")\n"
 msgstr ""
 "  -P PORTA        porta do servidor de banco de dados (padr�o: \"%s\")\n"
 
-#: help.c:137
+#: help.c:135
 #, c-format
 msgid "  -U NAME         database user name (default: \"%s\")\n"
 msgstr "  -U USU�RIO      nome de usu�rio do banco de dados (padr�o: \"%s\")\n"
 
-#: help.c:138
+#: help.c:136
 msgid "  -W              prompt for password (should happen automatically)"
 msgstr "  -W              pergunta senha (pode ocorrer automaticamente)"
 
-#: help.c:141
+#: help.c:139
 msgid ""
 "\n"
 "For more information, type \"\\?\" (for internal commands) or \"\\help\"\n"
@@ -580,14 +588,14 @@ msgstr ""
 "(para comandos SQL) no psql, ou consulte a se��o do psql na\n"
 "documenta��o do PostgreSQL.\n"
 "\n"
-"Reporte erros a <pgsql-bugs@postgresql.org>."
+"Relate erros a <pgsql-bugs@postgresql.org>."
 
-#: help.c:175
+#: help.c:173
 #, c-format
 msgid "General\n"
 msgstr "Geral\n"
 
-#: help.c:176
+#: help.c:174
 #, c-format
 msgid ""
 "  \\c[onnect] [DBNAME|- [USER]]\n"
@@ -596,17 +604,17 @@ msgstr ""
 "  \\c[onnect] [NOMEBD|- [USU�RIO]]\n"
 "                 conecta a um outro banco de dados (atual \"%s\")\n"
 
-#: help.c:179
+#: help.c:177
 #, c-format
 msgid "  \\cd [DIR]      change the current working directory\n"
 msgstr "  \\cd [DIRET�RIO] muda o diret�rio de trabalho atual\n"
 
-#: help.c:180
+#: help.c:178
 #, c-format
 msgid "  \\copyright     show PostgreSQL usage and distribution terms\n"
 msgstr "  \\copyright     mostra termos de uso e distribui��o do PostgreSQL\n"
 
-#: help.c:181
+#: help.c:179
 #, c-format
 msgid ""
 "  \\encoding [ENCODING]\n"
@@ -615,18 +623,18 @@ msgstr ""
 "  \\encoding [CODIFICA��O]\n"
 "                 mostra ou define codifica��o do cliente\n"
 
-#: help.c:183
+#: help.c:181
 #, c-format
 msgid "  \\h [NAME]      help on syntax of SQL commands, * for all commands\n"
 msgstr ""
 "  \\h [NOME]      mostra sintaxe dos comandos SQL, * para todos os comandos\n"
 
-#: help.c:184
+#: help.c:182
 #, c-format
 msgid "  \\q             quit psql\n"
 msgstr "  \\q             sai do psql\n"
 
-#: help.c:185
+#: help.c:183
 #, c-format
 msgid ""
 "  \\set [NAME [VALUE]]\n"
@@ -636,27 +644,29 @@ msgstr ""
 "                 define vari�vel interna ou lista todos caso n�o tenha "
 "par�metros\n"
 
-#: help.c:187
+#: help.c:185
 #, c-format
 msgid "  \\timing        toggle timing of commands (currently %s)\n"
-msgstr "  \\timing        obt�m tempo de comandos (atualmente %s)\n"
+msgstr ""
+"  \\timing        alterna para dura��o da execu��o de comandos (atualmente %"
+"s)\n"
 
-#: help.c:189
+#: help.c:187
 #, c-format
 msgid "  \\unset NAME    unset (delete) internal variable\n"
 msgstr "  \\unset NOME    apaga (exclui) vari�vel interna\n"
 
-#: help.c:190
+#: help.c:188
 #, c-format
 msgid "  \\! [COMMAND]   execute command in shell or start interactive shell\n"
 msgstr "  \\! [COMANDO]   executa comando na shell ou inicia shell iterativa\n"
 
-#: help.c:193
+#: help.c:191
 #, c-format
 msgid "Query Buffer\n"
 msgstr "Buffer de consulta\n"
 
-#: help.c:194
+#: help.c:192
 #, c-format
 msgid ""
 "  \\e [FILE]      edit the query buffer (or file) with external editor\n"
@@ -664,7 +674,7 @@ msgstr ""
 "  \\e [ARQUIVO]   edita o buffer de consulta (ou arquivo) com um editor "
 "externo\n"
 
-#: help.c:195
+#: help.c:193
 #, c-format
 msgid ""
 "  \\g [FILE]      send query buffer to server (and results to file or |"
@@ -673,49 +683,49 @@ msgstr ""
 "  \\g [ARQUIVO]   envia o buffer de consulta para o servidor (e os "
 "resultados para arquivo ou |pipe)\n"
 
-#: help.c:196
+#: help.c:194
 #, c-format
 msgid "  \\p             show the contents of the query buffer\n"
 msgstr "  \\p             mostra o conte�do do buffer de consulta\n"
 
-#: help.c:197
+#: help.c:195
 #, c-format
 msgid "  \\r             reset (clear) the query buffer\n"
 msgstr "  \\r             reinicia (apaga) o buffer de consulta\n"
 
-#: help.c:199
+#: help.c:197
 #, c-format
 msgid "  \\s [FILE]      display history or save it to file\n"
 msgstr "  \\s [ARQUIVO]   mostra hist�rico ou grava-o em um arquivo\n"
 
-#: help.c:201
+#: help.c:199
 #, c-format
 msgid "  \\w FILE        write query buffer to file\n"
 msgstr "  \\w [ARQUIVO]   escreve o buffer de consulta para arquivo\n"
 
-#: help.c:204
+#: help.c:202
 #, c-format
 msgid "Input/Output\n"
 msgstr "Entrada/Sa�da\n"
 
-#: help.c:205
+#: help.c:203
 #, c-format
 msgid "  \\echo [STRING] write string to standard output\n"
 msgstr "  \\echo [STRING] escreve cadeia de caracteres na sa�da padr�o\n"
 
-#: help.c:206
+#: help.c:204
 #, c-format
 msgid "  \\i FILE        execute commands from file\n"
 msgstr "  \\i ARQUIVO     executa comandos de um arquivo\n"
 
-#: help.c:207
+#: help.c:205
 #, c-format
 msgid "  \\o [FILE]      send all query results to file or |pipe\n"
 msgstr ""
 "  \\o [ARQUIVO]   envia todos os resultados da consulta para arquivo ou |"
 "pipe\n"
 
-#: help.c:208
+#: help.c:206
 #, c-format
 msgid ""
 "  \\qecho [STRING]\n"
@@ -725,17 +735,17 @@ msgstr ""
 "                 escreve cadeia de caracteres para sa�da da consulta (veja "
 "\\o)\n"
 
-#: help.c:212
+#: help.c:210
 #, c-format
 msgid "Informational\n"
 msgstr "Informativo\n"
 
-#: help.c:213
+#: help.c:211
 #, c-format
 msgid "  \\d [NAME]      describe table, index, sequence, or view\n"
 msgstr "  \\d [NOME]      descreve tabela, �ndice, sequ�ncia ou vis�o\n"
 
-#: help.c:214
+#: help.c:212
 #, c-format
 msgid ""
 "  \\d{t|i|s|v|S} [PATTERN] (add \"+\" for more detail)\n"
@@ -744,92 +754,92 @@ msgstr ""
 "  \\d{t|i|s|v|S} [MODELO] (adicione \"+\" para obter mais detalhe)\n"
 "                 lista tabelas/�ndices/sequ�ncias/vis�es/tabelas do sistema\n"
 
-#: help.c:216
+#: help.c:214
 #, c-format
 msgid "  \\da [PATTERN]  list aggregate functions\n"
 msgstr "  \\da [MODELO]   lista fun��es de agrega��o\n"
 
-#: help.c:217
+#: help.c:215
 #, c-format
 msgid "  \\db [PATTERN]  list tablespaces (add \"+\" for more detail)\n"
 msgstr ""
 "  \\db [MODELO]   lista tablespaces (adicione \"+\" para obter mais "
 "detalhe)\n"
 
-#: help.c:218
+#: help.c:216
 #, c-format
 msgid "  \\dc [PATTERN]  list conversions\n"
 msgstr "  \\dc [MODELO]   lista convers�es\n"
 
-#: help.c:219
+#: help.c:217
 #, c-format
 msgid "  \\dC            list casts\n"
 msgstr "  \\dC            lista convers�es de tipos\n"
 
-#: help.c:220
+#: help.c:218
 #, c-format
 msgid "  \\dd [PATTERN]  show comment for object\n"
 msgstr "  \\dd [MODELO]   mostra coment�rio do objeto\n"
 
-#: help.c:221
+#: help.c:219
 #, c-format
 msgid "  \\dD [PATTERN]  list domains\n"
 msgstr "  \\dD [MODELO]   lista dom�nios\n"
 
-#: help.c:222
+#: help.c:220
 #, c-format
 msgid "  \\df [PATTERN]  list functions (add \"+\" for more detail)\n"
 msgstr ""
 "  \\df [MODELO]   lista fun��es (adicione \"+\" para obter mais detalhe)\n"
 
-#: help.c:223
+#: help.c:221
 #, c-format
 msgid "  \\dg [PATTERN]  list groups\n"
 msgstr "  \\dg [MODELO]   lista grupos\n"
 
-#: help.c:224
+#: help.c:222
 #, c-format
 msgid "  \\dn [PATTERN]  list schemas (add \"+\" for more detail)\n"
 msgstr ""
 "  \\dn [MODELO]   lista esquemas (adicione \"+\" para obter mais detalhe)\n"
 
-#: help.c:225
+#: help.c:223
 #, c-format
 msgid "  \\do [NAME]     list operators\n"
 msgstr "  \\do [NOME]     lista operadores\n"
 
-#: help.c:226
+#: help.c:224
 #, c-format
 msgid "  \\dl            list large objects, same as \\lo_list\n"
 msgstr "  \\dl            lista objetos grandes, mesmo que \\lo_list\n"
 
-#: help.c:227
+#: help.c:225
 #, c-format
 msgid "  \\dp [PATTERN]  list table, view, and sequence access privileges\n"
 msgstr ""
 "  \\dp [MODELO]   lista privil�gios de acesso de tabelas, vis�es e "
 "sequ�ncias\n"
 
-#: help.c:228
+#: help.c:226
 #, c-format
 msgid "  \\dT [PATTERN]  list data types (add \"+\" for more detail)\n"
 msgstr ""
 "  \\dT [MODELO]   lista tipos de dado (adicione \"+\" para obter mais "
 "detalhe)\n"
 
-#: help.c:229
+#: help.c:227
 #, c-format
 msgid "  \\du [PATTERN]  list users\n"
 msgstr "  \\du [MODELO]   lista usu�rios\n"
 
-#: help.c:230
+#: help.c:228
 #, c-format
 msgid "  \\l             list all databases (add \"+\" for more detail)\n"
 msgstr ""
 "  \\l             lista todos os bancos de dados (adicione \"+\" para obter "
 "mais detalhe)\n"
 
-#: help.c:231
+#: help.c:229
 #, c-format
 msgid ""
 "  \\z [PATTERN]   list table, view, and sequence access privileges (same as "
@@ -838,24 +848,24 @@ msgstr ""
 "  \\z [MODELO]    lista privil�gios de acesso de tabelas, vis�es e "
 "sequ�ncias (mesmo que \\dp)\n"
 
-#: help.c:234
+#: help.c:232
 #, c-format
 msgid "Formatting\n"
 msgstr "Formata��o\n"
 
-#: help.c:235
+#: help.c:233
 #, c-format
 msgid "  \\a             toggle between unaligned and aligned output mode\n"
 msgstr "  \\a             alterna entre modo de sa�da desalinhado e alinhado\n"
 
-#: help.c:236
+#: help.c:234
 #, c-format
 msgid "  \\C [STRING]    set table title, or unset if none\n"
 msgstr ""
 "  \\C [STRING]    define o t�tulo da tabela, ou apaga caso nada seja "
 "especificado\n"
 
-#: help.c:237
+#: help.c:235
 #, c-format
 msgid ""
 "  \\f [STRING]    show or set field separator for unaligned query output\n"
@@ -863,12 +873,12 @@ msgstr ""
 "  \\f [STRING]    mostra ou define separador de campos para sa�da de "
 "consulta desalinhada\n"
 
-#: help.c:238
+#: help.c:236
 #, c-format
 msgid "  \\H             toggle HTML output mode (currently %s)\n"
 msgstr "  \\H             alterna para modo de sa�da em HTML (atual %s)\n"
 
-#: help.c:240
+#: help.c:238
 #, c-format
 msgid ""
 "  \\pset NAME [VALUE]\n"
@@ -881,36 +891,36 @@ msgstr ""
 "                 (NOME := {format|border|expanded|fieldsep|footer|null|\n"
 "                 recordsep|tuples_only|title|tableattr|pager})\n"
 
-#: help.c:244
+#: help.c:242
 #, c-format
 msgid "  \\t             show only rows (currently %s)\n"
 msgstr "  \\t             mostra somente registros (atual %s)\n"
 
-#: help.c:246
+#: help.c:244
 #, c-format
 msgid "  \\T [STRING]    set HTML <table> tag attributes, or unset if none\n"
 msgstr ""
 "  \\T [STRING]    define atributos do marcador HTML <table> ou apaga caso "
 "nada seja especificado\n"
 
-#: help.c:247
+#: help.c:245
 #, c-format
 msgid "  \\x             toggle expanded output (currently %s)\n"
 msgstr "  \\x             alterna para sa�da expandida (atual %s)\n"
 
-#: help.c:251
+#: help.c:249
 #, c-format
 msgid "Copy, Large Object\n"
 msgstr "C�pia, Objetos Grandes\n"
 
-#: help.c:252
+#: help.c:250
 #, c-format
 msgid ""
 "  \\copy ...      perform SQL COPY with data stream to the client host\n"
 msgstr ""
 "  \\copy ...      realiza comando SQL COPY dos dados para m�quina cliente\n"
 
-#: help.c:253
+#: help.c:251
 #, c-format
 msgid ""
 "  \\lo_export LOBOID FILE\n"
@@ -923,11 +933,11 @@ msgstr ""
 "  \\lo_list\n"
 "  \\lo_unlink OIDLOB    opera��es com objetos grandes\n"
 
-#: help.c:286
+#: help.c:284
 msgid "Available help:\n"
 msgstr "Ajuda dispon�vel:\n"
 
-#: help.c:345
+#: help.c:343
 #, c-format
 msgid ""
 "Command:     %s\n"
@@ -942,7 +952,7 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: help.c:358
+#: help.c:356
 #, c-format
 msgid ""
 "No help available for \"%-.*s\".\n"
@@ -975,45 +985,45 @@ msgstr "%s: transa
 msgid "%s: unknown transaction status\n"
 msgstr "%s: status da transa��o � desconhecido\n"
 
-#: large_obj.c:256 describe.c:83 describe.c:187 describe.c:260 describe.c:322
-#: describe.c:369 describe.c:469 describe.c:758 describe.c:1488
-#: describe.c:1733
+#: large_obj.c:256 describe.c:81 describe.c:185 describe.c:259 describe.c:321
+#: describe.c:368 describe.c:468 describe.c:758 describe.c:1489
+#: describe.c:1737
 msgid "Description"
 msgstr "Descri��o"
 
 #: large_obj.c:264
 msgid "Large objects"
-msgstr "Objetos Grandes"
+msgstr "Objetos grandes"
 
 #: mainloop.c:175
 #, c-format
 msgid "Use \"\\q\" to leave %s.\n"
 msgstr "Use \"\\q\" para sair do %s.\n"
 
-#: print.c:428
+#: print.c:429
 msgid "(No rows)\n"
 msgstr "(Nenhum registro)\n"
 
-#: print.c:1200
+#: print.c:1201
 #, c-format
 msgid "(1 row)"
 msgstr "(1 registro)"
 
-#: print.c:1202
+#: print.c:1203
 #, c-format
 msgid "(%d rows)"
 msgstr "(%d registros)"
 
-#: startup.c:138
+#: startup.c:139
 #, c-format
 msgid "%s: out of memory\n"
 msgstr "%s: sem mem�ria\n"
 
-#: startup.c:182
+#: startup.c:183
 msgid "User name: "
 msgstr "Nome do usu�rio: "
 
-#: startup.c:293
+#: startup.c:294
 #, c-format
 msgid ""
 "Welcome to %s %s, the PostgreSQL interactive terminal.\n"
@@ -1034,41 +1044,41 @@ msgstr ""
 "         \\q para sair\n"
 "\n"
 
-#: startup.c:447
+#: startup.c:448
 #, c-format
 msgid "%s: couldn't set printing parameter \"%s\"\n"
-msgstr "%s: n�o p�de definir par�metro de sa�da \"%s\"\n"
+msgstr "%s: n�o p�de definir par�metro de exibi��o \"%s\"\n"
 
-#: startup.c:493
+#: startup.c:494
 #, c-format
 msgid "%s: could not delete variable \"%s\"\n"
 msgstr "%s: n�o p�de apagar vari�vel \"%s\"\n"
 
-#: startup.c:503
+#: startup.c:504
 #, c-format
 msgid "%s: could not set variable \"%s\"\n"
 msgstr "%s: n�o p�de definir vari�vel \"%s\"\n"
 
-#: startup.c:534 startup.c:540
+#: startup.c:535 startup.c:541
 #, c-format
 msgid "Try \"%s --help\" for more information.\n"
 msgstr "Tente \"%s --help\" para obter mais informa��o.\n"
 
-#: startup.c:558
+#: startup.c:559
 #, c-format
 msgid "%s: warning: extra command-line argument \"%s\" ignored\n"
 msgstr "%s: aviso: argumento extra de linha de comando \"%s\" ignorado\n"
 
-#: startup.c:565
+#: startup.c:566
 #, c-format
 msgid "%s: Warning: The -u option is deprecated. Use -U.\n"
 msgstr "%s: Aviso: A op��o -u est� obsoleta. Use -U.\n"
 
-#: startup.c:627
+#: startup.c:628
 msgid "contains support for command-line editing"
 msgstr "cont�m suporte a edi��o em linha de comando"
 
-#: startup.c:650
+#: startup.c:651
 #, c-format
 msgid ""
 "SSL connection (cipher: %s, bits: %i)\n"
@@ -1077,133 +1087,148 @@ msgstr ""
 "conex�o SSL (cifra: %s, bits: %i)\n"
 "\n"
 
-#: describe.c:82 describe.c:177 describe.c:247 describe.c:320 describe.c:415
-#: describe.c:469 describe.c:1476 describe.c:1585 describe.c:1633
+#: startup.c:674
+#, c-format
+msgid ""
+"Warning: Console code page (%u) differs from Windows code page (%u)\n"
+"         8-bit characters may not work correctly. See psql reference\n"
+"         page \"Notes for Windows users\" for details.\n"
+"\n"
+msgstr ""
+"Aviso: P�gina de c�digo do Console (%u) difere da P�gina de C�digo do "
+"Windows (%u)\n"
+"         caracteres de 8 bits podem n�o funcionar corretamente. Veja p�gina "
+"de\n"
+"         refer�ncia do psql \"Notes for Windows users\" para obter mais "
+"detalhes.\n"
+
+#: describe.c:80 describe.c:175 describe.c:246 describe.c:319 describe.c:414
+#: describe.c:468 describe.c:1477 describe.c:1588 describe.c:1637
 msgid "Schema"
 msgstr "Esquema"
 
-#: describe.c:82 describe.c:128 describe.c:177 describe.c:247 describe.c:320
-#: describe.c:362 describe.c:415 describe.c:469 describe.c:1476
-#: describe.c:1586 describe.c:1634 describe.c:1727
+#: describe.c:80 describe.c:126 describe.c:175 describe.c:246 describe.c:319
+#: describe.c:361 describe.c:414 describe.c:468 describe.c:1477
+#: describe.c:1589 describe.c:1638 describe.c:1731
 msgid "Name"
 msgstr "Nome"
 
-#: describe.c:82
+#: describe.c:80
 msgid "(all types)"
 msgstr "(todos os tipos)"
 
-#: describe.c:83
+#: describe.c:81
 msgid "Data type"
 msgstr "Tipo de dado"
 
-#: describe.c:97
+#: describe.c:95
 msgid "List of aggregate functions"
 msgstr "Lista das fun��es de agrega��o"
 
-#: describe.c:117
+#: describe.c:115
 #, c-format
 msgid "The server version (%d) does not support tablespaces.\n"
 msgstr "A vers�o do servidor (%d) n�o suporta tablespaces.\n"
 
-#: describe.c:128 describe.c:186 describe.c:362 describe.c:1478
-#: describe.c:1727
+#: describe.c:126 describe.c:184 describe.c:361 describe.c:1479
+#: describe.c:1731
 msgid "Owner"
 msgstr "Dono"
 
-#: describe.c:128
+#: describe.c:126
 msgid "Location"
 msgstr "Local"
 
-#: describe.c:133 describe.c:415 describe.c:1733
+#: describe.c:131 describe.c:414 describe.c:1737
 msgid "Access privileges"
 msgstr "Privil�gios de acesso"
 
-#: describe.c:150
+#: describe.c:148
 msgid "List of tablespaces"
 msgstr "Lista das tablespaces"
 
-#: describe.c:177
+#: describe.c:175
 msgid "Result data type"
 msgstr "Tipo de dado do resultado"
 
-#: describe.c:178
+#: describe.c:176
 msgid "Argument data types"
 msgstr "Tipos de dado do argumento"
 
-#: describe.c:186
+#: describe.c:184
 msgid "Language"
 msgstr "Linguagem"
 
-#: describe.c:187
+#: describe.c:185
 msgid "Source code"
 msgstr "C�digo fonte"
 
-#: describe.c:221
+#: describe.c:220
 msgid "List of functions"
 msgstr "Lista de fun��es"
 
-#: describe.c:257
+#: describe.c:256
 msgid "Internal name"
 msgstr "Nome interno"
 
-#: describe.c:257
+#: describe.c:256
 msgid "Size"
 msgstr "Tamanho"
 
-#: describe.c:289
+#: describe.c:288
 msgid "List of data types"
 msgstr "Lista de tipos de dado"
 
-#: describe.c:321
+#: describe.c:320
 msgid "Left arg type"
 msgstr "Tipo de argumento � esquerda"
 
-#: describe.c:321
+#: describe.c:320
 msgid "Right arg type"
 msgstr "Tipo de argumento � direita"
 
-#: describe.c:322
+#: describe.c:321
 msgid "Result type"
 msgstr "Tipo resultante"
 
-#: describe.c:336
+#: describe.c:335
 msgid "List of operators"
-msgstr "Lista de Operadores"
+msgstr "Lista de operadores"
 
-#: describe.c:365
+#: describe.c:364
 msgid "Encoding"
 msgstr "Codifica��o"
 
-#: describe.c:381
+#: describe.c:380
 msgid "List of databases"
 msgstr "Lista dos bancos de dados"
 
-#: describe.c:415 describe.c:543 describe.c:1477
+#: describe.c:414 describe.c:543 describe.c:1478
 msgid "table"
 msgstr "tabela"
 
-#: describe.c:415 describe.c:543 describe.c:1477
+#: describe.c:414 describe.c:543 describe.c:1478
 msgid "view"
 msgstr "vis�o"
 
-#: describe.c:415 describe.c:543 describe.c:1477
+#: describe.c:414 describe.c:543 describe.c:1478
 msgid "sequence"
 msgstr "sequ�ncia"
 
-#: describe.c:415 describe.c:745 describe.c:1478 describe.c:1587
+#: describe.c:414 describe.c:745 describe.c:1479 describe.c:1590
 msgid "Type"
 msgstr "Tipo"
 
-#: describe.c:437
+#: describe.c:436
 #, c-format
 msgid "Access privileges for database \"%s\""
-msgstr "Privil�gios de acesso no banco dados \"%s\""
+msgstr "Privil�gios de acesso ao banco dados \"%s\""
 
-#: describe.c:469
+#: describe.c:468
 msgid "Object"
 msgstr "Objeto"
 
-#: describe.c:480
+#: describe.c:479
 msgid "aggregate"
 msgstr "agrega��o"
 
@@ -1219,7 +1244,7 @@ msgstr "operador"
 msgid "data type"
 msgstr "tipo de dado"
 
-#: describe.c:543 describe.c:1477
+#: describe.c:543 describe.c:1478
 msgid "index"
 msgstr "�ndice"
 
@@ -1324,176 +1349,180 @@ msgstr ""
 "Defini��o da vis�o:\n"
 "%s"
 
-#: describe.c:983 describe.c:1204
+#: describe.c:983 describe.c:1205
 msgid "Rules:"
 msgstr "Regras:"
 
-#: describe.c:1138
+#: describe.c:1139
 msgid "Indexes:"
 msgstr "�ndices:"
 
-#: describe.c:1146
+#: describe.c:1147
 #, c-format
 msgid "    \"%s\""
 msgstr "    \"%s\""
 
-#: describe.c:1174
+#: describe.c:1175
 msgid "Check constraints:"
 msgstr "Restri��es de verifica��o:"
 
-#: describe.c:1178 describe.c:1193
+#: describe.c:1179 describe.c:1194
 #, c-format
 msgid "    \"%s\" %s"
 msgstr "    \"%s\" %s"
 
-#: describe.c:1189
+#: describe.c:1190
 msgid "Foreign-key constraints:"
 msgstr "Restri��es de chave estrangeira:"
 
-#: describe.c:1223
+#: describe.c:1224
 msgid "Triggers:"
 msgstr "Gatilhos:"
 
-#: describe.c:1245
+#: describe.c:1246
 msgid "Inherits"
 msgstr "Heran�as"
 
-#: describe.c:1259
+#: describe.c:1260
 msgid "Has OIDs"
 msgstr "T�m OIDs"
 
-#: describe.c:1262 describe.c:1637 describe.c:1694
+#: describe.c:1263 describe.c:1641 describe.c:1698
 msgid "yes"
 msgstr "sim"
 
-#: describe.c:1262 describe.c:1638 describe.c:1692
+#: describe.c:1263 describe.c:1642 describe.c:1696
 msgid "no"
 msgstr "n�o"
 
-#: describe.c:1342
+#: describe.c:1343
 #, c-format
 msgid "Tablespace: \"%s\""
 msgstr "Tablespace: \"%s\""
 
-#: describe.c:1375
+#: describe.c:1376
 msgid "User name"
 msgstr "Usu�rio"
 
-#: describe.c:1375
+#: describe.c:1376
 msgid "User ID"
 msgstr "ID do usu�rio"
 
-#: describe.c:1376
+#: describe.c:1377
 msgid "superuser, create database"
 msgstr "super-usu�rio, cria banco de dados"
 
-#: describe.c:1377
+#: describe.c:1378
 msgid "superuser"
 msgstr "super-usu�rio"
 
-#: describe.c:1377
+#: describe.c:1378
 msgid "create database"
 msgstr "cria banco de dados"
 
-#: describe.c:1378
+#: describe.c:1379
 msgid "Attributes"
 msgstr "Atributos"
 
-#: describe.c:1378
+#: describe.c:1379
 msgid "Groups"
 msgstr "Grupos"
 
-#: describe.c:1391
+#: describe.c:1392
 msgid "List of users"
 msgstr "Lista de usu�rios"
 
-#: describe.c:1418
+#: describe.c:1419
 msgid "Group name"
 msgstr "Nome do Grupo"
 
-#: describe.c:1418
+#: describe.c:1419
 msgid "Group ID"
 msgstr "ID do Grupo"
 
-#: describe.c:1431
+#: describe.c:1432
 msgid "List of groups"
 msgstr "Lista de grupos"
 
-#: describe.c:1478
+#: describe.c:1479
 msgid "special"
 msgstr "especial"
 
-#: describe.c:1483
+#: describe.c:1484
 msgid "Table"
 msgstr "Tabela"
 
-#: describe.c:1542
+#: describe.c:1543
 #, c-format
 msgid "No matching relations found.\n"
 msgstr "Nenhuma rela��o correspondente foi encontrada.\n"
 
-#: describe.c:1544
+#: describe.c:1545
 #, c-format
 msgid "No relations found.\n"
 msgstr "Nenhuma rela��o encontrada.\n"
 
-#: describe.c:1549
+#: describe.c:1550
 msgid "List of relations"
 msgstr "Lista de rela��es"
 
-#: describe.c:1588
+#: describe.c:1591
 msgid "Modifier"
 msgstr "Modificador"
 
-#: describe.c:1602
+#: describe.c:1592
+msgid "Check"
+msgstr "Verifica��o"
+
+#: describe.c:1606
 msgid "List of domains"
 msgstr "Lista de dom�nios"
 
-#: describe.c:1635
+#: describe.c:1639
 msgid "Source"
 msgstr "Fonte"
 
-#: describe.c:1636
+#: describe.c:1640
 msgid "Destination"
 msgstr "Destino"
 
-#: describe.c:1639
+#: describe.c:1643
 msgid "Default?"
 msgstr "Padr�o?"
 
-#: describe.c:1653
+#: describe.c:1657
 msgid "List of conversions"
 msgstr "Lista de convers�es"
 
-#: describe.c:1688
+#: describe.c:1692
 msgid "Source type"
 msgstr "Tipo Fonte"
 
-#: describe.c:1689
+#: describe.c:1693
 msgid "Target type"
 msgstr "Tipo Alvo"
 
-#: describe.c:1690
+#: describe.c:1694
 msgid "(binary compatible)"
 msgstr "(binariamente compat�veis)"
 
-#: describe.c:1691
+#: describe.c:1695
 msgid "Function"
 msgstr "Fun��o"
 
-#: describe.c:1693
+#: describe.c:1697
 msgid "in assignment"
 msgstr "em atribui��o"
 
-#: describe.c:1695
+#: describe.c:1699
 msgid "Implicit?"
 msgstr "Impl�cito?"
 
-#: describe.c:1703
+#: describe.c:1707
 msgid "List of casts"
 msgstr "Lista de convers�es de tipos"
 
-#: describe.c:1753
+#: describe.c:1757
 msgid "List of schemas"
 msgstr "Lista de esquemas"
 
@@ -1582,11 +1611,25 @@ msgstr "muda a defini
 
 #: sql_help.h:46
 msgid ""
+"ALTER FUNCTION name ( [ type [, ...] ] ) action [, ... ] [ RESTRICT ]\n"
 "ALTER FUNCTION name ( [ type [, ...] ] ) RENAME TO newname\n"
-"ALTER FUNCTION name ( [ type [, ...] ] ) OWNER TO newowner"
+"ALTER FUNCTION name ( [ type [, ...] ] ) OWNER TO newowner\n"
+"\n"
+"where action is one of:\n"
+"\n"
+"    CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n"
+"    IMMUTABLE | STABLE | VOLATILE\n"
+"    [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER"
 msgstr ""
+"ALTER FUNCTION nome ( [ tipo [, ...] ] ) a��o [, ... ] [ RESTRICT ]\n"
 "ALTER FUNCTION nome ( [ tipo [, ...] ] ) RENAME TO novo_nome\n"
-"ALTER FUNCTION nome ( [ tipo [, ...] ] ) OWNER TO novo_dono"
+"ALTER FUNCTION nome ( [ tipo [, ...] ] ) OWNER TO novo_dono\n"
+"\n"
+"onde a��o � uma das:\n"
+"\n"
+"    CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n"
+"    IMMUTABLE | STABLE | VOLATILE\n"
+"    [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER"
 
 #: sql_help.h:49
 msgid "change a user group"
@@ -1610,25 +1653,21 @@ msgstr "muda a defini
 
 #: sql_help.h:54
 msgid ""
-"ALTER INDEX name \n"
-"    action [, ... ]\n"
-"ALTER INDEX name\n"
-"    RENAME TO new_name\n"
+"ALTER INDEX name action [, ... ]\n"
+"ALTER INDEX name RENAME TO new_name\n"
 "\n"
 "where action is one of:\n"
 "\n"
 "    OWNER TO new_owner\n"
 "    SET TABLESPACE indexspace_name"
 msgstr ""
-"ALTER INDEX nome \n"
-"    a��o [, ... ]\n"
-"ALTER INDEX nome\n"
-"    RENAME TO novo_nome\n"
+"ALTER INDEX nome a��o [, ... ]\n"
+"ALTER INDEX nome RENAME TO novo_nome\n"
 "\n"
 "onde a��o � uma das:\n"
 "\n"
 "    OWNER TO novo_dono\n"
-"    SET TABLESPACE nome_indexspace"
+"    SET TABLESPACE caminho_indice"
 
 #: sql_help.h:57
 msgid "change the definition of a procedural language"
@@ -1940,11 +1979,12 @@ msgid ""
 "COPY tablename [ ( column [, ...] ) ]\n"
 "    FROM { 'filename' | STDIN }\n"
 "    [ [ WITH ] \n"
-"          [ BINARY ] \n"
+"          [ BINARY ]\n"
 "          [ OIDS ]\n"
 "          [ DELIMITER [ AS ] 'delimiter' ]\n"
 "          [ NULL [ AS ] 'null string' ]\n"
-"          [ CSV [ QUOTE [ AS ] 'quote' ] \n"
+"          [ CSV [ HEADER ]\n"
+"                [ QUOTE [ AS ] 'quote' ] \n"
 "                [ ESCAPE [ AS ] 'escape' ]\n"
 "                [ FORCE NOT NULL column [, ...] ]\n"
 "\n"
@@ -1952,10 +1992,12 @@ msgid ""
 "    TO { 'filename' | STDOUT }\n"
 "    [ [ WITH ] \n"
 "          [ BINARY ]\n"
+"          [ HEADER ]\n"
 "          [ OIDS ]\n"
 "          [ DELIMITER [ AS ] 'delimiter' ]\n"
 "          [ NULL [ AS ] 'null string' ]\n"
-"          [ CSV [ QUOTE [ AS ] 'quote' ] \n"
+"          [ CSV [ HEADER ]\n"
+"                [ QUOTE [ AS ] 'quote' ] \n"
 "                [ ESCAPE [ AS ] 'escape' ]\n"
 "                [ FORCE QUOTE column [, ...] ]"
 msgstr ""
@@ -1966,7 +2008,8 @@ msgstr ""
 "          [ OIDS ]\n"
 "          [ DELIMITER [ AS ] 'delimitador' ]\n"
 "          [ NULL [ AS ] 'cadeia nula' ] ]\n"
-"          [ CSV [ QUOTE [ AS ] 'separador' ] \n"
+"          [ CSV [ HEADER ]\n"
+"                [ QUOTE [ AS ] 'separador' ] \n"
 "                [ ESCAPE [ AS ] 'escape' ]\n"
 "                [ FORCE NOT NULL coluna [, ...] ]\n"
 "\n"
@@ -1974,10 +2017,12 @@ msgstr ""
 "    TO { 'arquivo' | STDOUT }\n"
 "    [ [ WITH ] \n"
 "          [ BINARY ]\n"
+"          [ HEADER ]\n"
 "          [ OIDS ]\n"
 "          [ DELIMITER [ AS ] 'delimitador' ]\n"
-"          [ NULL [ AS ] 'cadeia nula' ] ]          [ CSV [ QUOTE [ AS ] "
-"'separador' ] \n"
+"          [ NULL [ AS ] 'cadeia nula' ] ]\n"
+"          [ CSV [ HEADER ]\n"
+"                [ QUOTE [ AS ] 'separador' ] \n"
 "                [ ESCAPE [ AS ] 'escape' ]\n"
 "                [ FORCE QUOTE coluna [, ...] ]"
 
@@ -1993,6 +2038,7 @@ msgid ""
 "    STYPE = state_data_type\n"
 "    [ , FINALFUNC = ffunc ]\n"
 "    [ , INITCOND = initial_condition ]\n"
+"    [ , SORTOP = sort_operator ]\n"
 ")"
 msgstr ""
 "CREATE AGGREGATE nome (\n"
@@ -2001,6 +2047,7 @@ msgstr ""
 "    STYPE = tipo_dado_estado\n"
 "    [ , FINALFUNC = fun��o_final ]\n"
 "    [ , INITCOND = condi��o_inicial ]\n"
+"    [ , SORTOP = operador_ordena��o ]\n"
 ")"
 
 #: sql_help.h:133
@@ -2042,8 +2089,8 @@ msgstr ""
 "    FOR EACH ROW EXECUTE PROCEDURE nome_fun��o ( argumentos )"
 
 #: sql_help.h:141
-msgid "define a new conversion"
-msgstr "define uma nova convers�o"
+msgid "define a new encoding conversion"
+msgstr "define uma nova convers�o de codifica��o"
 
 #: sql_help.h:142
 msgid ""
@@ -2101,8 +2148,9 @@ msgstr "define uma nova fun
 
 #: sql_help.h:154
 msgid ""
-"CREATE [ OR REPLACE ] FUNCTION name ( [ [ argname ] argtype [, ...] ] )\n"
-"    RETURNS rettype\n"
+"CREATE [ OR REPLACE ] FUNCTION\n"
+"    name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n"
+"    [ RETURNS rettype ]\n"
 "  { LANGUAGE langname\n"
 "    | IMMUTABLE | STABLE | VOLATILE\n"
 "    | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n"
@@ -2112,9 +2160,10 @@ msgid ""
 "  } ...\n"
 "    [ WITH ( attribute [, ...] ) ]"
 msgstr ""
-"CREATE [ OR REPLACE ] FUNCTION nome ( [ [ nome_argumento ] tipo_argumento "
-"[, ...] ] )\n"
-"    RETURNS tipo_retorno\n"
+"CREATE [ OR REPLACE ] FUNCTION\n"
+"    nome ( [ [ modo_argumento ] [ nome_argumento ] tipo_argumento "
+"[, ... ] ] )\n"
+"    [ RETURNS tipo_retorno ]\n"
 "  { LANGUAGE nome_linguagem\n"
 "    | IMMUTABLE | STABLE | VOLATILE\n"
 "    | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n"
@@ -2458,9 +2507,12 @@ msgid "define a new view"
 msgstr "define uma nova vis�o"
 
 #: sql_help.h:214
-msgid "CREATE [ OR REPLACE ] VIEW name [ ( column_name [, ...] ) ] AS query"
+msgid ""
+"CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW name [ ( column_name "
+"[, ...] ) ] AS query"
 msgstr ""
-"CREATE [ OR REPLACE ] VIEW nome [ ( nome_coluna [, ...] ) ] AS consulta"
+"CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW nome [ ( nome_coluna "
+"[, ...] ) ] AS consulta"
 
 #: sql_help.h:217
 msgid "deallocate a prepared statement"
@@ -2468,7 +2520,7 @@ msgstr "desaloca um comando preparado"
 
 #: sql_help.h:218
 msgid "DEALLOCATE [ PREPARE ] plan_name"
-msgstr "DEALLOCATE [ PREPARE ] nome_plan"
+msgstr "DEALLOCATE [ PREPARE ] nome_plano"
 
 #: sql_help.h:221
 msgid "define a cursor"
@@ -2486,11 +2538,17 @@ msgstr ""
 
 #: sql_help.h:225
 msgid "delete rows of a table"
-msgstr "apaga linhas de uma tabela"
+msgstr "apaga registros de uma tabela"
 
 #: sql_help.h:226
-msgid "DELETE FROM [ ONLY ] table [ WHERE condition ]"
-msgstr "DELETE FROM [ ONLY ] tabela [ WHERE condi��o ]"
+msgid ""
+"DELETE FROM [ ONLY ] table\n"
+"    [ USING usinglist ]\n"
+"    [ WHERE condition ]"
+msgstr ""
+"DELETE FROM [ ONLY ] tabela\n"
+"    [ USING lista_de ]\n"
+"    [ WHERE condi��o ]"
 
 #: sql_help.h:229
 msgid "remove an aggregate function"
@@ -2622,7 +2680,7 @@ msgstr "remove uma tablespace"
 
 #: sql_help.h:290
 msgid "DROP TABLESPACE tablespacename"
-msgstr "DROP TABLESPACE nome"
+msgstr "DROP TABLESPACE nome_tablespace"
 
 #: sql_help.h:293
 msgid "remove a trigger"
@@ -2666,7 +2724,7 @@ msgstr "executa um comando preparado"
 
 #: sql_help.h:314
 msgid "EXECUTE plan_name [ (parameter [, ...] ) ]"
-msgstr "EXECUTE nome_plan [ (par�metro [, ...] ) ]"
+msgstr "EXECUTE nome_plano [ (par�metro [, ...] ) ]"
 
 #: sql_help.h:317
 msgid "show the execution plan of a statement"
@@ -2857,7 +2915,7 @@ msgstr "prepara um comando para execu
 
 #: sql_help.h:354
 msgid "PREPARE plan_name [ (datatype [, ...] ) ] AS statement"
-msgstr "PREPARE nome_plan [ (tipo_dado [, ...] ) ] AS comando"
+msgstr "PREPARE nome_plano [ (tipo_dado [, ...] ) ] AS comando"
 
 #: sql_help.h:357
 msgid "rebuild indexes"
@@ -3003,7 +3061,7 @@ msgid ""
 "    [ ORDER BY expression [ ASC | DESC | USING operator ] [, ...] ]\n"
 "    [ LIMIT { count | ALL } ]\n"
 "    [ OFFSET start ]\n"
-"    [ FOR UPDATE [ OF table_name [, ...] ] ]\n"
+"    [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] ]\n"
 "\n"
 "where from_item can be one of:\n"
 "\n"
@@ -3025,7 +3083,7 @@ msgstr ""
 "    [ ORDER BY express�o [ ASC | DESC | USING operador ] [, ...] ]\n"
 "    [ LIMIT { contador | ALL } ]\n"
 "    [ OFFSET in�cio ]\n"
-"    [ FOR UPDATE [ OF nome_tabela [, ...] ] ]\n"
+"    [ FOR { UPDATE | SHARE } [ OF nome_tabela [, ...] ] ]\n"
 "\n"
 "onde item_de pode ser um dos:\n"
 "\n"
@@ -3051,7 +3109,7 @@ msgid ""
 "    [ ORDER BY expression [ ASC | DESC | USING operator ] [, ...] ]\n"
 "    [ LIMIT { count | ALL } ]\n"
 "    [ OFFSET start ]\n"
-"    [ FOR UPDATE [ OF tablename [, ...] ] ]"
+"    [ FOR { UPDATE | SHARE } [ OF tablename [, ...] ] ]"
 msgstr ""
 "SELECT [ ALL | DISTINCT [ ON ( express�o [, ...] ) ] ]\n"
 "    * | express�o [ AS nome_sa�da ] [, ...]\n"
@@ -3064,7 +3122,7 @@ msgstr ""
 "    [ ORDER BY express�o [ ASC | DESC | USING operador ] [, ...] ]\n"
 "    [ LIMIT { contador | ALL } ]\n"
 "    [ OFFSET in�cio ]\n"
-"    [ FOR UPDATE [ OF nome_tabela [, ...] ] ]"
+"    [ FOR { UPDATE | SHARE } [ OF nome_tabela [, ...] ] ]"
 
 #: sql_help.h:393
 msgid "change a run-time parameter"
@@ -3159,12 +3217,12 @@ msgstr ""
 "    READ WRITE | READ ONLY"
 
 #: sql_help.h:417
-msgid "empty a table"
-msgstr "esvazia uma tabela"
+msgid "empty a table or set of tables"
+msgstr "esvazia uma tabela ou um conjunto de tabelas"
 
 #: sql_help.h:418
-msgid "TRUNCATE [ TABLE ] name"
-msgstr "TRUNCATE [ TABLE ] nome"
+msgid "TRUNCATE [ TABLE ] name [, ...]"
+msgstr "TRUNCATE [ TABLE ] nome [, ...]"
 
 #: sql_help.h:421
 msgid "stop listening for a notification"
@@ -3244,3 +3302,13 @@ msgstr "processo filho foi terminado pelo sinal %d"
 #, c-format
 msgid "child process exited with unrecognized status %d"
 msgstr "processo filho terminou com status desconhecido %d"
+
+#~ msgid ""
+#~ "ALTER FUNCTION name ( [ type [, ...] ] ) RENAME TO newname\n"
+#~ "ALTER FUNCTION name ( [ type [, ...] ] ) OWNER TO newowner"
+#~ msgstr ""
+#~ "ALTER FUNCTION nome ( [ tipo [, ...] ] ) RENAME TO novo_nome\n"
+#~ "ALTER FUNCTION nome ( [ tipo [, ...] ] ) OWNER TO novo_dono"
+
+#~ msgid "empty a table"
+#~ msgstr "esvazia uma tabela"
diff --git a/src/bin/psql/po/ru.po b/src/bin/psql/po/ru.po
index 56569f0..ba669d7 100644
--- a/src/bin/psql/po/ru.po
+++ b/src/bin/psql/po/ru.po
@@ -1,12 +1,13 @@
 # ru.po
 # PSQL Translated Messages into the Russian Language (KOI8-R)
 #
-# Copyright (c) 2001-2004 Serguei A. Mokhov, mokhov@cs.concordia.ca
+# Copyright (c) 2001-2005 Serguei A. Mokhov, mokhov@cs.concordia.ca
 # Distributed under the same licensing terms as PostgreSQL itself.
 #
 # $PostgreSQL$
 #
 # ChangeLog:
+#   - January 17, 2005: Complete translation for 8.0, Serguei A. Mokhov <mokhov@cs.concordia.ca>
 #   - December, 2004 - January, 2005: New translation by Oleg Bartunov <oleg@sai.msu.su>
 #   - March 27 - December 10, 2004: Updates for 8.0; <mokhov@cs.concordia.ca>
 #   - July 26 - October 12, 2003: Updates for 7.4.x; <mokhov@cs.concordia.ca>
@@ -17,8 +18,8 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PostgreSQL 8.0\n"
-"POT-Creation-Date: 2004-12-10 19:09+0000\n"
-"PO-Revision-Date: 2004-12-10 21:59-0500\n"
+"POT-Creation-Date: 2005-01-17 19:06+0000\n"
+"PO-Revision-Date: 2005-01-17 15:36-0500\n"
 "Last-Translator: Serguei A. Mokhov <mokhov@cs.concordia.ca>\n"
 "Language-Team: pgsql-ru-general <pgsql-ru-general@postgresql.org>\n"
 "MIME-Version: 1.0\n"
@@ -41,56 +42,56 @@ msgstr "
 msgid "invalid command \\%s\n"
 msgstr "�������� ������� \\%s\n"
 
-#: command.c:135
+#: command.c:137
 #, c-format
 msgid "\\%s: extra argument \"%s\" ignored\n"
 msgstr "\\%s: ������ ��������: \"%s\" -- ��������\n"
 
-#: command.c:244
+#: command.c:254
 #, c-format
 msgid "could not get home directory: %s\n"
 msgstr "�� ������� �������� �������� (home) ����������: %s\n"
 
-#: command.c:260
+#: command.c:270
 #, c-format
 msgid "\\%s: could not change directory to \"%s\": %s\n"
 msgstr "\\%s: �� ������� �������� ���������� �� \"%s\": %s\n"
 
-#: command.c:374
-#: command.c:766
+#: command.c:384
+#: command.c:776
 msgid "no query buffer\n"
 msgstr "��� ������ ��������\n"
 
-#: command.c:437
+#: command.c:447
 #, c-format
 msgid "%s: invalid encoding name or conversion procedure not found\n"
 msgstr "%s: �������� �������� ��������� �������� ��� ��������� ������������� �� �������\n"
 
-#: command.c:505
-#: command.c:539
-#: command.c:553
-#: command.c:570
-#: command.c:616
-#: command.c:746
-#: command.c:777
+#: command.c:515
+#: command.c:549
+#: command.c:563
+#: command.c:580
+#: command.c:626
+#: command.c:756
+#: command.c:787
 #, c-format
 msgid "\\%s: missing required argument\n"
 msgstr "\\%s: ����������� ����������� ��������\n"
 
-#: command.c:602
+#: command.c:612
 msgid "Query buffer is empty."
 msgstr "����� �������� ����."
 
-#: command.c:636
+#: command.c:646
 msgid "Query buffer reset (cleared)."
 msgstr "����� �������� ������� (������)."
 
-#: command.c:650
+#: command.c:660
 #, c-format
 msgid "Wrote history to file \"%s\".\n"
 msgstr "������� �������� � ���� \"%s\".\n"
 
-#: command.c:687
+#: command.c:697
 #: common.c:85
 #: common.c:99
 #: mainloop.c:71
@@ -110,30 +111,30 @@ msgstr "
 msgid "out of memory\n"
 msgstr "������������ ������\n"
 
-#: command.c:702
-#: command.c:751
+#: command.c:712
+#: command.c:761
 #, c-format
 msgid "\\%s: error\n"
 msgstr "\\%s: ������\n"
 
-#: command.c:732
+#: command.c:742
 msgid "Timing is on."
 msgstr "C��������� �������."
 
-#: command.c:734
+#: command.c:744
 msgid "Timing is off."
 msgstr "C��������� ��������."
 
-#: command.c:794
-#: command.c:814
-#: command.c:1199
-#: command.c:1206
+#: command.c:804
+#: command.c:824
+#: command.c:1209
 #: command.c:1216
-#: command.c:1228
-#: command.c:1241
-#: command.c:1255
-#: command.c:1277
-#: command.c:1308
+#: command.c:1226
+#: command.c:1238
+#: command.c:1251
+#: command.c:1265
+#: command.c:1287
+#: command.c:1318
 #: common.c:170
 #: copy.c:530
 #: copy.c:575
@@ -141,14 +142,14 @@ msgstr "C
 msgid "%s: %s\n"
 msgstr "%s: %s\n"
 
-#: command.c:921
-#: command.c:945
+#: command.c:931
+#: command.c:955
 #: startup.c:188
 #: startup.c:206
 msgid "Password: "
 msgstr "������: "
 
-#: command.c:959
+#: command.c:969
 #: common.c:216
 #: common.c:685
 #: common.c:740
@@ -157,142 +158,142 @@ msgstr "
 msgid "%s"
 msgstr "%s"
 
-#: command.c:963
+#: command.c:973
 msgid "Previous connection kept\n"
 msgstr "���������� ���������� ���������\n"
 
-#: command.c:975
+#: command.c:985
 #, c-format
 msgid "\\connect: %s"
 msgstr "\\����������: %s"
 
-#: command.c:987
+#: command.c:997
 #, c-format
 msgid "You are now connected to database \"%s\".\n"
 msgstr "�� �������������� � ���� ������ \"%s\".\n"
 
-#: command.c:989
+#: command.c:999
 #, c-format
 msgid "You are now connected as new user \"%s\".\n"
 msgstr "�� ����������� ��� ����� ������������ \"%s\".\n"
 
-#: command.c:992
+#: command.c:1002
 #, c-format
 msgid "You are now connected to database \"%s\" as user \"%s\".\n"
 msgstr "�� �������������� � ���� ������ \"%s\" ��� ������������ \"%s\".\n"
 
-#: command.c:1117
+#: command.c:1127
 #, c-format
 msgid "could not start editor \"%s\"\n"
 msgstr "�� ������� ��������� �������� \"%s\"\n"
 
-#: command.c:1119
+#: command.c:1129
 msgid "could not start /bin/sh\n"
 msgstr "�� ������� ��������� /bin/sh\n"
 
-#: command.c:1158
+#: command.c:1168
 #, c-format
 msgid "cannot locate temporary directory: %s"
 msgstr "�� ������� ����� ��������� ����������: %s"
 
-#: command.c:1184
+#: command.c:1194
 #, c-format
 msgid "could not open temporary file \"%s\": %s\n"
 msgstr "�� ������� ������� ��������� ���� \"%s\": %s\n"
 
-#: command.c:1376
+#: command.c:1386
 msgid "\\pset: allowed formats are unaligned, aligned, html, latex\n"
 msgstr "\\pset: ����������� �������: unaligned, aligned, html � latex\n"
 
-#: command.c:1381
+#: command.c:1391
 #, c-format
 msgid "Output format is %s.\n"
 msgstr "������ ������: %s.\n"
 
-#: command.c:1391
+#: command.c:1401
 #, c-format
 msgid "Border style is %d.\n"
 msgstr "����� �������: %d.\n"
 
-#: command.c:1400
+#: command.c:1410
 msgid "Expanded display is on.\n"
 msgstr "����������� ����� �������.\n"
 
-#: command.c:1401
+#: command.c:1411
 msgid "Expanded display is off.\n"
 msgstr "����������� ����� ��������.\n"
 
-#: command.c:1413
+#: command.c:1423
 #, c-format
 msgid "Null display is \"%s\".\n"
 msgstr "Null ������������ ���: \"%s\".\n"
 
-#: command.c:1425
+#: command.c:1435
 #, c-format
 msgid "Field separator is \"%s\".\n"
 msgstr "����������� �����: \"%s\".\n"
 
-#: command.c:1439
+#: command.c:1449
 msgid "Record separator is <newline>."
 msgstr "����������� �������: <newline>."
 
-#: command.c:1441
+#: command.c:1451
 #, c-format
 msgid "Record separator is \"%s\".\n"
 msgstr "����������� �������: \"%s\".\n"
 
-#: command.c:1452
+#: command.c:1462
 msgid "Showing only tuples."
 msgstr "������������ ������ ������."
 
-#: command.c:1454
+#: command.c:1464
 msgid "Tuples only is off."
 msgstr "����� \"������ ������\" ��������."
 
-#: command.c:1470
+#: command.c:1480
 #, c-format
 msgid "Title is \"%s\".\n"
 msgstr "���������: \"%s\".\n"
 
-#: command.c:1472
+#: command.c:1482
 msgid "Title is unset.\n"
 msgstr "��������� �� �����.\n"
 
-#: command.c:1488
+#: command.c:1498
 #, c-format
 msgid "Table attribute is \"%s\".\n"
 msgstr "������� HTML �������: \"%s\".\n"
 
-#: command.c:1490
+#: command.c:1500
 msgid "Table attributes unset.\n"
 msgstr "�������� HTML ������� �� ������.\n"
 
-#: command.c:1506
+#: command.c:1516
 msgid "Pager is used for long output."
 msgstr "������������ Pager ��� ��������� �������� ������."
 
-#: command.c:1508
+#: command.c:1518
 msgid "Pager is always used."
 msgstr "������ ������������ Pager."
 
-#: command.c:1510
+#: command.c:1520
 msgid "Pager usage is off."
 msgstr "������������� Pager ���������."
 
-#: command.c:1521
+#: command.c:1531
 msgid "Default footer is on."
 msgstr "������ ���������� ��-��������� �������."
 
-#: command.c:1523
+#: command.c:1533
 msgid "Default footer is off."
 msgstr "������ ���������� ��-��������� ��������."
 
-#: command.c:1529
+#: command.c:1539
 #, c-format
 msgid "\\pset: unknown option: %s\n"
 msgstr "\\pset: ����������� �����: %s\n"
 
-#: command.c:1582
+#: command.c:1592
 msgid "\\!: failed\n"
 msgstr "\\!: ��������\n"
 
@@ -879,12 +880,12 @@ msgstr ""
 "��� ������� �� \"%-.*s\".\n"
 "���������� \\h ��� ���������� ��� ��������� ��������� ����������.\n"
 
-#: input.c:210
+#: input.c:211
 #, c-format
 msgid "could not save history to file \"%s\": %s\n"
 msgstr "�� ������� ��������� ������� � ����\"%s\": %s\n"
 
-#: input.c:213
+#: input.c:214
 msgid "history is not supported by this installation\n"
 msgstr "������� �� �������������� � ���� ���������\n"
 
@@ -938,7 +939,7 @@ msgstr "(1 
 msgid "(%d rows)"
 msgstr "(�������: %d)"
 
-#: startup.c:133
+#: startup.c:138
 #, c-format
 msgid "%s: out of memory\n"
 msgstr "%s: ������������ ������\n"
@@ -999,11 +1000,11 @@ msgstr "%s: 
 msgid "%s: Warning: The -u option is deprecated. Use -U.\n"
 msgstr "%s: ��������: ����� -u ��������. ����������� -U.\n"
 
-#: startup.c:630
+#: startup.c:627
 msgid "contains support for command-line editing"
 msgstr "�������� ��������� �������������� ��������� ������"
 
-#: startup.c:653
+#: startup.c:650
 #, c-format
 msgid ""
 "SSL connection (cipher: %s, bits: %i)\n"
@@ -1012,6 +1013,19 @@ msgstr ""
 "SSL ���������� (����: %s, ����: %i)\n"
 "\n"
 
+#: startup.c:673
+#, c-format
+msgid ""
+"Warning: Console code page (%u) differs from Windows code page (%u)\n"
+"         8-bit characters may not work correctly. See psql reference\n"
+"         page \"Notes for Windows users\" for details.\n"
+"\n"
+msgstr ""
+"��������: ������� �������� ������� (%u) ���������� �� ������� �������� Windows (%u)\n"
+"         8-������� ������� ����� �� ��������� ������������. ��. psql ��������\n"
+"         ������������ \"Notes for Windows users\" ��� ����� ��������� ����������.\n"
+"\n"
+
 #: describe.c:82
 #: describe.c:177
 #: describe.c:247
@@ -1536,18 +1550,18 @@ msgid ""
 "ALTER DOMAIN name\n"
 "    DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]\n"
 "ALTER DOMAIN name\n"
-"    OWNER TO new_owner\n"
+"    OWNER TO new_owner"
 msgstr ""
-"ALTER DOMAIN name\n"
-"    { SET DEFAULT expression | DROP DEFAULT }\n"
-"ALTER DOMAIN name\n"
+"ALTER DOMAIN ���\n"
+"    { SET DEFAULT ��������� | DROP DEFAULT }\n"
+"ALTER DOMAIN ���\n"
 "    { SET | DROP } NOT NULL\n"
-"ALTER DOMAIN name\n"
-"    ADD domain_constraint\n"
-"ALTER DOMAIN name\n"
-"    DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]\n"
 "ALTER DOMAIN ���\n"
-"    OWNER TO new_owner\n"
+"    ADD �����������_������\n"
+"ALTER DOMAIN ���\n"
+"    DROP CONSTRAINT ���_����������� [ RESTRICT | CASCADE ]\n"
+"ALTER DOMAIN ���\n"
+"    OWNER TO �����_��������"
 
 #: sql_help.h:45
 msgid "change the definition of a function"
@@ -1751,9 +1765,9 @@ msgid ""
 "\n"
 "where option can be:\n"
 "\n"
-"    [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' \n"
-"    | CREATEDB | NOCREATEDB\n"
+"    CREATEDB | NOCREATEDB\n"
 "    | CREATEUSER | NOCREATEUSER \n"
+"    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' \n"
 "    | VALID UNTIL 'abstime'\n"
 "\n"
 "ALTER USER name RENAME TO newname\n"
@@ -1761,19 +1775,19 @@ msgid ""
 "ALTER USER name SET parameter { TO | = } { value | DEFAULT }\n"
 "ALTER USER name RESET parameter"
 msgstr ""
-"ALTER USER name [ [ WITH ] option [ ... ] ]\n"
+"ALTER USER ���[ [ WITH ] ����� [ ... ] ]\n"
 "\n"
-"��� option ����� ����:\n"
+"��� ����� ����� ����:\n"
 "\n"
-"    [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' \n"
-"    | CREATEDB | NOCREATEDB\n"
+"    CREATEDB | NOCREATEDB\n"
 "    | CREATEUSER | NOCREATEUSER \n"
+"    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD '������' \n"
 "    | VALID UNTIL 'abstime'\n"
 "\n"
-"ALTER USER name RENAME TO newname\n"
+"ALTER USER ��� RENAME TO �����_���\n"
 "\n"
-"ALTER USER name SET parameter { TO | = } { value | DEFAULT }\n"
-"ALTER USER name RESET parameter"
+"ALTER USER ��� SET �������� { TO | = } { �������� | DEFAULT }\n"
+"ALTER USER ��� RESET ��������"
 
 #: sql_help.h:97
 msgid "collect statistics about a database"
@@ -2299,10 +2313,10 @@ msgstr "
 #: sql_help.h:194
 msgid ""
 "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name [ (column_name [, ...] ) ] [ [ WITH | WITHOUT ] OIDS ]\n"
-"    AS query\n"
+"    AS query"
 msgstr ""
-"CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name [ (column_name [, ...] ) ] [ [ WITH | WITHOUT ] OIDS ]\n"
-"    AS query\n"
+"CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE ���_�������[ (���_������� [, ...] ) ] [ [ WITH | WITHOUT ] OIDS ]\n"
+"    AS ������"
 
 #: sql_help.h:197
 msgid "define a new tablespace"
@@ -2379,22 +2393,22 @@ msgid ""
 "where option can be:\n"
 "    \n"
 "      SYSID uid \n"
-"    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n"
 "    | CREATEDB | NOCREATEDB\n"
 "    | CREATEUSER | NOCREATEUSER\n"
 "    | IN GROUP groupname [, ...]\n"
+"    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n"
 "    | VALID UNTIL 'abstime'"
 msgstr ""
-"CREATE USER name [ [ WITH ] option [ ... ] ]\n"
+"CREATE USER ��� [ [ WITH ] ����� [ ... ] ]\n"
 "\n"
-"��� option ����� ����:\n"
+"��� ����� ����� ����:\n"
 "    \n"
 "      SYSID uid \n"
-"    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n"
 "    | CREATEDB | NOCREATEDB\n"
 "    | CREATEUSER | NOCREATEUSER\n"
-"    | IN GROUP groupname [, ...]\n"
-"    | VALID UNTIL 'abstime'"\
+"    | IN GROUP ���_������ [, ...]\n"
+"    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD '������'\n"
+"    | VALID UNTIL 'abstime'"
 
 #: sql_help.h:213
 msgid "define a new view"
@@ -3114,35 +3128,51 @@ msgstr ""
 "VACUUM [ FULL | FREEZE ] [ VERBOSE ] [ table ]\n"
 "VACUUM [ FULL | FREEZE ] [ VERBOSE ] ANALYZE [ table [ (column [, ...] ) ] ]"
 
-#: ../../port/exec.c:193
-#: ../../port/exec.c:307
-#: ../../port/exec.c:350
+#: ../../port/exec.c:194
+#: ../../port/exec.c:308
+#: ../../port/exec.c:351
 #, c-format
 msgid "could not identify current directory: %s"
 msgstr "�� ������� ���������������� ������� ����������: %s"
 
-#: ../../port/exec.c:323
-#: ../../port/exec.c:359
+#: ../../port/exec.c:213
+#, c-format
+msgid "invalid binary \"%s\""
+msgstr "�������� �������� \"%s\""
+
+#: ../../port/exec.c:262
+#, c-format
+msgid "could not read binary \"%s\""
+msgstr "�� ������� ������� �������� \"%s\""
+
+#: ../../port/exec.c:269
+#, c-format
+msgid "could not find a \"%s\" to execute"
+msgstr "\"%s\" �� ������ ��� ����������"
+
+#: ../../port/exec.c:324
+#: ../../port/exec.c:360
 #, c-format
 msgid "could not change directory to \"%s\""
 msgstr "�� ������� �������� ���������� �� \"%s\""
 
-#: ../../port/exec.c:338
+#: ../../port/exec.c:339
 #, c-format
 msgid "could not read symbolic link \"%s\""
 msgstr "�� ������� ������� ������������� ������ \"%s\""
 
-#: ../../port/exec.c:569
+#: ../../port/exec.c:587
 #, c-format
 msgid "child process exited with exit code %d"
 msgstr "�������� ������� ���������� � ����� ������� %d"
 
-#: ../../port/exec.c:572
+#: ../../port/exec.c:590
 #, c-format
 msgid "child process was terminated by signal %d"
 msgstr "�������� ������� �����ۣ� �������� %d"
 
-#: ../../port/exec.c:575
+#: ../../port/exec.c:593
 #, c-format
 msgid "child process exited with unrecognized status %d"
 msgstr "�������� ������� ���������� � �������������� �������� %d"
+
diff --git a/src/bin/psql/po/tr.po b/src/bin/psql/po/tr.po
index d31e228..abb706b 100644
--- a/src/bin/psql/po/tr.po
+++ b/src/bin/psql/po/tr.po
@@ -5,7 +5,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: psql-tr\n"
 "POT-Creation-Date: 2004-11-05 07:30+0000\n"
-"PO-Revision-Date: 2005-01-15 14:11+0200\n"
+"PO-Revision-Date: 2005-01-28 18:00+0200\n"
 "Last-Translator: Nicolai Tufar <ntufar@tdmsoft.com>\n"
 "Language-Team: Turkish <http://developer.postgresql.org/~petere/nlsstatus/po-current/libpq-tr.po>\n"
 "MIME-Version: 1.0\n"
@@ -3073,12 +3073,12 @@ msgstr ""
 "    READ WRITE | READ ONLY"
 
 #: sql_help.h:417
-msgid "empty a table"
-msgstr "tabloyu boşalt"
+msgid "empty a table or set of tables"
+msgstr "bir veya birden fazla tabloyu kısalt"
 
 #: sql_help.h:418
-msgid "TRUNCATE [ TABLE ] name"
-msgstr "TRUNCATE [ TABLE ] tablo_adı"
+msgid "TRUNCATE [ TABLE ] name [, ...]"
+msgstr "TRUNCATE [ TABLE ] adı [, ...]"
 
 #: sql_help.h:421
 msgid "stop listening for a notification"
diff --git a/src/bin/psql/win32.mak b/src/bin/psql/win32.mak
index 64dd1ff..ad2ba7c 100644
--- a/src/bin/psql/win32.mak
+++ b/src/bin/psql/win32.mak
@@ -79,7 +79,7 @@ CPP_SBRS=.
 
 LINK32=link.exe
 LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
- advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
+ advapi32.lib shfolder.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
  odbccp32.lib wsock32.lib /nologo /subsystem:console /incremental:no\
  /pdb:"$(OUTDIR)\psql.pdb" /machine:I386 $(LOPT) /out:"$(OUTDIR)\psql.exe" 
 LINK32_OBJS= \
@@ -146,18 +146,15 @@ LINK32_OBJS= \
     $(CPP_PROJ) ..\..\port\sprompt.c
 <<
 
+sql_help.h : create_help.pl
+        $(PERL) create_help.pl $(REFDOCDIR) $@
+	
+psqlscan.c: psqlscan.l
+	$(FLEX) -Cfe -opsqlscan.c psqlscan.l
+
 .c{$(CPP_OBJS)}.obj::
    $(CPP) @<<
    $(CPP_PROJ) $< 
 <<
 
-.cpp{$(CPP_OBJS)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
 
-sql_help.h : create_help.pl
-        $(PERL) create_help.pl $(REFDOCDIR) $@
-	
-psqlscan.c: psqlscan.l
-	$(FLEX) -Cfe -opsqlscan.c psqlscan.l
diff --git a/src/bin/scripts/Makefile b/src/bin/scripts/Makefile
index 83a319b..15b4e0c 100644
--- a/src/bin/scripts/Makefile
+++ b/src/bin/scripts/Makefile
@@ -21,7 +21,7 @@ override CPPFLAGS := -DFRONTEND -I$(top_srcdir)/src/bin/pg_dump -I$(top_srcdir)/
 all: submake-libpq submake-backend $(PROGRAMS)
 
 %: %.o $(WIN32RES)
-	$(CC) $(CFLAGS) $^ $(libpq) $(LDFLAGS) $(LIBS) -o $@$(X)
+	$(CC) $(CFLAGS) $^ $(libpq_pgport) $(LDFLAGS) $(LIBS) -o $@$(X)
 
 createdb: createdb.o common.o dumputils.o $(top_builddir)/src/backend/parser/keywords.o
 createlang: createlang.o common.o print.o mbprint.o
diff --git a/src/bin/scripts/po/ro.po b/src/bin/scripts/po/ro.po
new file mode 100644
index 0000000..edc2d94
--- /dev/null
+++ b/src/bin/scripts/po/ro.po
@@ -0,0 +1,633 @@
+# translation of pgscripts-ro.po to Romanian
+# translation of pgscripts.po to Romanian
+# Alin Vaida <alin.vaida@gmail.com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgscripts-ro-8.0\n"
+"POT-Creation-Date: 2005-01-16 01:14+0000\n"
+"PO-Revision-Date: 2005-01-16 16:23+0200\n"
+"Last-Translator: Alin Vaida <alin.vaida@gmail.com>\n"
+"Language-Team: Romanian <translators@postgresql.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10\n"
+
+#: clusterdb.c:95 clusterdb.c:110 createdb.c:102 createdb.c:121
+#: createlang.c:97 createlang.c:118 createlang.c:160 createuser.c:117
+#: createuser.c:132 dropdb.c:84 dropdb.c:93 dropdb.c:101 droplang.c:94
+#: droplang.c:115 droplang.c:157 dropuser.c:84 dropuser.c:99 vacuumdb.c:112
+#: vacuumdb.c:127
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "�ncerca�i \"%s --help\" pentru mai multe informa�ii.\n"
+
+#: clusterdb.c:108 createdb.c:119 createlang.c:116 createuser.c:130
+#: dropdb.c:99 droplang.c:113 dropuser.c:97 vacuumdb.c:125
+#, c-format
+msgid "%s: too many command-line arguments (first is \"%s\")\n"
+msgstr "%s: prea multe argumente �n linia de comand� (primul este \"%s\")\n"
+
+#: createdb.c:129
+#, c-format
+msgid "%s: \"%s\" is not a valid encoding name\n"
+msgstr "%s: \"%s\" nu este un nume de codificare corect\n"
+
+#: createdb.c:168
+#, c-format
+msgid "%s: database creation failed: %s"
+msgstr "%s: crearea bazei de date a e�uat: %s"
+
+#: createdb.c:196
+#, c-format
+msgid "%s: comment creation failed (database was created): %s"
+msgstr "%s: crearea comentariului a e�uat (baza de date a fost creat�): %s"
+
+#: createdb.c:217
+#, c-format
+msgid ""
+"%s creates a PostgreSQL database.\n"
+"\n"
+msgstr ""
+"%s creeaz� o baz� de date PostgreSQL.\n"
+"\n"
+
+#: clusterdb.c:234 createdb.c:218 createlang.c:299 createuser.c:240
+#: dropdb.c:147 droplang.c:280 dropuser.c:147 vacuumdb.c:260
+msgid "Usage:\n"
+msgstr "Utilizare:\n"
+
+#: createdb.c:219
+#, c-format
+msgid "  %s [OPTION]... [DBNAME] [DESCRIPTION]\n"
+msgstr "  %s [OP�IUNE].. [NUMEBD] [DESCRIERE]\n"
+
+#: clusterdb.c:236 createdb.c:220 createlang.c:301 createuser.c:242
+#: dropdb.c:149 droplang.c:282 dropuser.c:149 vacuumdb.c:262
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"Op�iuni:\n"
+
+#: createdb.c:221
+msgid "  -D, --tablespace=TABLESPACE  default tablespace for the database\n"
+msgstr "  -D, --tablespace=SPA�IUTBL   spa�iul de tabele implicit pentru baza de date\n"
+
+#: createdb.c:222
+msgid "  -E, --encoding=ENCODING      encoding for the database\n"
+msgstr "  -E, --encoding=CODIFICARE    codificarea pentru baza de date\n"
+
+#: createdb.c:223
+msgid "  -O, --owner=OWNER            database user to own the new database\n"
+msgstr "  -O, --owner=PROPRIETAR       utilizatorul care de�ine noua baz� de date\n"
+
+#: createdb.c:224
+msgid "  -T, --template=TEMPLATE      template database to copy\n"
+msgstr "  -T, --template=�ABLON        �ablonul bazei de date copiat\n"
+
+#: createdb.c:225
+msgid "  -e, --echo                   show the commands being sent to the server\n"
+msgstr "  -e, --echo                   afi�eaz� comenzile trimise serverului\n"
+
+#: createdb.c:226
+msgid "  -q, --quiet                  don't write any messages\n"
+msgstr "  -q, --quiet                  nu se afi�eaz� nici un mesaj\n"
+
+#: createdb.c:227
+msgid "  --help                       show this help, then exit\n"
+msgstr "  --help                       afi�eaz� acest ajutor, apoi iese\n"
+
+#: createdb.c:228
+msgid "  --version                    output version information, then exit\n"
+msgstr "  --version                    afi�eaz� informa�iile despre versiune, apoi iese\n"
+
+#: clusterdb.c:244 createdb.c:229 createuser.c:255 vacuumdb.c:273
+msgid ""
+"\n"
+"Connection options:\n"
+msgstr ""
+"\n"
+"Op�iuni de conectare:\n"
+
+#: createdb.c:230
+msgid "  -h, --host=HOSTNAME          database server host or socket directory\n"
+msgstr "  -h, --host=NUMEGAZD�         gazda serverului de baze de date sau directorul soclului\n"
+
+#: createdb.c:231
+msgid "  -p, --port=PORT              database server port\n"
+msgstr "  -p, --port=PORT              portul serverului de baze de date\n"
+
+#: createdb.c:232
+msgid "  -U, --username=USERNAME      user name to connect as\n"
+msgstr "  -U, --username=USERNAME      conectare ca utilizatorul de baze de date specificat\n"
+
+#: createdb.c:233
+msgid "  -W, --password               prompt for password\n"
+msgstr "  -W, --password               solicit� parola\n"
+
+#: createdb.c:234
+msgid ""
+"\n"
+"By default, a database with the same name as the current user is created.\n"
+msgstr ""
+"\n"
+"Implicit, este creat� o baz� de date cu acela�i nume ca utilizatorul curent.\n"
+
+#: clusterdb.c:250 createdb.c:235 createlang.c:312 createuser.c:262
+#: dropdb.c:159 droplang.c:292 dropuser.c:159 vacuumdb.c:279
+msgid ""
+"\n"
+"Report bugs to <pgsql-bugs@postgresql.org>.\n"
+msgstr ""
+"\n"
+"Raporta�i erorile la <pgsql-bugs@postgresql.org>.\n"
+
+#: createlang.c:143 droplang.c:140
+msgid "Name"
+msgstr "Nume"
+
+#: createlang.c:143 droplang.c:140
+msgid "yes"
+msgstr "da"
+
+#: createlang.c:143 droplang.c:140
+msgid "no"
+msgstr "nu"
+
+#: createlang.c:143 droplang.c:140
+#, fuzzy
+msgid "Trusted?"
+msgstr "Sigur?"
+
+#: createlang.c:150 droplang.c:147
+msgid "Procedural Languages"
+msgstr "Limbaje procedurale"
+
+#: createlang.c:159 droplang.c:156
+#, c-format
+msgid "%s: missing required argument language name\n"
+msgstr "%s: lipse�te argumentul necesar, numele limbajului\n"
+
+#: createlang.c:210
+#, c-format
+msgid "%s: unsupported language \"%s\"\n"
+msgstr "%s: limbaj nesuportat \"%s\"\n"
+
+#: createlang.c:211
+msgid ""
+"Supported languages are plpgsql, pltcl, pltclu, plperl, plperlu, and "
+"plpythonu.\n"
+msgstr "Limbajele suportate sunt plpgsql, pltcl, pltclu, plperl, plperlu, �i plpythonu.\n"
+
+#: createlang.c:226
+#, c-format
+msgid "%s: language \"%s\" is already installed in database \"%s\"\n"
+msgstr "%s: limbajul \"%s\" este deja instalat �n baza de date \"%s\"\n"
+
+#: createlang.c:283
+#, c-format
+msgid "%s: language installation failed: %s"
+msgstr "%s: instalarea limbajului a e�uat: %s"
+
+#: createlang.c:298
+#, c-format
+msgid ""
+"%s installs a procedural language into a PostgreSQL database.\n"
+"\n"
+msgstr ""
+"%s instaleaz� un limbaj procedural �ntr-o baz� de date PostgreSQL.\n"
+"\n"
+
+#: createlang.c:300 droplang.c:281
+#, c-format
+msgid "  %s [OPTION]... LANGNAME [DBNAME]\n"
+msgstr "  %s [OP�IUNE]...NUMELIMBAJ [NUMEBD]\n"
+
+#: createlang.c:302
+msgid "  -d, --dbname=DBNAME       database to install language in\n"
+msgstr "  -d, --dbname=NUMEBD       baza de date �n care se instaleaz� limbajul\n"
+
+#: clusterdb.c:240 createlang.c:303 createuser.c:251 dropdb.c:150
+#: droplang.c:284 dropuser.c:150
+msgid "  -e, --echo                show the commands being sent to the server\n"
+msgstr "  -e, --echo                afi�eaz�comenzile�trimise�serverului\n"
+
+#: createlang.c:304 droplang.c:285
+msgid "  -l, --list                show a list of currently installed languages\n"
+msgstr "  -l, --list                afi�eaz� lista limbajelor instalate\n"
+
+#: createlang.c:305
+msgid "  -L, --pglib=DIRECTORY     find language interpreter file in DIRECTORY\n"
+msgstr "  -L, --pglib=DIRECTOR      caut� fi�ierul de interpretare a limbajului �n DIRECTOR\n"
+
+#: clusterdb.c:245 createlang.c:306 createuser.c:256 dropdb.c:153
+#: droplang.c:286 dropuser.c:153 vacuumdb.c:274
+msgid "  -h, --host=HOSTNAME       database server host or socket directory\n"
+msgstr "  -h, --host=NUMEGAZD�      gazda serverului de baze de date sau directorul soclului\n"
+
+#: clusterdb.c:246 createlang.c:307 createuser.c:257 dropdb.c:154
+#: droplang.c:287 dropuser.c:154 vacuumdb.c:275
+msgid "  -p, --port=PORT           database server port\n"
+msgstr "  -p, --port=PORT           portul serverului de baze de date\n"
+
+#: clusterdb.c:247 createlang.c:308 dropdb.c:155 droplang.c:288 vacuumdb.c:276
+msgid "  -U, --username=USERNAME   user name to connect as\n"
+msgstr "  -U, --username=USERNAME   conectare ca utilizatorul de baze de date specificat\n"
+
+#: clusterdb.c:248 createlang.c:309 dropdb.c:156 droplang.c:289 vacuumdb.c:277
+msgid "  -W, --password            prompt for password\n"
+msgstr "  -W, --password            solicit� parola\n"
+
+#: clusterdb.c:242 createlang.c:310 createuser.c:253 dropdb.c:157
+#: droplang.c:290 dropuser.c:157
+msgid "  --help                    show this help, then exit\n"
+msgstr "  --help                    afi�eaz� acest ajutor, apoi iese\n"
+
+#: clusterdb.c:243 createlang.c:311 createuser.c:254 dropdb.c:158
+#: droplang.c:291 dropuser.c:158
+msgid "  --version                 output version information, then exit\n"
+msgstr "  --version                 afi�eaz� informa�iile despre versiune, apoi iese\n"
+
+#: createuser.c:142
+#, c-format
+msgid "%s: user ID must be a positive number\n"
+msgstr "%s: ID-ul utilizatorului trebuie s� fie un num�r pozitiv\n"
+
+#: createuser.c:148
+msgid "Enter name of user to add: "
+msgstr "Introduce�i numele utilizatorului de ad�ugat: "
+
+#: createuser.c:155
+msgid "Enter password for new user: "
+msgstr "Introduce�i parola pentru noul utilizator: "
+
+#: createuser.c:156
+msgid "Enter it again: "
+msgstr "Introduce�i din nou: "
+
+#: createuser.c:159
+msgid "Passwords didn't match.\n"
+msgstr "Parola nu se verific�.\n"
+
+#: createuser.c:170
+msgid "Shall the new user be allowed to create databases? (y/n) "
+msgstr "Noul utilizator va putea crea baze de date? (d/n) "
+
+#: createuser.c:181
+msgid "Shall the new user be allowed to create more new users? (y/n) "
+msgstr "Noul utilizator va putea crea al�i utilizatori? (d/n) "
+
+#: createuser.c:220
+#, c-format
+msgid "%s: creation of new user failed: %s"
+msgstr "%s: crearea utilizatorului a e�uat: %s"
+
+#: createuser.c:239
+#, c-format
+msgid ""
+"%s creates a new PostgreSQL user.\n"
+"\n"
+msgstr ""
+"%s creeaz� un utilizator PostgreSQL nou.\n"
+"\n"
+
+#: createuser.c:241 dropuser.c:148
+#, c-format
+msgid "  %s [OPTION]... [USERNAME]\n"
+msgstr "  %s [OP�IUNE]...[NUMEUTILIZATOR]\n"
+
+#: createuser.c:243
+msgid "  -a, --adduser             user can add new users\n"
+msgstr "  -a, --adduser             utilizatorul poate ad�uga al�i utilizatori\n"
+
+#: createuser.c:244
+msgid "  -A, --no-adduser          user cannot add new users\n"
+msgstr "  -A, --no-adduser          utilizatorul nu poate ad�uga al�i utilizatori\n"
+
+#: createuser.c:245
+msgid "  -d, --createdb            user can create new databases\n"
+msgstr "  -d, --createdb            utilizatorul poate crea baze de date\n"
+
+#: createuser.c:246
+msgid "  -D, --no-createdb         user cannot create databases\n"
+msgstr "  -D, --no-createdb         utilizatorul nu poate crea baze de date\n"
+
+#: createuser.c:247
+msgid "  -P, --pwprompt            assign a password to new user\n"
+msgstr "  -P, --pwprompt            se asigneaz� o parol� utilizatorului nou\n"
+
+#: createuser.c:248
+msgid "  -E, --encrypted           encrypt stored password\n"
+msgstr "  -E, --encrypted           parola este stocat� criptat\n"
+
+#: createuser.c:249
+msgid "  -N, --unencrypted         do not encrypt stored password\n"
+msgstr "  -N, --unencrypted         parola nu este stocat� criptat\n"
+
+#: createuser.c:250
+msgid "  -i, --sysid=SYSID         select sysid for new user\n"
+msgstr "  -i, --sysid=SYSID         id-ul de sistem pentru noul utilizator\n"
+
+#: clusterdb.c:241 createuser.c:252 dropdb.c:152 dropuser.c:152
+msgid "  -q, --quiet               don't write any messages\n"
+msgstr "  -q, --quiet               nu se afi�eaz� nici un mesaj\n"
+
+#: createuser.c:258
+msgid "  -U, --username=USERNAME   user name to connect as (not the one to create)\n"
+msgstr "  -U, --username=USERNAME   numele utilizatorului pentru conectare (nu cel de creat)\n"
+
+#: createuser.c:259 dropuser.c:156
+msgid "  -W, --password            prompt for password to connect\n"
+msgstr "  -W, --password            solicit� parola pentru conectare\n"
+
+#: createuser.c:260
+msgid ""
+"\n"
+"If one of -a, -A, -d, -D, and USERNAME is not specified, you will\n"
+"be prompted interactively.\n"
+msgstr ""
+"\n"
+"Dac� una din op�iunile -a, -A, -d, -D �i NUMEUTILIZATOR nu este specificat�, ea va fi solicitat� �n mod interactiv.\n"
+
+#: dropdb.c:92
+#, c-format
+msgid "%s: missing required argument database name\n"
+msgstr "%s: lipse�te argumentul solicitat, numele bazei de date\n"
+
+#: dropdb.c:109
+#, c-format
+msgid "Database \"%s\" will be permanently removed.\n"
+msgstr "Baza de date \"%s\" va fi eliminat� definitiv.\n"
+
+#: dropdb.c:110 dropuser.c:111
+msgid "Are you sure? (y/n) "
+msgstr "Continua�i? (d/n) "
+
+#: dropdb.c:127
+#, c-format
+msgid "%s: database removal failed: %s"
+msgstr "%s: eliminarea bazei de date a e�uat: %s"
+
+#: dropdb.c:146
+#, c-format
+msgid ""
+"%s removes a PostgreSQL database.\n"
+"\n"
+msgstr ""
+"%s elimin� o baz� de date PostgreSQL.\n"
+"\n"
+
+#: dropdb.c:148
+#, c-format
+msgid "  %s [OPTION]... DBNAME\n"
+msgstr "  %s [OP�IUNE]...NUMEBD\n"
+
+#: dropdb.c:151 dropuser.c:151
+msgid "  -i, --interactive         prompt before deleting anything\n"
+msgstr "  -i, --interactive         solicit� confirmarea �nainte de a �terge ceva\n"
+
+#: droplang.c:176
+#, c-format
+msgid "%s: language \"%s\" is not installed in database \"%s\"\n"
+msgstr "%s: limbajul \"%s\" nu este instalat �n baza de date \"%s\"\n"
+
+#: droplang.c:193
+#, c-format
+msgid "%s: still %s functions declared in language \"%s\"; language not removed\n"
+msgstr "%s: %s func�ii sunt inc� declarate �n limbajul \"%s\"; limbajul nu a fost eliminat\n"
+
+#: droplang.c:265
+#, c-format
+msgid "%s: language removal failed: %s"
+msgstr "%s: eliminarea limbajului a e�uat: %s"
+
+#: droplang.c:279
+#, c-format
+msgid ""
+"%s removes a procedural language from a database.\n"
+"\n"
+msgstr ""
+"%s elimin� un limbaj procedural dintr-o baz� de date.\n"
+"\n"
+
+#: droplang.c:283
+msgid "  -d, --dbname=DBNAME       database from which to remove the language\n"
+msgstr "  -d, --dbname=NUMEBD       baza de date din care se elimin� limbajul\n"
+
+#: dropuser.c:104
+msgid "Enter name of user to drop: "
+msgstr "Introduce�i numele utilizatorului de �ters: "
+
+#: dropuser.c:110
+#, c-format
+msgid "User \"%s\" will be permanently removed.\n"
+msgstr "Utilizatorul \"%s\" va fi eliminat definitiv.\n"
+
+#: dropuser.c:127
+#, c-format
+msgid "%s: removal of user \"%s\" failed: %s"
+msgstr "%s: eliminarea utilizatorului \"%s\" a e�uat: %s"
+
+#: dropuser.c:146
+#, c-format
+msgid ""
+"%s removes a PostgreSQL user.\n"
+"\n"
+msgstr ""
+"%s elimin� un utilizator PostgreSQL.\n"
+"\n"
+
+#: dropuser.c:155
+msgid "  -U, --username=USERNAME   user name to connect as (not the one to drop)\n"
+msgstr "  -U, --username=USERNAME   numele utilizatorului pentru conectare (nu cel de eliminat)\n"
+
+#: clusterdb.c:118
+#, c-format
+msgid "%s: cannot cluster all databases and a specific one at the same time\n"
+msgstr "%s: imposibil de grupat toate bazele de date �i una anume �n acela�i timp\n"
+
+#: clusterdb.c:124
+#, c-format
+msgid "%s: cannot cluster a specific table in all databases\n"
+msgstr "%s: imposibil de grupat o tabel� anume �n toate bazele de date\n"
+
+#: clusterdb.c:180
+#, c-format
+msgid "%s: clustering of table \"%s\" in database \"%s\" failed: %s"
+msgstr "%s: gruparea tabelei \"%s\" din baza de date \"%s\" a e�uat: %s"
+
+#: clusterdb.c:183
+#, c-format
+msgid "%s: clustering of database \"%s\" failed: %s"
+msgstr "%s: gruparea bazei de date \"%s\" a e�uat: %s "
+
+#: clusterdb.c:219
+#, c-format
+msgid "%s: clustering database \"%s\"\n"
+msgstr "%s: grupare baz� de date \"%s\"\n"
+
+#: clusterdb.c:233
+#, c-format
+msgid ""
+"%s clusters all previously clustered tables in a database.\n"
+"\n"
+msgstr ""
+"%s grupeaz� toate tabelele grupate anterior dintr-o baz� de date.\n"
+"\n"
+
+#: clusterdb.c:235 vacuumdb.c:261
+#, c-format
+msgid "  %s [OPTION]... [DBNAME]\n"
+msgstr "  %s [OP�IUNE]...[NUMEDB]\n"
+
+#: clusterdb.c:237
+msgid "  -a, --all                 cluster all databases\n"
+msgstr "  -a, --all                 grupeaz� toate bazele de date\n"
+
+#: clusterdb.c:238
+msgid "  -d, --dbname=DBNAME       database to cluster\n"
+msgstr "  -d, --dbname=DBNAME       baza de date de grupat\n"
+
+#: clusterdb.c:239
+msgid "  -t, --table=TABLE         cluster specific table only\n"
+msgstr "  -t, --table=TABLE         grupeaz� numai o anumit� tabel�\n"
+
+#: clusterdb.c:249
+msgid ""
+"\n"
+"Read the description of the SQL command CLUSTER for details.\n"
+msgstr ""
+"\n"
+"Consulta�i descrierea comenzii SQL CLUSTER pentru detalii.\n"
+
+#: vacuumdb.c:135
+#, c-format
+msgid "%s: cannot vacuum all databases and a specific one at the same time\n"
+msgstr "%s: imposibil de vidat toate bazele de date �i una anume �n acela�i timp\n"
+
+#: vacuumdb.c:141
+#, c-format
+msgid "%s: cannot vacuum a specific table in all databases\n"
+msgstr "%s: imposibil de vidat o tabel� anume �n toate bazele de date\n"
+
+#: vacuumdb.c:205
+#, c-format
+msgid "%s: vacuuming of table \"%s\" in database \"%s\" failed: %s"
+msgstr "%s: vidarea tabelei \"%s\" din baza de date \"%s\" a e�uat: %s"
+
+#: vacuumdb.c:208
+#, c-format
+msgid "%s: vacuuming of database \"%s\" failed: %s"
+msgstr "%s: vidarea bazei de date \"%s\" a e�uat: %s"
+
+#: vacuumdb.c:245
+#, c-format
+msgid "%s: vacuuming database \"%s\"\n"
+msgstr "%s: vidare baz� de date \"%s\"\n"
+
+#: vacuumdb.c:259
+#, c-format
+msgid ""
+"%s cleans and analyzes a PostgreSQL database.\n"
+"\n"
+msgstr ""
+"%s cur��� �i analizeaz� o baz� de date PostgreSQL.\n"
+"\n"
+
+#: vacuumdb.c:263
+msgid "  -a, --all                       vacuum all databases\n"
+msgstr "  -a, --all                       videaz� toate bazele de date\n"
+
+#: vacuumdb.c:264
+msgid "  -d, --dbname=DBNAME             database to vacuum\n"
+msgstr "  -d, --dbname=NUMEBD             baza de date de vidat\n"
+
+#: vacuumdb.c:265
+msgid "  -t, --table='TABLE[(COLUMNS)]'  vacuum specific table only\n"
+msgstr "  -t, --table='TABEL�[(COLOANE)]' videaz� numai o anumit� tabel�\n"
+
+#: vacuumdb.c:266
+msgid "  -f, --full                      do full vacuuming\n"
+msgstr "  -f, --full                      vidare total�\n"
+
+#: vacuumdb.c:267
+msgid "  -z, --analyze                   update optimizer hints\n"
+msgstr ""
+
+#: vacuumdb.c:268
+msgid ""
+"  -e, --echo                      show the commands being sent to the "
+"server\n"
+msgstr "  -e, --echo                      afi�eaz� comenzile trimise serverului\n"
+
+#: vacuumdb.c:269
+msgid "  -q, --quiet                     don't write any messages\n"
+msgstr "  -q, --quiet                     nu se afi�eaz� nici un mesaj\n"
+
+#: vacuumdb.c:270
+msgid "  -v, --verbose                   write a lot of output\n"
+msgstr "  -v, --verbose                   mod detaliat\n"
+
+#: vacuumdb.c:271
+msgid "  --help                          show this help, then exit\n"
+msgstr "  --help                          afi�eaz� acest ajutor, apoi iese\n"
+
+#: vacuumdb.c:272
+msgid "  --version                       output version information, then exit\n"
+msgstr "  --version                       afi�eaz� informa�iile despre versiune, apoi iese\n"
+
+#: vacuumdb.c:278
+msgid ""
+"\n"
+"Read the description of the SQL command VACUUM for details.\n"
+msgstr ""
+"\n"
+"Consulta�i descrierea comenzii SQL VACUUM pentru detalii.\n"
+
+#: common.c:33
+#, c-format
+msgid "%s: could not obtain information about current user: %s\n"
+msgstr "%s: imposibil de ob�inut informa�ii despre utilizatorul curent: %s\n"
+
+#: common.c:44
+#, c-format
+msgid "%s: could not get current user name: %s\n"
+msgstr "%s: imposibil de ob�inut numele utilizatorului curent: %s\n"
+
+#: common.c:89 common.c:115
+msgid "Password: "
+msgstr "Parol�: "
+
+#: common.c:102
+#, c-format
+msgid "%s: could not connect to database %s\n"
+msgstr "%s: imposibil de conectat la baza de date %s\n"
+
+#: common.c:125
+#, c-format
+msgid "%s: could not connect to database %s: %s"
+msgstr "%s: imposibil de conectat la baza de date %s: %s"
+
+#: common.c:149
+#, c-format
+msgid "%s: query failed: %s"
+msgstr "%s: interogare e�uat�: %s"
+
+#: common.c:150
+#, c-format
+msgid "%s: query was: %s\n"
+msgstr "%s: interogarea era: %s\n"
+
+#. translator: Make sure the (y/n) prompts match the translation of this.
+#: common.c:164
+msgid "y"
+msgstr "d"
+
+#. translator: Make sure the (y/n) prompts match the translation of this.
+#: common.c:166
+msgid "n"
+msgstr "n"
+
diff --git a/src/bin/scripts/po/tr.po b/src/bin/scripts/po/tr.po
index cef7b45..d7a2a79 100644
--- a/src/bin/scripts/po/tr.po
+++ b/src/bin/scripts/po/tr.po
@@ -1,13 +1,14 @@
+# translation of pgscripts-tr.po to 
 # translation of pgscripts-tr.po to Turkish
-# Devrim GUNDUZ <devrim@PostgreSQL.org>, 2004.
+# Devrim GUNDUZ <devrim@PostgreSQL.org>, 2004, 2005.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: pgscripts-tr\n"
 "POT-Creation-Date: 2004-12-14 19:09+0000\n"
-"PO-Revision-Date: 2004-12-15 02:48+0200\n"
-"Last-Translator: Devrim GUNDUZ <devrim@PostgreSQL.org>\n"
-"Language-Team: Turkish <pgsql-tr-genel@PostgreSQL.org>\n"
+"PO-Revision-Date: 2005-03-25 08:48+0200\n"
+"Last-Translator: \n"
+"Language-Team:  <en@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -75,7 +76,7 @@ msgstr ""
 
 #: createdb.c:221
 msgid "  -D, --tablespace=TABLESPACE  default tablespace for the database\n"
-msgstr "  -D, --tablespace=TABLESPACE  veritabanı için ön tanımlı tablespace\n"
+msgstr "  -D, --tablespace=TABLESPACE  veritabanı için öntanımlı tablespace\n"
 
 #: createdb.c:222
 msgid "  -E, --encoding=ENCODING      encoding for the database\n"
@@ -101,11 +102,11 @@ msgstr "  -q, --quiet                  Hiç bir mesaj yazma\n"
 
 #: createdb.c:227
 msgid "  --help                       show this help, then exit\n"
-msgstr "  --help                       bu yardımı gösterir ve çıkar\n"
+msgstr "  --help                       bu yardımı göster ve çık\n"
 
 #: createdb.c:228
 msgid "  --version                    output version information, then exit\n"
-msgstr "  --version                    sürüm bilgisini gösterir ve çıkar\n"
+msgstr "  --version                    sürüm bilgisini göster ve çık\n"
 
 #: clusterdb.c:244 createdb.c:229 createuser.c:255 vacuumdb.c:273
 msgid ""
@@ -148,7 +149,7 @@ msgid ""
 "Report bugs to <pgsql-bugs@postgresql.org>.\n"
 msgstr ""
 "\n"
-"Hataları <pgsql-bugs@postgresql.org> adresine yazabilirsiniz.\n"
+"Hataları <pgsql-bugs@postgresql.org> adresine bildirebilirsiniz.\n"
 
 #: createlang.c:143 droplang.c:140
 msgid "Name"
@@ -219,15 +220,15 @@ msgstr "  -d, --dbname=VERİTABANI_ADI       dilin kurulacağı veritabanının
 #: clusterdb.c:240 createlang.c:303 createuser.c:251 dropdb.c:150
 #: droplang.c:284 dropuser.c:150
 msgid "  -e, --echo                show the commands being sent to the server\n"
-msgstr "  -e, --echo                sunucuya gönderilen komutları gösterir\n"
+msgstr "  -e, --echo                sunucuya gönderilen komutları göster\n"
 
 #: createlang.c:304 droplang.c:285
 msgid "  -l, --list                show a list of currently installed languages\n"
-msgstr "  -l, --list                Şu anda kurulu olan dilleri gösterir\n"
+msgstr "  -l, --list                Şu anda kurulu olan dilleri göster\n"
 
 #: createlang.c:305
 msgid "  -L, --pglib=DIRECTORY     find language interpreter file in DIRECTORY\n"
-msgstr "  -L, --pglib=DİZİN     DİZİN dizini içindeki dil interpreterini bulur.\n"
+msgstr "  -L, --pglib=DİZİN     DİZİN dizini içindeki dil interpreterini bul.\n"
 
 #: clusterdb.c:245 createlang.c:306 createuser.c:256 dropdb.c:153
 #: droplang.c:286 dropuser.c:153 vacuumdb.c:274
@@ -264,7 +265,7 @@ msgstr "%s: kullanıcı ID'si pozitif bir sayı olmalıdır\n"
 
 #: createuser.c:148
 msgid "Enter name of user to add: "
-msgstr "Eklenilecek kullanıcı adını girin:"
+msgstr "Eklenecek kullanıcı adını girin:"
 
 #: createuser.c:155
 msgid "Enter password for new user: "
@@ -607,7 +608,7 @@ msgstr ""
 #: common.c:33
 #, c-format
 msgid "%s: could not obtain information about current user: %s\n"
-msgstr "%s: geçerli kullanıcı hakkında ilgi alınamadı: %s\n"
+msgstr "%s: geçerli kullanıcı hakkında bilgi alınamadı: %s\n"
 
 #: common.c:44
 #, c-format
diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h
index 2090a7e..f08246a 100644
--- a/src/include/catalog/pg_aggregate.h
+++ b/src/include/catalog/pg_aggregate.h
@@ -19,6 +19,8 @@
 #ifndef PG_AGGREGATE_H
 #define PG_AGGREGATE_H
 
+#include "nodes/pg_list.h"
+
 /* ----------------
  *		postgres.h contains the system type definitions and the
  *		CATALOG(), BOOTSTRAP and DATA() sugar words so this file
diff --git a/src/include/commands/dbcommands.h b/src/include/commands/dbcommands.h
index f341e65..85e0ed9 100644
--- a/src/include/commands/dbcommands.h
+++ b/src/include/commands/dbcommands.h
@@ -18,22 +18,47 @@
 #include "nodes/parsenodes.h"
 
 /* XLOG stuff */
-#define XLOG_DBASE_CREATE		0x00
-#define XLOG_DBASE_DROP			0x10
+#define XLOG_DBASE_CREATE_OLD	0x00
+#define XLOG_DBASE_DROP_OLD		0x10
+#define XLOG_DBASE_CREATE		0x20
+#define XLOG_DBASE_DROP			0x30
 
-typedef struct xl_dbase_create_rec
+/*
+ * Note: "old" versions are deprecated and need not be supported beyond 8.0.
+ * Not only are they relatively bulky, but they do the Wrong Thing when a
+ * WAL log is replayed in a data area that's at a different absolute path
+ * than the original.
+ */
+
+typedef struct xl_dbase_create_rec_old
 {
 	/* Records copying of a single subdirectory incl. contents */
 	Oid			db_id;
 	char		src_path[1];	/* VARIABLE LENGTH STRING */
 	/* dst_path follows src_path */
+}	xl_dbase_create_rec_old;
+
+typedef struct xl_dbase_drop_rec_old
+{
+	/* Records dropping of a single subdirectory incl. contents */
+	Oid			db_id;
+	char		dir_path[1];	/* VARIABLE LENGTH STRING */
+}	xl_dbase_drop_rec_old;
+
+typedef struct xl_dbase_create_rec
+{
+	/* Records copying of a single subdirectory incl. contents */
+	Oid			db_id;
+	Oid			tablespace_id;
+	Oid			src_db_id;
+	Oid			src_tablespace_id;
 }	xl_dbase_create_rec;
 
 typedef struct xl_dbase_drop_rec
 {
 	/* Records dropping of a single subdirectory incl. contents */
 	Oid			db_id;
-	char		dir_path[1];	/* VARIABLE LENGTH STRING */
+	Oid			tablespace_id;
 }	xl_dbase_drop_rec;
 
 extern void createdb(const CreatedbStmt *stmt);
diff --git a/src/include/executor/nodeAgg.h b/src/include/executor/nodeAgg.h
index 88e394b..5fd601a 100644
--- a/src/include/executor/nodeAgg.h
+++ b/src/include/executor/nodeAgg.h
@@ -23,6 +23,8 @@ extern TupleTableSlot *ExecAgg(AggState *node);
 extern void ExecEndAgg(AggState *node);
 extern void ExecReScanAgg(AggState *node, ExprContext *exprCtxt);
 
+extern Size hash_agg_entry_size(int numAggs);
+
 extern Datum aggregate_dummy(PG_FUNCTION_ARGS);
 
 #endif   /* NODEAGG_H */
diff --git a/src/include/optimizer/clauses.h b/src/include/optimizer/clauses.h
index 124f859..8609a63 100644
--- a/src/include/optimizer/clauses.h
+++ b/src/include/optimizer/clauses.h
@@ -17,11 +17,17 @@
 #include "nodes/relation.h"
 
 
-
 #define is_opclause(clause)		((clause) != NULL && IsA(clause, OpExpr))
 #define is_funcclause(clause)	((clause) != NULL && IsA(clause, FuncExpr))
 #define is_subplan(clause)		((clause) != NULL && IsA(clause, SubPlan))
 
+typedef struct
+{
+	int			numAggs;			/* total number of aggregate calls */
+	int			numDistinctAggs;	/* number that use DISTINCT */
+	Size		transitionSpace;	/* for pass-by-ref transition data */
+} AggClauseCounts;
+
 
 extern Expr *make_opclause(Oid opno, Oid opresulttype, bool opretset,
 			  Expr *leftop, Expr *rightop);
@@ -42,8 +48,7 @@ extern Expr *make_ands_explicit(List *andclauses);
 extern List *make_ands_implicit(Expr *clause);
 
 extern bool contain_agg_clause(Node *clause);
-extern bool contain_distinct_agg_clause(Node *clause);
-extern int	count_agg_clause(Node *clause);
+extern void count_agg_clauses(Node *clause, AggClauseCounts *counts);
 
 extern bool expression_returns_set(Node *clause);
 
diff --git a/src/include/optimizer/paths.h b/src/include/optimizer/paths.h
index 3a91886..2280c4d 100644
--- a/src/include/optimizer/paths.h
+++ b/src/include/optimizer/paths.h
@@ -114,6 +114,7 @@ extern List *build_subquery_pathkeys(Query *root, RelOptInfo *rel,
 						Query *subquery);
 extern List *build_join_pathkeys(Query *root,
 					RelOptInfo *joinrel,
+					JoinType jointype,
 					List *outer_pathkeys);
 extern List *make_pathkeys_for_sortclauses(List *sortclauses,
 							  List *tlist);
diff --git a/src/include/port/win32.h b/src/include/port/win32.h
index a3b2ddb..3a3dc1e 100644
--- a/src/include/port/win32.h
+++ b/src/include/port/win32.h
@@ -17,6 +17,7 @@
 
 
 #define fsync(a)	_commit(a)
+#define FSYNC_IS_WRITE_THROUGH
 #define ftruncate(a,b)	chsize(a,b)
 
 #define USES_WINSOCK
@@ -184,6 +185,14 @@ typedef int pid_t;
 #define lstat(path, sb)	stat((path), (sb))
 
 /*
+ * Supplement to <fcntl.h>.
+ * This is the same value as _O_NOINHERIT in the MS header file. This is
+ * to ensure that we don't collide with a future definition. It means
+ * we cannot use _O_NOINHERIT ourselves.
+ */
+#define O_DSYNC 0x0080
+
+/*
  * Supplement to <errno.h>.
  */
 #undef EAGAIN
diff --git a/src/include/storage/buf_internals.h b/src/include/storage/buf_internals.h
index 60111fb..6cd7a3a 100644
--- a/src/include/storage/buf_internals.h
+++ b/src/include/storage/buf_internals.h
@@ -17,8 +17,9 @@
 
 #include "storage/backendid.h"
 #include "storage/buf.h"
-#include "storage/lmgr.h"
 #include "storage/lwlock.h"
+#include "storage/shmem.h"
+#include "utils/rel.h"
 
 
 /*
@@ -40,10 +41,10 @@ typedef bits16 BufFlags;
  * Buffer tag identifies which disk block the buffer contains.
  *
  * Note: the BufferTag data must be sufficient to determine where to write the
- * block, even during a "blind write" with no relcache entry.  It's possible
- * that the backend flushing the buffer doesn't even believe the relation is
- * visible yet (its xact may have started before the xact that created the
- * rel).  The storage manager must be able to cope anyway.
+ * block, without reference to pg_class or pg_tablespace entries.  It's
+ * possible that the backend flushing the buffer doesn't even believe the
+ * relation is visible yet (its xact may have started before the xact that
+ * created the rel).  The storage manager must be able to cope anyway.
  *
  * Note: if there's any pad bytes in the struct, INIT_BUFFERTAG will have
  * to be fixed to zero them, since this struct is used as a hash key.
@@ -107,58 +108,12 @@ typedef struct sbufdesc
 
 #define BufferDescriptorGetBuffer(bdesc) ((bdesc)->buf_id + 1)
 
-/* entry for buffer lookup hashtable */
-typedef struct
-{
-	BufferTag	key;			/* Tag of a disk page */
-	int			id;				/* CDB id of associated CDB */
-} BufferLookupEnt;
-
-/*
- * Definitions for the buffer replacement strategy
- */
-#define STRAT_LIST_UNUSED	(-1)
-#define STRAT_LIST_B1		0
-#define STRAT_LIST_T1		1
-#define STRAT_LIST_T2		2
-#define STRAT_LIST_B2		3
-#define STRAT_NUM_LISTS		4
-
-/*
- * The Cache Directory Block (CDB) of the Adaptive Replacement Cache (ARC)
- */
-typedef struct
-{
-	int			prev;			/* list links */
-	int			next;
-	short		list;			/* ID of list it is currently in */
-	bool		t1_vacuum;		/* t => present only because of VACUUM */
-	TransactionId t1_xid;		/* the xid this entry went onto T1 */
-	BufferTag	buf_tag;		/* page identifier */
-	int			buf_id;			/* currently assigned data buffer, or -1 */
-} BufferStrategyCDB;
-
-/*
- * The shared ARC control information.
- */
-typedef struct
-{
-	int			target_T1_size; /* What T1 size are we aiming for */
-	int			listUnusedCDB;	/* All unused StrategyCDB */
-	int			listHead[STRAT_NUM_LISTS];		/* ARC lists B1, T1, T2
-												 * and B2 */
-	int			listTail[STRAT_NUM_LISTS];
-	int			listSize[STRAT_NUM_LISTS];
-	Buffer		listFreeBuffers;	/* List of unused buffers */
-
-	long		num_lookup;		/* Some hit statistics */
-	long		num_hit[STRAT_NUM_LISTS];
-	time_t		stat_report;
 
-	/* Array of CDB's starts here */
-	BufferStrategyCDB cdb[1];	/* VARIABLE SIZE ARRAY */
-} BufferStrategyControl;
+/* in bufmgr.c */
+extern BufferDesc *BufferDescriptors;
 
+/* in localbuf.c */
+extern BufferDesc *LocalBufferDescriptors;
 
 /* counters in buf_init.c */
 extern long int ReadBufferCount;
@@ -170,11 +125,9 @@ extern long int LocalBufferFlushCount;
 
 
 /*
- * Bufmgr Interface:
+ * Internal routines: only called by bufmgr
  */
 
-/* Internal routines: only called by bufmgr */
-
 /* freelist.c */
 extern BufferDesc *StrategyBufferLookup(BufferTag *tagPtr, bool recheck,
 					 int *cdb_found_index);
@@ -185,20 +138,17 @@ extern void StrategyInvalidateBuffer(BufferDesc *buf);
 extern void StrategyHintVacuum(bool vacuum_active);
 extern int StrategyDirtyBufferList(BufferDesc **buffers, BufferTag *buftags,
 						int max_buffers);
+extern int	StrategyShmemSize(void);
 extern void StrategyInitialize(bool init);
 
 /* buf_table.c */
+extern int	BufTableShmemSize(int size);
 extern void InitBufTable(int size);
 extern int	BufTableLookup(BufferTag *tagPtr);
-extern void BufTableInsert(BufferTag *tagPtr, int cdb_id);
+extern void BufTableInsert(BufferTag *tagPtr, int buf_id);
 extern void BufTableDelete(BufferTag *tagPtr);
 
-/* bufmgr.c */
-extern BufferDesc *BufferDescriptors;
-
 /* localbuf.c */
-extern BufferDesc *LocalBufferDescriptors;
-
 extern BufferDesc *LocalBufferAlloc(Relation reln, BlockNumber blockNum,
 				 bool *foundPtr);
 extern void WriteLocalBuffer(Buffer buffer, bool release);
diff --git a/src/include/storage/bufmgr.h b/src/include/storage/bufmgr.h
index f8fbd8f..a04ec3d 100644
--- a/src/include/storage/bufmgr.h
+++ b/src/include/storage/bufmgr.h
@@ -153,5 +153,6 @@ extern void BufmgrCommit(void);
 extern int	BufferSync(int percent, int maxpages);
 
 extern void InitLocalBuffer(void);
+extern void AtProcExit_LocalBuffers(void);
 
 #endif
diff --git a/src/include/tcop/tcopprot.h b/src/include/tcop/tcopprot.h
index 14660cc..7248cc7 100644
--- a/src/include/tcop/tcopprot.h
+++ b/src/include/tcop/tcopprot.h
@@ -59,6 +59,8 @@ extern bool assign_max_stack_depth(int newval, bool doit, GucSource source);
 extern void die(SIGNAL_ARGS);
 extern void quickdie(SIGNAL_ARGS);
 extern void authdie(SIGNAL_ARGS);
+extern void prepare_for_client_read(void);
+extern void client_read_ended(void);
 extern int	PostgresMain(int argc, char *argv[], const char *username);
 extern void ResetUsage(void);
 extern void ShowUsage(const char *title);
diff --git a/src/include/utils/array.h b/src/include/utils/array.h
index 22c8a47..a0fba03 100644
--- a/src/include/utils/array.h
+++ b/src/include/utils/array.h
@@ -65,6 +65,15 @@ typedef struct ArrayMetaState
 } ArrayMetaState;
 
 /*
+ * private state needed by array_map (here because caller must provide it)
+ */
+typedef struct ArrayMapState
+{
+	ArrayMetaState inp_extra;
+	ArrayMetaState ret_extra;
+} ArrayMapState;
+
+/*
  * fmgr macros for array objects
  */
 #define DatumGetArrayTypeP(X)		  ((ArrayType *) PG_DETOAST_DATUM(X))
@@ -147,7 +156,8 @@ extern ArrayType *array_set_slice(ArrayType *array, int nSubscripts,
 				int arraylen, int elmlen, bool elmbyval, char elmalign,
 				bool *isNull);
 
-extern Datum array_map(FunctionCallInfo fcinfo, Oid inpType, Oid retType);
+extern Datum array_map(FunctionCallInfo fcinfo, Oid inpType, Oid retType,
+					   ArrayMapState *amstate);
 
 extern ArrayType *construct_array(Datum *elems, int nelems,
 				Oid elmtype,
diff --git a/src/include/utils/datetime.h b/src/include/utils/datetime.h
index d279fd3..2f2dd21 100644
--- a/src/include/utils/datetime.h
+++ b/src/include/utils/datetime.h
@@ -276,7 +276,7 @@ extern void GetCurrentTimeUsec(struct pg_tm * tm, fsec_t *fsec, int *tzp);
 extern void j2date(int jd, int *year, int *month, int *day);
 extern int	date2j(int year, int month, int day);
 
-extern int ParseDateTime(const char *timestr, char *lowstr,
+extern int ParseDateTime(const char *timestr, char *workbuf, size_t buflen,
 			  char **field, int *ftype,
 			  int maxfields, int *numfields);
 extern int DecodeDateTime(char **field, int *ftype,
diff --git a/src/include/utils/guc.h b/src/include/utils/guc.h
index b679bc5..2ae69eb 100644
--- a/src/include/utils/guc.h
+++ b/src/include/utils/guc.h
@@ -149,6 +149,8 @@ extern void DefineCustomIntVariable(
 						const char *short_desc,
 						const char *long_desc,
 						int *valueAddr,
+						int minValue,
+						int maxValue,
 						GucContext context,
 						GucIntAssignHook assign_hook,
 						GucShowHook show_hook);
@@ -158,6 +160,8 @@ extern void DefineCustomRealVariable(
 						 const char *short_desc,
 						 const char *long_desc,
 						 double *valueAddr,
+						 double minValue,
+						 double maxValue,
 						 GucContext context,
 						 GucRealAssignHook assign_hook,
 						 GucShowHook show_hook);
diff --git a/src/include/utils/portal.h b/src/include/utils/portal.h
index 48cfa0d..a5c5477 100644
--- a/src/include/utils/portal.h
+++ b/src/include/utils/portal.h
@@ -182,6 +182,7 @@ typedef struct PortalData
 
 /* Prototypes for functions in utils/mmgr/portalmem.c */
 extern void EnablePortalManager(void);
+extern bool CommitHoldablePortals(void);
 extern void AtCommit_Portals(void);
 extern void AtAbort_Portals(void);
 extern void AtCleanup_Portals(void);
diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog
index 1f82527..3e04df8 100644
--- a/src/interfaces/ecpg/ChangeLog
+++ b/src/interfaces/ecpg/ChangeLog
@@ -1895,3 +1895,8 @@ Mon Jan 10 13:55:32 CET 2005
 	- Set compat library version to 1.2.
 	- Set ecpg library version to 4.2.
 
+Tue Jan 25 13:47:45 CET 2005
+
+	- Fixed segfault in preprocessor due to free a struct twice.
+	- Set ecpg version to 3.2.1.
+
diff --git a/src/interfaces/ecpg/compatlib/Makefile b/src/interfaces/ecpg/compatlib/Makefile
index abb0b27..b2d2881 100644
--- a/src/interfaces/ecpg/compatlib/Makefile
+++ b/src/interfaces/ecpg/compatlib/Makefile
@@ -13,8 +13,8 @@ top_builddir = ../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME= ecpg_compat
-SO_MAJOR_VERSION= 1
-SO_MINOR_VERSION= 1
+SO_MAJOR_VERSION= 2
+SO_MINOR_VERSION= 0
 DLTYPE= library
 
 override CPPFLAGS := -I$(top_srcdir)/src/interfaces/ecpg/include -I$(libpq_srcdir) \
diff --git a/src/interfaces/ecpg/ecpglib/Makefile b/src/interfaces/ecpg/ecpglib/Makefile
index e4a5e75..70c2dfa 100644
--- a/src/interfaces/ecpg/ecpglib/Makefile
+++ b/src/interfaces/ecpg/ecpglib/Makefile
@@ -13,8 +13,8 @@ top_builddir = ../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME= ecpg
-SO_MAJOR_VERSION= 4
-SO_MINOR_VERSION= 2
+SO_MAJOR_VERSION= 5
+SO_MINOR_VERSION= 0
 DLTYPE= library
 
 override CPPFLAGS := -DFRONTEND -I$(top_srcdir)/src/interfaces/ecpg/include \
@@ -30,6 +30,11 @@ OBJS= execute.o typename.o descriptor.o data.o error.o prepare.o memory.o \
 SHLIB_LINK = -L../pgtypeslib -lpgtypes $(libpq) \
 	$(filter -lintl -lssl -lcrypto -lkrb5 -lcrypt -lm, $(LIBS)) $(PTHREAD_LIBS)
 
+ifeq ($(PORTNAME), win32)
+# Link to shfolder.dll instead of shell32.dll
+SHLIB_LINK += -lshfolder
+endif
+
 all: all-lib
 
 # Shared library stuff
diff --git a/src/interfaces/ecpg/pgtypeslib/Makefile b/src/interfaces/ecpg/pgtypeslib/Makefile
index 8b01249..e42e696 100644
--- a/src/interfaces/ecpg/pgtypeslib/Makefile
+++ b/src/interfaces/ecpg/pgtypeslib/Makefile
@@ -13,8 +13,8 @@ top_builddir = ../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME= pgtypes
-SO_MAJOR_VERSION= 1
-SO_MINOR_VERSION= 2
+SO_MAJOR_VERSION= 2
+SO_MINOR_VERSION= 0
 DLTYPE= library
 
 override CPPFLAGS := -I$(top_srcdir)/src/interfaces/ecpg/include \
diff --git a/src/interfaces/ecpg/preproc/Makefile b/src/interfaces/ecpg/preproc/Makefile
index 066cc14..52ac074 100644
--- a/src/interfaces/ecpg/preproc/Makefile
+++ b/src/interfaces/ecpg/preproc/Makefile
@@ -13,9 +13,9 @@ subdir = src/interfaces/ecpg/preproc
 top_builddir = ../../../..
 include $(top_builddir)/src/Makefile.global
 
-MAJOR_VERSION=3
-MINOR_VERSION=2
-PATCHLEVEL=0
+MAJOR_VERSION= 4
+MINOR_VERSION= 0
+PATCHLEVEL=1
 
 override CPPFLAGS := -I$(srcdir)/../include -I$(srcdir) $(CPPFLAGS) \
 	-DMAJOR_VERSION=$(MAJOR_VERSION) \
diff --git a/src/interfaces/libpq/Makefile b/src/interfaces/libpq/Makefile
index 9443a21..5c84d1d 100644
--- a/src/interfaces/libpq/Makefile
+++ b/src/interfaces/libpq/Makefile
@@ -16,8 +16,8 @@ include $(top_builddir)/src/Makefile.global
 
 # shared library parameters
 NAME= pq
-SO_MAJOR_VERSION= 3
-SO_MINOR_VERSION= 2
+SO_MAJOR_VERSION= 4
+SO_MINOR_VERSION= 0
 DLTYPE= library
 
 override CPPFLAGS :=  -DFRONTEND -I$(srcdir) $(CPPFLAGS) -I$(top_builddir)/src/port
@@ -55,7 +55,7 @@ endif
 # matter.)
 SHLIB_LINK += $(filter -lcrypt -ldes -lkrb -lcom_err -lcrypto -lk5crypto -lkrb5 -lssl -lsocket -lnsl -lresolv -lintl, $(LIBS)) $(PTHREAD_LIBS)
 ifeq ($(PORTNAME), win32)
-SHLIB_LINK += -lwsock32 -lws2_32 -lshell32 $(filter -leay32 -lssleay32, $(LIBS))
+SHLIB_LINK += -lshfolder -lwsock32 -lws2_32 $(filter -leay32 -lssleay32 -lcomerr32 -lkrb5_32, $(LIBS))
 endif
 
 
@@ -146,6 +146,7 @@ uninstall: uninstall-lib
 
 clean distclean: clean-lib
 	rm -f $(OBJS) crypt.c getaddrinfo.c inet_aton.c noblock.c pgstrcasecmp.c snprintf.c strerror.c open.c thread.c md5.c ip.c encnames.c wchar.c pthread.h
+	rm -f pg_config_paths.h	# Might be left over from a Win32 client-only build
 
 maintainer-clean: distclean
 	rm -f $(srcdir)/libpqdll.def $(srcdir)/libpqddll.def $(srcdir)/blibpqdll.def $(srcdir)/libpq.rc
diff --git a/src/interfaces/libpq/bcc32.mak b/src/interfaces/libpq/bcc32.mak
index 0d53d0c..8649998 100644
--- a/src/interfaces/libpq/bcc32.mak
+++ b/src/interfaces/libpq/bcc32.mak
@@ -4,7 +4,17 @@
 #        and a Win32 dynamic library libpq.dll with import library libpqdll.lib
 
 # Borland C++ base install directory goes here
-# BCB=d:\Borland\Bcc55
+# BCB=c:\Borland\Bcc55
+
+!IF "$(BCB)" == ""
+!MESSAGE You must edit bcc32.mak and define BCB at the top
+!ERROR misssing BCB
+!ENDIF
+
+!IF "$(__NMAKE__)" == ""
+!MESSAGE You must use the -N compatibility flag, e.g. make -N -f bcc32.make
+!ERROR missing -N
+!ENDIF
 
 !MESSAGE Building the Win32 DLL and Static Library...
 !MESSAGE
@@ -22,7 +32,7 @@ CFG=Release
 !MESSAGE You can specify a configuration when running MAKE
 !MESSAGE by defining the macro CFG on the command line. For example:
 !MESSAGE
-!MESSAGE make  -DCFG=[Release | Debug] /f bcc32.mak
+!MESSAGE make -N -DCFG=[Release | Debug] -f bcc32.mak
 !MESSAGE
 !MESSAGE Possible choices for configuration are:
 !MESSAGE
@@ -42,15 +52,17 @@ NULL=nul
 DEBUG=1
 OUTDIR=.\Debug
 INTDIR=.\Debug
-!else
+!ELSE
 OUTDIR=.\Release
 INTDIR=.\Release
-!endif
+!ENDIF
+
+OUTFILENAME=blibpq
 
 USERDEFINES=FRONTEND;NDEBUG;WIN32;_WINDOWS;HAVE_VSNPRINTF;HAVE_STRDUP;
 
 CPP=bcc32.exe
-CPP_PROJ = -I$(BCB)\include;..\..\include -WD -c -D$(USERDEFINES) -tWM \
+CPP_PROJ = -I$(BCB)\include;..\..\include -n"$(INTDIR)" -WD -c -D$(USERDEFINES) -tWM \
 		-a8 -X -w-use -w-par -w-pia -w-csu -w-aus -w-ccc
 
 !IFDEF DEBUG
@@ -59,47 +71,15 @@ CPP_PROJ	= $(CPP_PROJ) -Od -r- -k -v -y -vi- -D_DEBUG
 CPP_PROJ	= $(CPP_PROJ) -O -Oi -OS -DNDEBUG
 !endif
 
-LIB32=tlib.exe
-LIB32_FLAGS= 
-LIB32_OBJS= \
-	"$(OUTDIR)\win32.obj" \
-	"$(INTDIR)\getaddrinfo.obj" \
-	"$(INTDIR)\thread.obj" \
-	"$(INTDIR)\inet_aton.obj" \
-	"$(INTDIR)\crypt.obj" \
-	"$(INTDIR)\noblock.obj" \
-	"$(INTDIR)\pgstrcasecmp.obj" \
-	"$(INTDIR)\md5.obj" \
-	"$(INTDIR)\ip.obj" \
-	"$(INTDIR)\fe-auth.obj" \
-	"$(INTDIR)\fe-protocol2.obj" \
-	"$(INTDIR)\fe-protocol3.obj" \
-	"$(INTDIR)\fe-connect.obj" \
-	"$(INTDIR)\fe-exec.obj" \
-	"$(INTDIR)\fe-lobj.obj" \
-	"$(INTDIR)\fe-misc.obj" \
-	"$(INTDIR)\fe-print.obj" \
-	"$(INTDIR)\fe-secure.obj" \
-	"$(INTDIR)\pqexpbuffer.obj" \
-	"$(INTDIR)\pqsignal.obj" \
-	"$(INTDIR)\wchar.obj" \
-	"$(INTDIR)\encnames.obj"
-
-
-RSC=brcc32.exe
-RSC_PROJ=-l 0x409 -i$(BCB)\include -fo"$(INTDIR)\libpq.res"
-
-LINK32=ilink32.exe
-LINK32_FLAGS = -Gn -L$(BCB)\lib;$(INTDIR); -x -Tpd -v
-LINK32_OBJS= "$(INTDIR)\libpqdll.obj"
-
-ALL: config "$(OUTDIR)" "$(OUTDIR)\blibpq.dll" "$(OUTDIR)\blibpq.lib"
+ALL : config "$(OUTDIR)" "$(OUTDIR)\blibpq.dll" "$(OUTDIR)\blibpq.lib"
 
 CLEAN :
 	-@erase "$(INTDIR)\getaddrinfo.obj"
+	-@erase "$(INTDIR)\pgstrcasecmp.obj"
 	-@erase "$(INTDIR)\thread.obj"
 	-@erase "$(INTDIR)\inet_aton.obj"
 	-@erase "$(INTDIR)\crypt.obj"
+	-@erase "$(INTDIR)\noblock.obj"
 	-@erase "$(INTDIR)\md5.obj"
 	-@erase "$(INTDIR)\ip.obj"
 	-@erase "$(INTDIR)\fe-auth.obj"
@@ -117,15 +97,43 @@ CLEAN :
 	-@erase "$(OUTDIR)\win32.obj"
 	-@erase "$(INTDIR)\wchar.obj"
 	-@erase "$(INTDIR)\encnames.obj"
-	-@erase "$(INTDIR)\noblock.obj"
-	-@erase "$(INTDIR)\pgstrcasecmp.obj"
+	-@erase "$(INTDIR)\pthread-win32.obj"
+	-@erase "$(OUTDIR)\$(OUTFILENAME).lib"
+	-@erase "$(OUTDIR)\$(OUTFILENAME)dll.lib"
 	-@erase "$(OUTDIR)\libpq.res"
-	-@erase "$(OUTDIR)\blibpq.lib"
-	-@erase "$(OUTDIR)\blibpqdll.lib"
-	-@erase "$(OUTDIR)\blibpq.dll"
-	-@erase "$(OUTDIR)\blibpq.tds"
+	-@erase "$(OUTDIR)\$(OUTFILENAME).dll"
+	-@erase "$(OUTDIR)\$(OUTFILENAME).tds"
 	-@erase "$(INTDIR)\pg_config_paths.h"
 
+
+LIB32=tlib.exe
+LIB32_FLAGS= 
+LIB32_OBJS= \
+	"$(INTDIR)\win32.obj" \
+	"$(INTDIR)\getaddrinfo.obj" \
+	"$(INTDIR)\pgstrcasecmp.obj" \
+	"$(INTDIR)\thread.obj" \
+	"$(INTDIR)\inet_aton.obj" \
+	"$(INTDIR)\crypt.obj" \
+	"$(INTDIR)\noblock.obj" \
+	"$(INTDIR)\md5.obj" \
+	"$(INTDIR)\ip.obj" \
+	"$(INTDIR)\fe-auth.obj" \
+	"$(INTDIR)\fe-protocol2.obj" \
+	"$(INTDIR)\fe-protocol3.obj" \
+	"$(INTDIR)\fe-connect.obj" \
+	"$(INTDIR)\fe-exec.obj" \
+	"$(INTDIR)\fe-lobj.obj" \
+	"$(INTDIR)\fe-misc.obj" \
+	"$(INTDIR)\fe-print.obj" \
+	"$(INTDIR)\fe-secure.obj" \
+	"$(INTDIR)\pqexpbuffer.obj" \
+	"$(INTDIR)\pqsignal.obj" \
+	"$(INTDIR)\wchar.obj" \
+	"$(INTDIR)\encnames.obj" \
+	"$(INTDIR)\pthread-win32.obj"
+
+
 config: ..\..\include\pg_config.h pthread.h pg_config_paths.h
 
 ..\..\include\pg_config.h: ..\..\include\pg_config.h.win32
@@ -134,32 +142,91 @@ config: ..\..\include\pg_config.h pthread.h pg_config_paths.h
 pthread.h: pthread.h.win32
 	copy pthread.h.win32 pthread.h
 
-pg_config_paths.h: win32.mak
-	echo #define SYSCONFDIR "" >pg_config_paths.h
+pg_config_paths.h: bcc32.mak
+	echo \#define SYSCONFDIR "" > pg_config_paths.h
 
 "$(OUTDIR)" :
 	@if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
 
+RSC=brcc32.exe
+RSC_PROJ=-l 0x409 -i$(BCB)\include -fo"$(INTDIR)\libpq.res"
+
+LINK32=ilink32.exe
+LINK32_FLAGS = -Gn -L$(BCB)\lib;$(INTDIR); -x -Tpd -v
+LINK32_OBJS= "$(INTDIR)\libpqdll.obj"
+
+# @<< is a Response file, http://www.opussoftware.com/tutorial/TutMakefile.htm
+
 "$(OUTDIR)\blibpq.dll": "$(OUTDIR)\blibpq.lib" $(LINK32_OBJS) "$(INTDIR)\libpq.res" blibpqdll.def 
-	$(LINK32) @&&!
+	$(LINK32) @<<
 	$(LINK32_FLAGS) +
 	c0d32.obj $(LINK32_OBJS), +
 	$@,, +
 	"$(OUTDIR)\blibpq.lib" import32.lib cw32mti.lib, +
 	blibpqdll.def,"$(INTDIR)\libpq.res"
-!
+<<
 	implib -w "$(OUTDIR)\blibpqdll.lib" blibpqdll.def $@
 
 "$(INTDIR)\libpq.res" : "$(INTDIR)" libpq.rc
-    $(RSC) $(RSC_PROJ) libpq.rc
+	$(RSC) $(RSC_PROJ) libpq.rc
 
 "$(OUTDIR)\blibpq.lib": $(LIB32_OBJS)
-	$(LIB32) $@ @&&!
+	$(LIB32) $@ @<<
 +-"$(**: =" &^
 +-")"
-!
+<<
 
 
-.c.obj:
-	$(CPP) -o"$(INTDIR)\$&" $(CPP_PROJ) $<
+"$(INTDIR)\getaddrinfo.obj" : ..\..\port\getaddrinfo.c
+	$(CPP) @<<
+	$(CPP_PROJ) ..\..\port\getaddrinfo.c
+<<
 
+"$(INTDIR)\pgstrcasecmp.obj" : ..\..\port\pgstrcasecmp.c
+	$(CPP) @<<
+	$(CPP_PROJ) ..\..\port\pgstrcasecmp.c
+<<
+
+"$(INTDIR)\thread.obj" : ..\..\port\thread.c
+	$(CPP) @<<
+	$(CPP_PROJ) ..\..\port\thread.c
+<<
+
+"$(INTDIR)\inet_aton.obj" : ..\..\port\inet_aton.c
+	$(CPP) @<<
+	$(CPP_PROJ) ..\..\port\inet_aton.c
+<<
+
+"$(INTDIR)\crypt.obj" : ..\..\port\crypt.c
+	$(CPP) @<<
+	$(CPP_PROJ) ..\..\port\crypt.c
+<<
+
+"$(INTDIR)\noblock.obj" : ..\..\port\noblock.c
+	$(CPP) @<<
+	$(CPP_PROJ) ..\..\port\noblock.c
+<<
+
+"$(INTDIR)\md5.obj" : ..\..\backend\libpq\md5.c
+	$(CPP) @<<
+	$(CPP_PROJ) ..\..\backend\libpq\md5.c
+<<
+
+"$(INTDIR)\ip.obj" : ..\..\backend\libpq\ip.c
+	$(CPP) @<<
+	$(CPP_PROJ) ..\..\backend\libpq\ip.c
+<<
+
+"$(INTDIR)\wchar.obj" : ..\..\backend\utils\mb\wchar.c
+	$(CPP) @<<
+	$(CPP_PROJ) /I"." ..\..\backend\utils\mb\wchar.c
+<<
+
+
+"$(INTDIR)\encnames.obj" : ..\..\backend\utils\mb\encnames.c
+	$(CPP) @<<
+	$(CPP_PROJ) /I"." ..\..\backend\utils\mb\encnames.c
+<<
+
+.c.obj:
+	$(CPP) $(CPP_PROJ) $<
diff --git a/src/interfaces/libpq/po/pl.po b/src/interfaces/libpq/po/pl.po
new file mode 100644
index 0000000..7e2aa26
--- /dev/null
+++ b/src/interfaces/libpq/po/pl.po
@@ -0,0 +1,624 @@
+# LIBPQ Translated Messages into the Polish Language (ISO-8859-2)
+#
+# Copyright (c) 2005 toczek, xxxtoczekxxx@wp.pl
+# Distributed under the same licensing terms as PostgreSQL itself.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libpq\n"
+"POT-Creation-Date: 2005-01-09 19:05+0000\n"
+"PO-Revision-Date: 2005-01-10 01:27+0100\n"
+"Last-Translator: toczek <xxxtoczekxxx@wp.pl>\n"
+"Language-Team:\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: fe-auth.c:232
+#, c-format
+msgid "Kerberos 4 error: %s\n"
+msgstr "B��d programu Kerberos 4: %s\n"
+
+#: fe-auth.c:393
+#, c-format
+msgid "could not set socket to blocking mode: %s\n"
+msgstr "nie mo�na ustawi� gniazda w tryb blokowy: %s\n"
+
+#: fe-auth.c:410 fe-auth.c:414
+#, c-format
+msgid "Kerberos 5 authentication rejected: %*s\n"
+msgstr "Kerberos 5 autoryzacja odrzucona: %*s\n"
+
+#: fe-auth.c:440
+#, c-format
+msgid "could not restore non-blocking mode on socket: %s\n"
+msgstr "nie mo�na odtworzy� trybu nieblokowego gniazda: %s\n"
+
+#: fe-auth.c:507
+msgid "SCM_CRED authentication method not supported\n"
+msgstr "Metoda autoryzacji SCM_CRED nie jest dost�pna\n"
+
+#: fe-auth.c:529 fe-connect.c:1420 fe-connect.c:2631 fe-connect.c:2640
+#: fe-lobj.c:556 fe-protocol2.c:1007 fe-protocol3.c:958
+msgid "out of memory\n"
+msgstr "brak pami�ci\n"
+
+#: fe-auth.c:599
+msgid "Kerberos 4 authentication failed\n"
+msgstr "Kerberos 4: autoryzacja odrzucona\n"
+
+#: fe-auth.c:607
+msgid "Kerberos 4 authentication not supported\n"
+msgstr "Metoda autoryzacji Kerberos 4 nie jest dost�pna\n"
+
+#: fe-auth.c:618
+msgid "Kerberos 5 authentication failed\n"
+msgstr "Kerberos 5: autoryzacja odrzucona\n"
+
+#: fe-auth.c:626
+msgid "Kerberos 5 authentication not supported\n"
+msgstr "Metoda autoryzacji Kerberos 5 nie jest dost�pna\n"
+
+#: fe-auth.c:654
+#, c-format
+msgid "authentication method %u not supported\n"
+msgstr "Metoda autoryzacji %u nie jest dost�pna\n"
+
+#: fe-auth.c:691
+#, c-format
+msgid "invalid authentication service name \"%s\", ignored\n"
+msgstr "b��dna nazwa us�ugi autoryzacji \"%s\", pomijam\n"
+
+#: fe-auth.c:764
+#, c-format
+msgid "fe_getauthname: invalid authentication system: %d\n"
+msgstr "fe_getauthname: b��dy system autoryzacji: %d\n"
+
+#: fe-connect.c:469
+#, c-format
+msgid "invalid sslmode value: \"%s\"\n"
+msgstr "b��dna warto�� sslmode: \"%s\"\n"
+
+#: fe-connect.c:489
+#, c-format
+msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n"
+msgstr "b��dna warto�� sslmode \"%s\" gdy� obs�uga SSL nie zosta�a skompilowana\n"
+
+#: fe-connect.c:805
+#, c-format
+msgid "could not set socket to TCP no delay mode: %s\n"
+msgstr "nie mo�na ustawi� gniazda TCP w tryb bez op�nie�: %s\n"
+
+#: fe-connect.c:836
+#, c-format
+msgid ""
+"could not connect to server: %s\n"
+"\tIs the server running locally and accepting\n"
+"\tconnections on Unix domain socket \"%s\"?\n"
+msgstr ""
+"nie mo�na po��czy� si� z serwerem: %s\n"
+"\tCzy serwer dzia�a lokalnie i akceptuje\n"
+"\tpo��czenia przy pomocy gniazd dziedziny uniksa \"%s\"?\n"
+
+#: fe-connect.c:848
+#, c-format
+msgid ""
+"could not connect to server: %s\n"
+"\tIs the server running on host \"%s\" and accepting\n"
+"\tTCP/IP connections on port %s?\n"
+msgstr ""
+"nie mo�na po��czy� si� z serwerem: %s\n"
+"\tCzy serwer dzia�a na stacji siecowej \"%s\" i akceptuje\n"
+"\tpo��czenia TCP/IP na porcie %s?\n"
+
+#: fe-connect.c:936
+#, c-format
+msgid "could not translate host name \"%s\" to address: %s\n"
+msgstr "nie mo�na przet�umaczy� nazwy host'a \"%s\" na adres: %s\n"
+
+#: fe-connect.c:940
+#, c-format
+msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n"
+msgstr "nie mo�na przet�umaczy� �cie�ki gniazda Unix-domain \"%s\" na adres: %s\n"
+
+#: fe-connect.c:1144
+msgid "invalid connection state, probably indicative of memory corruption\n"
+msgstr "b��dny stan po��czenia, prawdopodobnie oznajmiaj�cy uszkodzenie pami�ci\n"
+
+#: fe-connect.c:1187
+#, c-format
+msgid "could not create socket: %s\n"
+msgstr "nie mo�na utworzy� gniazda: %s\n"
+
+#: fe-connect.c:1210
+#, c-format
+msgid "could not set socket to non-blocking mode: %s\n"
+msgstr "nie mo�na ustawi� gniazda w tryb non-blocking: %s\n"
+
+#: fe-connect.c:1222
+#, c-format
+msgid "could not set socket to close-on-exec mode: %s\n"
+msgstr "nie mo�na ustawi� gniazda os�ugi zamkni�cia przy uruchomieniu: %s\n"
+
+#: fe-connect.c:1314
+#, c-format
+msgid "could not get socket error status: %s\n"
+msgstr "nie mo�na otrzyma� b��du gniazda: %s\n"
+
+#: fe-connect.c:1353
+#, c-format
+msgid "could not get client address from socket: %s\n"
+msgstr "nie mo�na otrzyma� adresu klienta z gniazda: %s\n"
+
+#: fe-connect.c:1398
+#, c-format
+msgid "could not send SSL negotiation packet: %s\n"
+msgstr "nie mo�na wys�a� pakietu negcjacji SSL: %s\n"
+
+#: fe-connect.c:1433
+#, c-format
+msgid "could not send startup packet: %s\n"
+msgstr "nie mo�na wys�a� pakietu rozpoczynaj�cego: %s\n"
+
+#: fe-connect.c:1498 fe-connect.c:1515
+msgid "server does not support SSL, but SSL was required\n"
+msgstr "serwer nie obs�uguje SSL, ale SSL jest wymagane\n"
+
+#: fe-connect.c:1531
+#, c-format
+msgid "received invalid response to SSL negotiation: %c\n"
+msgstr "otrzymano niepoprawn� odpowiedzied� negocjacji SSL: %c\n"
+
+#: fe-connect.c:1588 fe-connect.c:1620
+#, c-format
+msgid "expected authentication request from server, but received %c\n"
+msgstr "oczekiwano pro�by autoryzacji z serwera ale otrzymano %c\n"
+
+#: fe-connect.c:1856
+msgid "unexpected message from server during startup\n"
+msgstr "niespodziewana wiadomo�� z serwera podczas startu\n"
+
+#: fe-connect.c:1926
+#, c-format
+msgid "invalid connection state %c, probably indicative of memory corruption\n"
+msgstr "nieprawid�owy stan po��czenia %c, prawdopodobnie oznajmiaj�cy uszkodzenie pami�ci\n"
+
+#: fe-connect.c:2679
+#, c-format
+msgid "missing \"=\" after \"%s\" in connection info string\n"
+msgstr "brakuj�ce \"=\" po \"%s\" w �a�cuchu informacyjnym po��czenia\n"
+
+#: fe-connect.c:2728
+msgid "unterminated quoted string in connection info string\n"
+msgstr ""
+
+#: fe-connect.c:2762
+#, c-format
+msgid "invalid connection option \"%s\"\n"
+msgstr "b��dna opcja po��czenia \"%s\"\n"
+
+#: fe-connect.c:2984
+msgid "connection pointer is NULL\n"
+msgstr "wska�nik po��czenia ma warto�� NULL\n"
+
+#: fe-connect.c:3223
+#, c-format
+msgid ""
+"WARNING: Password file %s has world or group read access; permission should "
+"be u=rw (0600)\n"
+msgstr ""
+"UWAGA: Plik has�a %s posiada globalne lub grupowe uprawnienia odczytu.\n"
+"Uprawniania powinny by� usawione: u=rw (0600)\n"
+
+#: fe-exec.c:479
+msgid "NOTICE"
+msgstr "OSTRZE�ENIE"
+
+#: fe-exec.c:648 fe-exec.c:700 fe-exec.c:740
+msgid "command string is a null pointer\n"
+msgstr "�a�cuch polecenia jest wska�nikiem null\n"
+
+#: fe-exec.c:733 fe-exec.c:823
+msgid "statement name is a null pointer\n"
+msgstr "nazwa instrukcji jest wska�nikiem null\n"
+
+#: fe-exec.c:748 fe-exec.c:897 fe-exec.c:1572
+msgid "function requires at least protocol version 3.0\n"
+msgstr "funkcja wymaga przynajmniej protoko�u w wersji 3.0\n"
+
+#: fe-exec.c:854
+msgid "no connection to the server\n"
+msgstr "brak po��czenia z serwerem\n"
+
+#: fe-exec.c:861
+msgid "another command is already in progress\n"
+msgstr "inne polecenie jest aktualnie wykonywane\n"
+
+#: fe-exec.c:1199
+#, c-format
+msgid "unexpected asyncStatus: %d\n"
+msgstr "nieoczekiwany asyncStatus: %d\n"
+
+#: fe-exec.c:1326
+msgid "COPY terminated by new PQexec"
+msgstr "KOPIOWANIE zako�czone przez nowe PQexec"
+
+#: fe-exec.c:1334
+msgid "COPY IN state must be terminated first\n"
+msgstr "stan COPY IN musi zosta� wcze�niej zako�czony\n"
+
+#: fe-exec.c:1354
+msgid "COPY OUT state must be terminated first\n"
+msgstr "stan COPY OUT musi zosta� wcze�niej zako�czony\n"
+
+#: fe-exec.c:1464 fe-exec.c:1529 fe-exec.c:1614 fe-protocol2.c:1153
+#: fe-protocol3.c:1115
+msgid "no COPY in progress\n"
+msgstr ""
+
+#: fe-exec.c:1806
+msgid "connection in wrong state\n"
+msgstr "po��czenie posiada b��dny stan\n"
+
+#: fe-exec.c:1837
+msgid "invalid ExecStatusType code"
+msgstr "b�edny kod ExecStatusType"
+
+#: fe-exec.c:1901 fe-exec.c:1924
+#, c-format
+msgid "column number %d is out of range 0..%d"
+msgstr "numer kolumny %d wykracza poza zakres 0..%d"
+
+#: fe-exec.c:1917
+#, c-format
+msgid "row number %d is out of range 0..%d"
+msgstr "numer wiersza %d wykracza poza zakres 0..%d"
+
+#: fe-exec.c:2199
+#, c-format
+msgid "could not interpret result from server: %s"
+msgstr "nie mo�na zinterpretowa� wynik�w z serwera: %s"
+
+#: fe-lobj.c:410 fe-lobj.c:495
+#, c-format
+msgid "could not open file \"%s\": %s\n"
+msgstr "nie mo�na otworzy� pliku \"%s\": %s\n"
+
+#: fe-lobj.c:422
+#, c-format
+msgid "could not create large object for file \"%s\"\n"
+msgstr "nie mo�na utworzy� du�ego obiektu dla pliku \"%s\"\n"
+
+#: fe-lobj.c:432 fe-lobj.c:482
+#, c-format
+msgid "could not open large object %u\n"
+msgstr "nie mo�na otworzy� du�ego obiektu %u\n"
+
+#: fe-lobj.c:447
+#, c-format
+msgid "error while reading file \"%s\"\n"
+msgstr "b��d podczas odczytu pliku \"%s\"\n"
+
+#: fe-lobj.c:510 fe-lobj.c:523
+#, c-format
+msgid "error while writing to file \"%s\"\n"
+msgstr "b��d podczas zapisu do pliku \"%s\"\n"
+
+#: fe-lobj.c:601
+msgid "query to initialize large object functions did not return data\n"
+msgstr "zapytanie inicjalizuj�ce du�y obiekt nie zwr�ci�o �adnych danych\n"
+
+#: fe-lobj.c:639
+msgid "cannot determine OID of function lo_open\n"
+msgstr "nie mo�na ustali� OID funkcji lo_open\n"
+
+#: fe-lobj.c:646
+msgid "cannot determine OID of function lo_close\n"
+msgstr "nie mo�na ustali� OID funkcji lo_close\n"
+
+#: fe-lobj.c:653
+msgid "cannot determine OID of function lo_creat\n"
+msgstr "nie mo�na ustali� OID funkcji lo_creat\n"
+
+#: fe-lobj.c:660
+msgid "cannot determine OID of function lo_unlink\n"
+msgstr "nie mo�na ustali� OID funkcji lo_unlink\n"
+
+#: fe-lobj.c:667
+msgid "cannot determine OID of function lo_lseek\n"
+msgstr "nie mo�na ustali� OID funkcji lo_lseek\n"
+
+#: fe-lobj.c:674
+msgid "cannot determine OID of function lo_tell\n"
+msgstr "nie mo�na ustali� OID funkcji lo_tell\n"
+
+#: fe-lobj.c:681
+msgid "cannot determine OID of function loread\n"
+msgstr "nie mo�na ustali� OID funkcji loread\n"
+
+#: fe-lobj.c:688
+msgid "cannot determine OID of function lowrite\n"
+msgstr "nie mo�na ustali� OID funkcji lowrite\n"
+
+#: fe-misc.c:228
+#, c-format
+msgid "integer of size %lu not supported by pqGetInt"
+msgstr "typ integer o rozmiarze %lu nie jest obs�ugiwany przez pqGetInt"
+
+#: fe-misc.c:264
+#, c-format
+msgid "integer of size %lu not supported by pqPutInt"
+msgstr "typ intiger o rozmiarze %lu nie jest obs�ugiwany przez pqPutInt"
+
+#: fe-misc.c:544 fe-misc.c:748
+msgid "connection not open\n"
+msgstr "po��czenie nie jest otwarte\n"
+
+#: fe-misc.c:610 fe-misc.c:701
+#, c-format
+msgid "could not receive data from server: %s\n"
+msgstr "nie mo�na otrzyma� danych z serwera: %s\n"
+
+#: fe-misc.c:718 fe-misc.c:786
+msgid ""
+"server closed the connection unexpectedly\n"
+"\tThis probably means the server terminated abnormally\n"
+"\tbefore or while processing the request.\n"
+msgstr ""
+"serwer zamkn�� po��czenie niespodziewanie\n"
+"\tOznacza to prawdopodobnie i� serwer zako�czy� dzia�anie niepoprawnie\n"
+"\tprzed lub podczas przetwarzania zapytania.\n"
+
+#: fe-misc.c:803
+#, c-format
+msgid "could not send data to server: %s\n"
+msgstr "nie mo�na wys�a� danych do serwera: %s\n"
+
+#: fe-misc.c:923
+msgid "timeout expired\n"
+msgstr "up�yn�� limit czasu rz�dania\n"
+
+#: fe-misc.c:968
+msgid "socket not open\n"
+msgstr "gniazdo nie jest otwarte\n"
+
+#: fe-misc.c:991
+#, c-format
+msgid "select() failed: %s\n"
+msgstr "select() nie uda�o si�: %s\n"
+
+#: fe-protocol2.c:91
+#, c-format
+msgid "invalid setenv state %c, probably indicative of memory corruption\n"
+msgstr "niepoprawny stan setenv %c, prawdopodobnie oznajmiaj�cy uszkodzenie pami�ci\n"
+
+#: fe-protocol2.c:333
+#, c-format
+msgid "invalid state %c, probably indicative of memory corruption\n"
+msgstr "nieporawny stan %c, prawdopodobnie oznajmiaj�cy uszkodzenie pami�ci\n"
+
+#: fe-protocol2.c:423 fe-protocol3.c:183
+#, c-format
+msgid "message type 0x%02x arrived from server while idle"
+msgstr "otrzymano wiadomo�� typu 0x%02x z serwera podczas procesu bezczynno�ci"
+
+#: fe-protocol2.c:462
+#, c-format
+msgid "unexpected character %c following empty query response (\"I\" message)"
+msgstr "nieznany znak %c nast�puj�cy po odpowiedzi pustego zapytania ( wiadomo��\"I\") "
+
+#: fe-protocol2.c:517
+msgid ""
+"server sent data (\"D\" message) without prior row description (\"T\" "
+"message)"
+msgstr ""
+"serwer wys�a� dane (wiadomo�� \"D\") bez wcze�niejszego opisu wiersza (wiadomo�� \"T\")"
+
+#: fe-protocol2.c:533
+msgid ""
+"server sent binary data (\"B\" message) without prior row description (\"T\" "
+"message)"
+msgstr ""
+"serwer wys�a� dane binarne (wiadomo�� \"B\") bez wcze�niejszego opisu "
+"wiersza (wiadomo�� \"T\")"
+
+#: fe-protocol2.c:548 fe-protocol3.c:344
+#, c-format
+msgid "unexpected response from server; first received character was \"%c\"\n"
+msgstr "nieznana odpowied� z serwera: pierszym znakiem otrzymanym by� \"%c\"\n"
+
+#: fe-protocol2.c:760 fe-protocol3.c:577
+msgid "out of memory for query result\n"
+msgstr "brak pami�ci dla rezultat�w zapytania\n"
+
+#: fe-protocol2.c:1196 fe-protocol3.c:1184
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: fe-protocol2.c:1208
+msgid "lost synchronization with server, resetting connection"
+msgstr "utracono synchronizacj� z serwerem, resetuj� po��czenie"
+
+#: fe-protocol2.c:1343 fe-protocol2.c:1375 fe-protocol3.c:1387
+#, c-format
+msgid "protocol error: id=0x%x\n"
+msgstr "b��d protoko�u: id=0x%x\n"
+
+#: fe-protocol3.c:306
+msgid ""
+"server sent data (\"D\" message) without prior row description (\"T\" "
+"message)\n"
+msgstr ""
+"serwer wys�a� dane (wiadmo�� \"D\") bez wcze�niejszego opisu wiersza (wiadomo�� \"T\")\n"
+
+#: fe-protocol3.c:365
+#, c-format
+msgid "message contents do not agree with length in message type \"%c\"\n"
+msgstr "zawarto�� wiadomo�ci nie zgadza si� z d�ugo�ci� wiadomo�ci typu \"%c\"\n"
+
+#: fe-protocol3.c:386
+#, c-format
+msgid "lost synchronization with server: got message type \"%c\", length %d\n"
+msgstr "utracono synchronizacj� z serwerm: otrzymano wiadomo�� typu\"%c\", d�ugo�� %d\n"
+
+#: fe-protocol3.c:522
+msgid "unexpected field count in \"D\" message\n"
+msgstr "nieznane pole wyliczone w wiadomo�ci \"D\"\n"
+
+#. translator: %s represents a digit string
+#: fe-protocol3.c:651 fe-protocol3.c:659
+#, c-format
+msgid " at character %s"
+msgstr " znak %s"
+
+#: fe-protocol3.c:668
+#, c-format
+msgid "DETAIL:  %s\n"
+msgstr "SZCZEGӣY: %s\n"
+
+#: fe-protocol3.c:671
+#, c-format
+msgid "HINT:  %s\n"
+msgstr "PODPOWIED�:  %s\n"
+
+#: fe-protocol3.c:674
+#, c-format
+msgid "QUERY:  %s\n"
+msgstr "ZAPYTANOE:  %s\n"
+
+#: fe-protocol3.c:677
+#, c-format
+msgid "CONTEXT:  %s\n"
+msgstr "KONTEKST:  %s\n"
+
+#: fe-protocol3.c:689
+msgid "LOCATION:  "
+msgstr "LOKALIZACJA:  "
+
+#: fe-protocol3.c:691
+#, c-format
+msgid "%s, "
+msgstr "%s, "
+
+#: fe-protocol3.c:693
+#, c-format
+msgid "%s:%s"
+msgstr "%s:%s"
+
+#: fe-protocol3.c:1000
+msgid "PQgetline: not doing text COPY OUT\n"
+msgstr "PQgetline: nie dzia�am aktualnie w stanie COPY OUT\n"
+
+#: fe-secure.c:273
+#, c-format
+msgid "could not establish SSL connection: %s\n"
+msgstr "nie mo�na ustanowi� po��czenia SSL: %s\n"
+
+#: fe-secure.c:344 fe-secure.c:439 fe-secure.c:1042
+#, c-format
+msgid "SSL SYSCALL error: %s\n"
+msgstr "b��d SSL SYSCALL: %s\n"
+
+#: fe-secure.c:349 fe-secure.c:445 fe-secure.c:1046
+msgid "SSL SYSCALL error: EOF detected\n"
+msgstr "b��d SSL SYSCALL: wykryto EOF\n"
+
+#: fe-secure.c:361 fe-secure.c:456 fe-secure.c:1065
+#, c-format
+msgid "SSL error: %s\n"
+msgstr "b��d SSL: %s\n"
+
+#: fe-secure.c:371 fe-secure.c:466 fe-secure.c:1075
+#, c-format
+msgid "unrecognized SSL error code: %d\n"
+msgstr "nieznany b��d SSL o kodzie: %d\n"
+
+#: fe-secure.c:536
+#, c-format
+msgid "error querying socket: %s\n"
+msgstr "b��d zapytania gniazda: %s\n"
+
+#: fe-secure.c:564
+#, c-format
+msgid "could not get information about host \"%s\": %s\n"
+msgstr "nie mo�na otrzyma� informacji o stacji siecowej \"%s\": %s\n"
+
+#: fe-secure.c:583
+msgid "unsupported protocol\n"
+msgstr "nieobs�ugiwany protok�\n"
+
+#: fe-secure.c:605
+#, c-format
+msgid "server common name \"%s\" does not resolve to %ld.%ld.%ld.%ld\n"
+msgstr "nazwa serwera \"%s\" nie odpowiada %ld.%ld.%ld.%ld\n"
+
+#: fe-secure.c:612
+#, c-format
+msgid "server common name \"%s\" does not resolve to peer address\n"
+msgstr ""
+
+#: fe-secure.c:782
+msgid "could not get user information\n"
+msgstr "nie mo�na uzyka� informacji o u�ytkowniku\n"
+
+#: fe-secure.c:791
+#, c-format
+msgid "could not open certificate file \"%s\": %s\n"
+msgstr "nie mo�na otworzy� pliku certyfikatu \"%s\": %s\n"
+
+#: fe-secure.c:800
+#, c-format
+msgid "could not read certificate file \"%s\": %s\n"
+msgstr "nie mo�na odczyta� pliku certyfikatu \"%s\": %s\n"
+
+#: fe-secure.c:813
+#, c-format
+msgid "certificate present, but not private key file \"%s\"\n"
+msgstr "znaleziono certyfikat ale nie znaleziono pliku z prywatnym kluczem \"%s\"\n"
+
+#: fe-secure.c:822
+#, c-format
+msgid "private key file \"%s\" has wrong permissions\n"
+msgstr "plik z prywatnym kluczem \"%s\" posiada b��dne uprawnienia\n"
+
+#: fe-secure.c:830
+#, c-format
+msgid "could not open private key file \"%s\": %s\n"
+msgstr "nie mo�na otworzy� pliku z prywatnym kluczem \"%s\": %s\n"
+
+#: fe-secure.c:838
+#, c-format
+msgid "private key file \"%s\" changed during execution\n"
+msgstr "plik z prywatnym kluczem \"%s\" zmieniony podczas wykonywania\n"
+
+#: fe-secure.c:846
+#, c-format
+msgid "could not read private key file \"%s\": %s\n"
+msgstr "nie mo�na odczyta� pliku z prywatnym kluczem \"%s\": %s\n"
+
+#: fe-secure.c:860
+#, c-format
+msgid "certificate does not match private key file \"%s\": %s\n"
+msgstr "certyfikat nie pokrywa si� z prywatnym kluczem w pliku \"%s\": %s\n"
+
+#: fe-secure.c:943
+#, c-format
+msgid "could not create SSL context: %s\n"
+msgstr "nie mo�na utworzy� kontekstu SSL: %s\n"
+
+#: fe-secure.c:982
+#, c-format
+msgid "could not read root certificate file \"%s\": %s\n"
+msgstr "nie mo�na odczyta� pliku z certyfikatem u�ytkownika root \"%s\": %s\n"
+
+#: fe-secure.c:1095
+#, c-format
+msgid "certificate could not be validated: %s\n"
+msgstr "certyfikat nie mo�e zosta� potwierdzony: %s\n"
+
+#: fe-secure.c:1109
+#, c-format
+msgid "certificate could not be obtained: %s\n"
+msgstr "certygikat nie mo�e zosta� otrzymany: %s\n"
diff --git a/src/interfaces/libpq/po/pt_BR.po b/src/interfaces/libpq/po/pt_BR.po
index f0d8279..ad94e97 100644
--- a/src/interfaces/libpq/po/pt_BR.po
+++ b/src/interfaces/libpq/po/pt_BR.po
@@ -1,13 +1,13 @@
 # "libpq" translation to Brazilian Portuguese Language.
 # Cesar Suga <sartre@linuxbr.com>, 2002.
 # Roberto Mello <rmello@fslc.usu.edu>, 2002.
-# Euler Taveira de Oliveira <eulerto@yahoo.com.br>, 2003, 2004.
+# Euler Taveira de Oliveira <eulerto@yahoo.com.br>, 2003, 2004, 2005.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: PostgreSQL 8.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-01-15 12:04-0200\n"
+"POT-Creation-Date: 2005-05-08 21:42-0300\n"
 "PO-Revision-Date: 2004-10-27 18:36-0300\n"
 "Last-Translator: Euler Taveira de Oliveira <eulerto@yahoo.com.br>\n"
 "Language-Team: Brazilian Portuguese <desenvolvimento-postgresql@listas."
@@ -21,57 +21,49 @@ msgstr ""
 msgid "Kerberos 4 error: %s\n"
 msgstr "Erro do Kerberos 4: %s\n"
 
-#: fe-auth.c:397
+#: fe-auth.c:402
 #, c-format
 msgid "could not set socket to blocking mode: %s\n"
 msgstr "n�o p�de configurar o soquete para modo bloqueado: %s\n"
 
-#: fe-auth.c:414 fe-auth.c:418
+#: fe-auth.c:419 fe-auth.c:423
 #, c-format
 msgid "Kerberos 5 authentication rejected: %*s\n"
 msgstr "Autentica��o Kerberos 5 rejeitada: %*s\n"
 
-#: fe-auth.c:444
+#: fe-auth.c:449
 #, c-format
 msgid "could not restore non-blocking mode on socket: %s\n"
 msgstr "n�o p�de restaurar modo n�o-bloqueado no soquete: %s\n"
 
-#: fe-auth.c:511
+#: fe-auth.c:516
 msgid "SCM_CRED authentication method not supported\n"
 msgstr "m�todo de autentica��o SCM_CRED n�o � suportado\n"
 
-#: fe-auth.c:533 fe-connect.c:1427 fe-connect.c:2638 fe-connect.c:2647
+#: fe-auth.c:538 fe-connect.c:1427 fe-connect.c:2647 fe-connect.c:2656
 #: fe-lobj.c:556 fe-protocol2.c:1007 fe-protocol3.c:958
 msgid "out of memory\n"
 msgstr "sem mem�ria\n"
 
-#: fe-auth.c:603
-msgid "Kerberos 4 authentication failed\n"
-msgstr "Autentica��o Kerberos 4 falhou\n"
-
-#: fe-auth.c:611
+#: fe-auth.c:615
 msgid "Kerberos 4 authentication not supported\n"
 msgstr "Autentica��o Kerberos 4 n�o � suportada\n"
 
-#: fe-auth.c:622
-msgid "Kerberos 5 authentication failed\n"
-msgstr "Autentica��o Kerberos 5 falhou\n"
-
-#: fe-auth.c:630
+#: fe-auth.c:633
 msgid "Kerberos 5 authentication not supported\n"
 msgstr "Autentica��o Kerberos 5 n�o � suportada\n"
 
-#: fe-auth.c:658
+#: fe-auth.c:661
 #, c-format
 msgid "authentication method %u not supported\n"
 msgstr "m�todo de autentica��o %u n�o � suportado\n"
 
-#: fe-auth.c:695
+#: fe-auth.c:698
 #, c-format
 msgid "invalid authentication service name \"%s\", ignored\n"
 msgstr "nome do servi�o de autentica��o \"%s\" � inv�lido, ignorado\n"
 
-#: fe-auth.c:768
+#: fe-auth.c:771
 #, c-format
 msgid "fe_getauthname: invalid authentication system: %d\n"
 msgstr "fe_getauthname: sistema de autentica��o inv�lido: %d\n"
@@ -87,6 +79,16 @@ msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n"
 msgstr ""
 "valor do modo ssl � \"%s\" inv�lido quando suporte a SSL n�o foi compilado\n"
 
+#: fe-connect.c:743
+msgid "connectDBStart() -- socket name can only be specified with non-TCP\n"
+msgstr ""
+"connectDBStart() -- nome do soquete s� pode ser especificado com acesso n�o-"
+"TCP\n"
+
+#: fe-connect.c:772
+msgid "connectDBStart() -- non-TCP access only possible on localhost\n"
+msgstr "connectDBStart() -- acesso n�o-TCP s� � poss�vel com localhost\n"
+
 #: fe-connect.c:812
 #, c-format
 msgid "could not set socket to TCP no delay mode: %s\n"
@@ -160,7 +162,7 @@ msgstr "n
 #: fe-connect.c:1405
 #, c-format
 msgid "could not send SSL negotiation packet: %s\n"
-msgstr "n�o p�de mandar pacote de negocia��o SSL: %s\n"
+msgstr "n�o p�de enviar pacote de negocia��o SSL: %s\n"
 
 #: fe-connect.c:1440
 #, c-format
@@ -171,6 +173,10 @@ msgstr "n
 msgid "server does not support SSL, but SSL was required\n"
 msgstr "servidor n�o suporta SSL, mas SSL foi requerido\n"
 
+#: fe-connect.c:1517
+msgid "Postmaster reports error, attempting fallback to pre-7.0.\n"
+msgstr "Postmaster relatou erro, tentando com vers�es anteriores a 7.0.\n"
+
 #: fe-connect.c:1538
 #, c-format
 msgid "received invalid response to SSL negotiation: %c\n"
@@ -179,7 +185,7 @@ msgstr "a negocia
 #: fe-connect.c:1595 fe-connect.c:1627
 #, c-format
 msgid "expected authentication request from server, but received %c\n"
-msgstr "pedido de autentica��o esperado do servidor, mas foi recebido %c\n"
+msgstr "pedido de autentica��o do servidor era esperado, mas foi recebido %c\n"
 
 #: fe-connect.c:1863
 msgid "unexpected message from server during startup\n"
@@ -192,27 +198,42 @@ msgstr ""
 "estado de conex�o %c � inv�lido, provavelmente indicativo de corrup��o de "
 "mem�ria\n"
 
-#: fe-connect.c:2686
+#: fe-connect.c:2514
+#, c-format
+msgid "ERROR: Service file '%s' not found\n"
+msgstr "ERRO: arquivo de servi�o '%s' n�o foi encontrado\n"
+
+#: fe-connect.c:2527
+#, c-format
+msgid "ERROR: line %d too long in service file '%s'\n"
+msgstr "ERRO: linha %d � muito longa em arquivo de servi�o '%s'\n"
+
+#: fe-connect.c:2578 fe-connect.c:2605
+#, c-format
+msgid "ERROR: syntax error in service file '%s', line %d\n"
+msgstr "ERRO: erro de sintaxe em arquivo de servi�o '%s', linha %d\n"
+
+#: fe-connect.c:2695
 #, c-format
 msgid "missing \"=\" after \"%s\" in connection info string\n"
 msgstr "faltando \"=\" depois de \"%s\" na informa��o sobre a conex�o\n"
 
-#: fe-connect.c:2735
+#: fe-connect.c:2744
 msgid "unterminated quoted string in connection info string\n"
 msgstr ""
 "cadeia de caracteres entre aspas n�o foi terminada na informa��o sobre a "
 "conex�o\n"
 
-#: fe-connect.c:2769
+#: fe-connect.c:2778
 #, c-format
 msgid "invalid connection option \"%s\"\n"
 msgstr "op��o de conex�o \"%s\" inv�lida\n"
 
-#: fe-connect.c:2991
+#: fe-connect.c:3000
 msgid "connection pointer is NULL\n"
 msgstr "ponteiro da conex�o � NULO\n"
 
-#: fe-connect.c:3230
+#: fe-connect.c:3239
 #, c-format
 msgid ""
 "WARNING: Password file %s has world or group read access; permission should "
@@ -352,16 +373,66 @@ msgstr "n
 msgid "cannot determine OID of function lowrite\n"
 msgstr "n�o pode determinar OID da fun��o lowrite\n"
 
+#: fe-misc.c:88
+#, c-format
+msgid "From backend> %c\n"
+msgstr "Do servidor> %c\n"
+
+#: fe-misc.c:104
+#, c-format
+msgid "To backend> %c\n"
+msgstr "Para servidor> %c\n"
+
+#: fe-misc.c:140
+#, c-format
+msgid "From backend> \"%s\"\n"
+msgstr "Do servidor> \"%s\"\n"
+
+#: fe-misc.c:157
+#, c-format
+msgid "To backend> '%s'\n"
+msgstr "Para servidor> '%s'\n"
+
+#: fe-misc.c:178
+#, c-format
+msgid "From backend (%lu)> %.*s\n"
+msgstr "Do servidor (%lu)> %.*s\n"
+
+#: fe-misc.c:194
+#, c-format
+msgid "To backend> %.*s\n"
+msgstr "Para servidor> %.*s\n"
+
 #: fe-misc.c:228
 #, c-format
 msgid "integer of size %lu not supported by pqGetInt"
 msgstr "inteiro de tamanho %lu n�o � suportado por pqGetInt"
 
+#: fe-misc.c:234
+#, c-format
+msgid "From backend (#%lu)> %d\n"
+msgstr "Do servidor (#%lu)> %d\n"
+
 #: fe-misc.c:264
 #, c-format
 msgid "integer of size %lu not supported by pqPutInt"
 msgstr "inteiro de tamanho %lu n�o � suportado por pqPutInt"
 
+#: fe-misc.c:270
+#, c-format
+msgid "To backend (%lu#)> %d\n"
+msgstr "Para servidor (%lu#)> %d\n"
+
+#: fe-misc.c:458
+#, c-format
+msgid "To backend> Msg %c\n"
+msgstr "Para servidor> Mensagem %c\n"
+
+#: fe-misc.c:496
+#, c-format
+msgid "To backend> Msg complete, length %u\n"
+msgstr "Para servidor> Mensagem completa, tamanho %u\n"
+
 #: fe-misc.c:544 fe-misc.c:748
 msgid "connection not open\n"
 msgstr "conex�o n�o est� aberta\n"
@@ -634,7 +705,7 @@ msgstr "n
 #: fe-secure.c:986
 #, c-format
 msgid "could not read root certificate file \"%s\": %s\n"
-msgstr "n�o p�de ler arquivo de certificado raiz \"%s\": %s\n"
+msgstr "n�o p�de ler arquivo contendo certificado raiz \"%s\": %s\n"
 
 #: fe-secure.c:1099
 #, c-format
@@ -645,3 +716,9 @@ msgstr "certificado n
 #, c-format
 msgid "certificate could not be obtained: %s\n"
 msgstr "certificado n�o p�de ser obtido: %s\n"
+
+#~ msgid "Kerberos 4 authentication failed\n"
+#~ msgstr "Autentica��o Kerberos 4 falhou\n"
+
+#~ msgid "Kerberos 5 authentication failed\n"
+#~ msgstr "Autentica��o Kerberos 5 falhou\n"
diff --git a/src/interfaces/libpq/po/tr.po b/src/interfaces/libpq/po/tr.po
index 49dba8a..4e2334b 100644
--- a/src/interfaces/libpq/po/tr.po
+++ b/src/interfaces/libpq/po/tr.po
@@ -1,90 +1,97 @@
+# translation of libpq-tr.po to 
 # translation of libpq-tr.po to Turkish
-# Devrim GUNDUZ <devrim@PostgreSQL.org>, 2004.
+# Devrim GUNDUZ <devrim@PostgreSQL.org>, 2004, 2005.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: libpq-tr\n"
-"POT-Creation-Date: 2004-10-28 13:10+0100\n"
-"PO-Revision-Date: 2004-10-28 18:05+0300\n"
-"Last-Translator: Devrim GUNDUZ <devrim@PostgreSQL.org>\n"
-"Language-Team: Turkish <http://developer.postgresql.org/~petere/nlsstatus/po-current/libpq-tr.po>\n"
+"POT-Creation-Date: 2005-04-02 07:16+0100\n"
+"PO-Revision-Date: 2005-04-02 19:12+0300\n"
+"Last-Translator: \n"
+"Language-Team:  <en@li.org>\n"
 "current/libpq-tr.po>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.3.1\n"
+"current/libpq-tr.po>\n"
+"X-Generator: KBabel 1.9.1\n"
 
 #: fe-auth.c:232
 #, c-format
 msgid "Kerberos 4 error: %s\n"
 msgstr "Kerberos 4 hatası: %s\n"
 
-#: fe-auth.c:394
+#: fe-auth.c:402
 #, c-format
 msgid "could not set socket to blocking mode: %s\n"
 msgstr "soket engelleme moduna ayarlanamadı: %s\n"
 
-#: fe-auth.c:411 fe-auth.c:415
+#: fe-auth.c:419 fe-auth.c:423
 #, c-format
 msgid "Kerberos 5 authentication rejected: %*s\n"
 msgstr "Kerberos 5 yetkilendirmesi kabul edilmedi: %*s\n"
 
-#: fe-auth.c:441
+#: fe-auth.c:449
 #, c-format
 msgid "could not restore non-blocking mode on socket: %s\n"
 msgstr "could not restore non-blocking mode on socket: %s\n"
 
-#: fe-auth.c:508
+#: fe-auth.c:516
 msgid "SCM_CRED authentication method not supported\n"
 msgstr "SCM_CRED yetkilendirme yöntemi desteklenmiyor.\n"
 
-#: fe-auth.c:600
-msgid "Kerberos 4 authentication failed\n"
-msgstr "Kerberos 4 yetkilendirmesi başarısız oldu\n"
+#: fe-auth.c:538 fe-connect.c:1427 fe-connect.c:2638 fe-connect.c:2647
+#: fe-lobj.c:556 fe-protocol2.c:1007 fe-protocol3.c:958
+msgid "out of memory\n"
+msgstr "yetersiz bellek\n"
 
-#: fe-auth.c:608
+#: fe-auth.c:615
 msgid "Kerberos 4 authentication not supported\n"
 msgstr "Kerberos 4 yetkilendirmesi desteklenmiyor\n"
 
-#: fe-auth.c:619
-msgid "Kerberos 5 authentication failed\n"
-msgstr "Kerberos5 yetkilendirmesi başarısız oldu\n"
-
-#: fe-auth.c:627
+#: fe-auth.c:633
 msgid "Kerberos 5 authentication not supported\n"
 msgstr "Kerberos 5 yetkilendirmesi desteklenmiyor\n"
 
-#: fe-auth.c:655
+#: fe-auth.c:661
 #, c-format
 msgid "authentication method %u not supported\n"
 msgstr "%u yetkilendirme sistemi desteklenmiyor\n"
 
-#: fe-auth.c:692
+#: fe-auth.c:698
 #, c-format
 msgid "invalid authentication service name \"%s\", ignored\n"
 msgstr "Geçersiz servis adı yetkilendirmesi\"%s\", gözardı edildi\n"
 
-#: fe-auth.c:764
+#: fe-auth.c:771
 #, c-format
 msgid "fe_getauthname: invalid authentication system: %d\n"
 msgstr "fe_getauthname: geçersiz yetkilendirme sistemi: %d\n"
 
-#: fe-connect.c:457
+#: fe-connect.c:476
 #, c-format
 msgid "invalid sslmode value: \"%s\"\n"
 msgstr "geçersiz sslmode değeri: \"%s\"\n"
 
-#: fe-connect.c:477
+#: fe-connect.c:496
 #, c-format
 msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n"
 msgstr "\"%s\" ssl modu, SSL desteği derlenmeyince geçersizdir.\n"
 
-#: fe-connect.c:793
+#: fe-connect.c:743
+msgid "connectDBStart() -- socket name can only be specified with non-TCP\n"
+msgstr "connectDBStart() -- soket adı sadece TCP olmayan bağlantılarda belirtilebilir.\n"
+
+#: fe-connect.c:772
+msgid "connectDBStart() -- non-TCP access only possible on localhost\n"
+msgstr "connectDBStart() -- TCP dışı erişim sadece localhost üzerinde mümkündür\n"
+
+#: fe-connect.c:812
 #, c-format
 msgid "could not set socket to TCP no delay mode: %s\n"
 msgstr "could not set socket to TCP no delay mode: %s\n"
 
-#: fe-connect.c:824
+#: fe-connect.c:843
 #, c-format
 msgid ""
 "could not connect to server: %s\n"
@@ -95,7 +102,7 @@ msgstr ""
 "\tSunucu yerelde çalışıyor ve Unix domain\n"
 "\tsoketleri üzerinden bağlantılara izin veriyor mu? \"%s\"?\n"
 
-#: fe-connect.c:836
+#: fe-connect.c:855
 #, c-format
 msgid ""
 "could not connect to server: %s\n"
@@ -106,107 +113,116 @@ msgstr ""
 "\tSunucu \"%s\" sunucunda çalışıyor ve\n"
 "\t\"%s\" portundan bağlantılara izin veriyor mu?\n"
 
-#: fe-connect.c:929
+#: fe-connect.c:943
 #, c-format
 msgid "could not translate host name \"%s\" to address: %s\n"
 msgstr "\"%s\" makine adı bir adrese çevirilemedi: %s\n"
 
-#: fe-connect.c:933
+#: fe-connect.c:947
 #, c-format
 msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n"
 msgstr "\"%s\" Unix domain soket yolu adrese çevirilemedi: %s\n"
 
-#: fe-connect.c:1137
+#: fe-connect.c:1151
 msgid "invalid connection state, probably indicative of memory corruption\n"
 msgstr "Geçersiz bağlantı durumu, hafızanın zarar görmüş olmasının işareti olabilir\n"
 
-#: fe-connect.c:1180
+#: fe-connect.c:1194
 #, c-format
 msgid "could not create socket: %s\n"
 msgstr "soket yaratılamadı: %s\n"
 
-#: fe-connect.c:1203
+#: fe-connect.c:1217
 #, c-format
 msgid "could not set socket to non-blocking mode: %s\n"
 msgstr "could not set socket to non-blocking mode: %s\n"
 
-#: fe-connect.c:1215
+#: fe-connect.c:1229
 #, c-format
 msgid "could not set socket to close-on-exec mode: %s\n"
 msgstr "soket close-on-exec moduna ayarlanamadı: %s\n"
 
-#: fe-connect.c:1307
+#: fe-connect.c:1321
 #, c-format
 msgid "could not get socket error status: %s\n"
 msgstr "soket hata durumu alınamadı: %s\n"
 
-#: fe-connect.c:1346
+#: fe-connect.c:1360
 #, c-format
 msgid "could not get client address from socket: %s\n"
 msgstr "soketten istemci adresi alınamadı: %s\n"
 
-#: fe-connect.c:1391
+#: fe-connect.c:1405
 #, c-format
 msgid "could not send SSL negotiation packet: %s\n"
 msgstr "could not send SSL negotiation packet: %s\n"
 
-#: fe-connect.c:1413 fe-connect.c:2543 fe-connect.c:2552 fe-connect.c:3131
-#: fe-lobj.c:556 fe-protocol2.c:1007 fe-protocol3.c:958
-msgid "out of memory\n"
-msgstr "yetersiz bellek\n"
-
-#: fe-connect.c:1426
+#: fe-connect.c:1440
 #, c-format
 msgid "could not send startup packet: %s\n"
 msgstr "başlangıç paketi gönderilemedi: %s\n"
 
-#: fe-connect.c:1466
-#, c-format
-msgid "could not receive server response to SSL negotiation packet: %s\n"
-msgstr "SSL görüşme paketine sunucudan yanıt alınamadı: %s\n"
-
-#: fe-connect.c:1485 fe-connect.c:1502
+#: fe-connect.c:1505 fe-connect.c:1522
 msgid "server does not support SSL, but SSL was required\n"
 msgstr "sunucu SSL desteklemiyor, ama SSL gerekli idi\n"
 
-#: fe-connect.c:1518
+#: fe-connect.c:1517
+msgid "Postmaster reports error, attempting fallback to pre-7.0.\n"
+msgstr "Postmaster hata bildiriyor, 7.0 öncesine dönülmeye çalışılıyor.\n"
+
+#: fe-connect.c:1538
 #, c-format
 msgid "received invalid response to SSL negotiation: %c\n"
 msgstr "ssl görüşmesine geçersiz yanıt alındı: %c\n"
 
-#: fe-connect.c:1575 fe-connect.c:1607
+#: fe-connect.c:1595 fe-connect.c:1627
 #, c-format
 msgid "expected authentication request from server, but received %c\n"
 msgstr "sunucudan yetkilendirme isteği beklendi ancak %c alındı\n"
 
-#: fe-connect.c:1843
+#: fe-connect.c:1863
 msgid "unexpected message from server during startup\n"
 msgstr "başlangıç sırasında sunucudan beklenmeyen bir mesaj alındı\n"
 
-#: fe-connect.c:1913
+#: fe-connect.c:1933
 #, c-format
 msgid "invalid connection state %c, probably indicative of memory corruption\n"
 msgstr "%c - geçersiz bağlantı durumu, bellek zarar görmüş olabilir\n"
 
-#: fe-connect.c:2591
+#: fe-connect.c:2505
+#, c-format
+msgid "ERROR: Service file '%s' not found\n"
+msgstr "HATA: '%s' servis dosyası bulunamadı\n"
+
+#: fe-connect.c:2518
+#, c-format
+msgid "ERROR: line %d too long in service file '%s'\n"
+msgstr "HATA: '%d no'lu satır (%s' servis dosyasındaki ) çok uzun \n"
+
+#: fe-connect.c:2569 fe-connect.c:2596
+#, c-format
+msgid "ERROR: syntax error in service file '%s', line %d\n"
+msgstr "ERROR: '%s' servis dosyasında yazım hatası, satır no %d\n"
+
+#: fe-connect.c:2686
 #, c-format
 msgid "missing \"=\" after \"%s\" in connection info string\n"
 msgstr "bağlantı bilgi katarında \"%s\" bilgisinden sonra \"=\" işareti eksik\n"
 
-#: fe-connect.c:2640
+#: fe-connect.c:2735
 msgid "unterminated quoted string in connection info string\n"
 msgstr "bağlantı bilgi katarında sonlandırılmamış tırnaklı katar\n"
 
-#: fe-connect.c:2674
+#: fe-connect.c:2769
 #, c-format
 msgid "invalid connection option \"%s\"\n"
 msgstr "geçersiz bağlantı seçeneği \"%s\"\n"
 
-#: fe-connect.c:2896
+#: fe-connect.c:2991
 msgid "connection pointer is NULL\n"
 msgstr "bağlantı belirteci NULL'dur\n"
 
-#: fe-connect.c:3153
+#: fe-connect.c:3230
 #, c-format
 msgid ""
 "WARNING: Password file %s has world or group read access; permission should "
@@ -345,16 +361,66 @@ msgstr "loread fonksiyonunun OID'i belirlenemiyor\n"
 msgid "cannot determine OID of function lowrite\n"
 msgstr "lowrite fonksiyonunun OID'i belirlenemiyor\n"
 
+#: fe-misc.c:88
+#, c-format
+msgid "From backend> %c\n"
+msgstr "backend'den> %c\n"
+
+#: fe-misc.c:104
+#, c-format
+msgid "To backend> %c\n"
+msgstr "backend'e '> %c\n"
+
+#: fe-misc.c:140
+#, c-format
+msgid "From backend> \"%s\"\n"
+msgstr "backend'den > \"%s\"\n"
+
+#: fe-misc.c:157
+#, c-format
+msgid "To backend> '%s'\n"
+msgstr "backend'e> '%s'\n"
+
+#: fe-misc.c:178
+#, c-format
+msgid "From backend (%lu)> %.*s\n"
+msgstr "backend'den (%lu)> %.*s\n"
+
+#: fe-misc.c:194
+#, c-format
+msgid "To backend> %.*s\n"
+msgstr "backend'e> %.*s\n"
+
 #: fe-misc.c:228
 #, c-format
 msgid "integer of size %lu not supported by pqGetInt"
 msgstr "%lu büyüklüğündeki tamsayılar pqGetInt tarafından desteklenmez."
 
+#: fe-misc.c:234
+#, c-format
+msgid "From backend (#%lu)> %d\n"
+msgstr "backend'den (#%lu)> %d\n"
+
 #: fe-misc.c:264
 #, c-format
 msgid "integer of size %lu not supported by pqPutInt"
 msgstr "%lu büyüklüğündeki tamsayılar pqPutInt tarafından desteklenmez."
 
+#: fe-misc.c:270
+#, c-format
+msgid "To backend (%lu#)> %d\n"
+msgstr "backend'e (%lu#)> %d\n"
+
+#: fe-misc.c:458
+#, c-format
+msgid "To backend> Msg %c\n"
+msgstr "backend'e> Mesaj %c\n"
+
+#: fe-misc.c:496
+#, c-format
+msgid "To backend> Msg complete, length %u\n"
+msgstr "backend'e> mesaj tamam, uzunluğu %u\n"
+
 #: fe-misc.c:544 fe-misc.c:748
 msgid "connection not open\n"
 msgstr "bağlantı açık değil\n"
@@ -517,114 +583,114 @@ msgstr "%s:%s"
 msgid "PQgetline: not doing text COPY OUT\n"
 msgstr "PQgetline: COPY OUT metnini yapmıyor\n"
 
-#: fe-secure.c:264
+#: fe-secure.c:273
 #, c-format
 msgid "could not establish SSL connection: %s\n"
 msgstr "SSL bağlantısı sağlanamadı: %s\n"
 
-#: fe-secure.c:330 fe-secure.c:415 fe-secure.c:1038
+#: fe-secure.c:344 fe-secure.c:439 fe-secure.c:1046
 #, c-format
 msgid "SSL SYSCALL error: %s\n"
 msgstr "SSL SYSCALL hatası: %s\n"
 
-#: fe-secure.c:335 fe-secure.c:420 fe-secure.c:1042
+#: fe-secure.c:349 fe-secure.c:445 fe-secure.c:1050
 msgid "SSL SYSCALL error: EOF detected\n"
 msgstr "SSL SYSCALL hatası: EOF bulundu\n"
 
-#: fe-secure.c:347 fe-secure.c:431 fe-secure.c:1051
+#: fe-secure.c:361 fe-secure.c:456 fe-secure.c:1069
 #, c-format
 msgid "SSL error: %s\n"
 msgstr "SSL hatası: %s\n"
 
-#: fe-secure.c:357 fe-secure.c:441 fe-secure.c:1059
+#: fe-secure.c:371 fe-secure.c:466 fe-secure.c:1079
 #, c-format
 msgid "unrecognized SSL error code: %d\n"
 msgstr "tanımlanamayan SSL hata kodu: %d\n"
 
-#: fe-secure.c:504
+#: fe-secure.c:536
 #, c-format
 msgid "error querying socket: %s\n"
 msgstr "soketi sorgularken hata oluştu: %s\n"
 
-#: fe-secure.c:532
+#: fe-secure.c:564
 #, c-format
 msgid "could not get information about host \"%s\": %s\n"
 msgstr "\"%s\" sunucusu hakkında bilgi alınamadı: %s\n"
 
-#: fe-secure.c:551
+#: fe-secure.c:583
 msgid "unsupported protocol\n"
 msgstr "desteklenmeyen protokol\n"
 
-#: fe-secure.c:573
+#: fe-secure.c:605
 #, c-format
 msgid "server common name \"%s\" does not resolve to %ld.%ld.%ld.%ld\n"
 msgstr "Sunucu ortak adı olan \"%s\"  %ld.%ld.%ld.%ld adresine çözülemiyor\n"
 
-#: fe-secure.c:580
+#: fe-secure.c:612
 #, c-format
 msgid "server common name \"%s\" does not resolve to peer address\n"
 msgstr "Sunucu ortak adı olan \"%s\" eş (peer) adresine çözülemiyor\n"
 
-#: fe-secure.c:763
+#: fe-secure.c:784
 msgid "could not get user information\n"
 msgstr "kullanıcı bilgisi alınamadı\n"
 
-#: fe-secure.c:775
+#: fe-secure.c:793
 #, c-format
 msgid "could not open certificate file \"%s\": %s\n"
 msgstr "\"%s\" sertifikası açılamadı: %s\n"
 
-#: fe-secure.c:784
+#: fe-secure.c:802
 #, c-format
 msgid "could not read certificate file \"%s\": %s\n"
 msgstr "\"%s\" sertifikası okunamadı: %s\n"
 
-#: fe-secure.c:798
+#: fe-secure.c:815
 #, c-format
 msgid "certificate present, but not private key file \"%s\"\n"
 msgstr "Sertifika mevcut ancak özel anahtar mevcut değil \"%s\"\n"
 
-#: fe-secure.c:807
+#: fe-secure.c:824
 #, c-format
 msgid "private key file \"%s\" has wrong permissions\n"
 msgstr "\"%s\" özel anahtarı yanlış izinlere sahip\n"
 
-#: fe-secure.c:815
+#: fe-secure.c:832
 #, c-format
 msgid "could not open private key file \"%s\": %s\n"
 msgstr "\"%s\" özel anahtar dosyası açılamadı: %s\n"
 
-#: fe-secure.c:824
+#: fe-secure.c:841
 #, c-format
 msgid "private key file \"%s\" changed during execution\n"
 msgstr "\"%s\" özel anahtar dosyası çalışma anında açılamadı\n"
 
-#: fe-secure.c:833
+#: fe-secure.c:850
 #, c-format
 msgid "could not read private key file \"%s\": %s\n"
 msgstr "\"%s\" özel anahtar dosyası okunamadı: %s\n"
 
-#: fe-secure.c:848
+#: fe-secure.c:864
 #, c-format
 msgid "certificate does not match private key file \"%s\": %s\n"
 msgstr "Sertifika, \"%s\" özel anahtar dosyası ile uyuşmuyor: %s\n"
 
-#: fe-secure.c:932
+#: fe-secure.c:947
 #, c-format
 msgid "could not create SSL context: %s\n"
 msgstr "SSL içeriği yaratılamadı: %s\n"
 
-#: fe-secure.c:977
+#: fe-secure.c:986
 #, c-format
 msgid "could not read root certificate file \"%s\": %s\n"
 msgstr "\"%s\"kök sertifika dosyası okunamadı: %s\n"
 
-#: fe-secure.c:1079
+#: fe-secure.c:1099
 #, c-format
 msgid "certificate could not be validated: %s\n"
 msgstr "sertifika doğrulanamadı: %s\n"
 
-#: fe-secure.c:1093
+#: fe-secure.c:1113
 #, c-format
 msgid "certificate could not be obtained: %s\n"
 msgstr "sertifika elde edilemedi: %s\n"
diff --git a/src/interfaces/libpq/pthread-win32.c b/src/interfaces/libpq/pthread-win32.c
index fb7e26b..a1eec0c 100644
--- a/src/interfaces/libpq/pthread-win32.c
+++ b/src/interfaces/libpq/pthread-win32.c
@@ -12,7 +12,7 @@
 
 
 #include <windows.h>
-#include <pthread.h>
+#include "pthread.h"
 
 HANDLE
 pthread_self()
diff --git a/src/interfaces/libpq/win32.mak b/src/interfaces/libpq/win32.mak
index 25a30f3..2838f3c 100644
--- a/src/interfaces/libpq/win32.mak
+++ b/src/interfaces/libpq/win32.mak
@@ -41,7 +41,7 @@ CPP_OBJS=.\Release/
 !ENDIF
 
 
-ALL : config "$(OUTDIR)\$(OUTFILENAME).lib" "$(OUTDIR)\$(OUTFILENAME).dll" 
+ALL : config "$(OUTDIR)\$(OUTFILENAME).lib" "$(OUTDIR)\$(OUTFILENAME).dll"
 
 CLEAN :
 	-@erase "$(INTDIR)\getaddrinfo.obj"
@@ -65,16 +65,16 @@ CLEAN :
 	-@erase "$(INTDIR)\pqsignal.obj"
 	-@erase "$(OUTDIR)\libpqdll.obj"
 	-@erase "$(OUTDIR)\win32.obj"
+	-@erase "$(INTDIR)\wchar.obj"
+	-@erase "$(INTDIR)\encnames.obj"
+	-@erase "$(INTDIR)\pthread-win32.obj"
 	-@erase "$(OUTDIR)\$(OUTFILENAME).lib"
-	-@erase "$(OUTDIR)\$(OUTFILENAME).dll"
+	-@erase "$(OUTDIR)\$(OUTFILENAME)dll.lib"
 	-@erase "$(OUTDIR)\libpq.res"
+	-@erase "$(OUTDIR)\$(OUTFILENAME).dll"
 	-@erase "*.pch"
 	-@erase "$(OUTDIR)\libpq.pch"
 	-@erase "$(OUTDIR)\$(OUTFILENAME)dll.exp"
-	-@erase "$(OUTDIR)\$(OUTFILENAME)dll.lib"
-	-@erase "$(INTDIR)\wchar.obj"
-	-@erase "$(INTDIR)\encnames.obj"
-	-@erase "$(INTDIR)\pthread-win32.obj"
 	-@erase "$(INTDIR)\pg_config_paths.h"
 
 
@@ -138,7 +138,7 @@ LIB32_OBJS= \
 RSC_PROJ=/l 0x409 /fo"$(INTDIR)\libpq.res"
 
 LINK32=link.exe
-LINK32_FLAGS=kernel32.lib user32.lib advapi32.lib shell32.lib wsock32.lib $(SSL_LIBS)  \
+LINK32_FLAGS=kernel32.lib user32.lib advapi32.lib shfolder.lib wsock32.lib $(SSL_LIBS)  \
  /nologo /subsystem:windows /dll $(LOPT) /incremental:no\
  /pdb:"$(OUTDIR)\libpqdll.pdb" /machine:I386 /out:"$(OUTDIR)\$(OUTFILENAME).dll"\
  /implib:"$(OUTDIR)\$(OUTFILENAME)dll.lib"  /def:$(OUTFILENAME)dll.def
diff --git a/src/pl/plpython/feature.expected b/src/pl/plpython/feature.expected
index 351bee0..90d1614 100644
--- a/src/pl/plpython/feature.expected
+++ b/src/pl/plpython/feature.expected
@@ -137,3 +137,21 @@ SELECT join_sequences(sequences) FROM sequences
 ----------------
 (0 rows)
 
+SELECT newline_lf();
+ newline_lf 
+------------
+        123
+(1 row)
+
+SELECT newline_cr();
+ newline_cr 
+------------
+        123
+(1 row)
+
+SELECT newline_crlf();
+ newline_crlf 
+--------------
+          123
+(1 row)
+
diff --git a/src/pl/plpython/plpython_test.sql b/src/pl/plpython/plpython_test.sql
index c78b4aa..17d6b2e 100644
--- a/src/pl/plpython/plpython_test.sql
+++ b/src/pl/plpython/plpython_test.sql
@@ -61,3 +61,10 @@ SELECT join_sequences(sequences) FROM sequences
 -- error in trigger
 --
 
+--
+-- Check Universal Newline Support
+--
+
+SELECT newline_lf();
+SELECT newline_cr();
+SELECT newline_crlf();
diff --git a/src/pl/plpython/test.sh b/src/pl/plpython/test.sh
index 5cc677c..facf29e 100755
--- a/src/pl/plpython/test.sh
+++ b/src/pl/plpython/test.sh
@@ -4,15 +4,24 @@ DBNAME=pltest
 
 echo -n "*** Destroy $DBNAME."
 dropdb $DBNAME > test.log 2>&1
+# drop failure is ok...
 echo " Done. ***"
 
 echo -n "*** Create $DBNAME."
-createdb $DBNAME >> test.log 2>&1
-echo " Done. ***"
+if createdb $DBNAME >> test.log 2>&1 ; then
+  echo " Done. ***"
+else
+  echo " Failed!  See test.log. ***"
+  exit 1
+fi
 
 echo -n "*** Create plpython."
-createlang plpythonu $DBNAME >> test.log 2>&1
-echo " Done. ***"
+if createlang plpythonu $DBNAME >> test.log 2>&1 ; then
+  echo " Done. ***"
+else
+  echo " Failed!  See test.log. ***"
+  exit 1
+fi
 
 echo -n "*** Create tables"
 psql -q $DBNAME < plpython_schema.sql >> test.log 2>&1
diff --git a/src/port/copydir.c b/src/port/copydir.c
index 0f833e5..6040657 100644
--- a/src/port/copydir.c
+++ b/src/port/copydir.c
@@ -56,6 +56,7 @@ copydir(char *fromdir, char *todir)
 		return -1;
 	}
 
+	errno = 0;
 	while ((xlde = readdir(xldir)) != NULL)
 	{
 		snprintf(fromfl, MAXPGPATH, "%s/%s", fromdir, xlde->d_name);
@@ -68,6 +69,24 @@ copydir(char *fromdir, char *todir)
 			FreeDir(xldir);
 			return -1;
 		}
+		errno = 0;
+	}
+#ifdef WIN32
+
+	/*
+	 * This fix is in mingw cvs (runtime/mingwex/dirent.c rev 1.4), but
+	 * not in released version
+	 */
+	if (GetLastError() == ERROR_NO_MORE_FILES)
+		errno = 0;
+#endif
+	if (errno)
+	{
+		ereport(WARNING,
+				(errcode_for_file_access(),
+				 errmsg("could not read directory \"%s\": %m", fromdir)));
+		FreeDir(xldir);
+		return -1;
 	}
 
 	FreeDir(xldir);
diff --git a/src/port/crypt.c b/src/port/crypt.c
index fa54cb9..7d0f14a 100644
--- a/src/port/crypt.c
+++ b/src/port/crypt.c
@@ -1,4 +1,4 @@
-/*	$NetBSD$	*/
+/*	$NetBSD: crypt.c,v 1.18 2001/03/01 14:37:35 wiz Exp $	*/
 
 /*
  * Copyright (c) 1989, 1993
@@ -37,7 +37,7 @@
 static char sccsid[] = "@(#)crypt.c	8.1.1.1 (Berkeley) 8/18/93";
 
 #else
-__RCSID("$NetBSD$");
+__RCSID("$NetBSD: crypt.c,v 1.18 2001/03/01 14:37:35 wiz Exp $");
 #endif
 #endif   /* not lint */
 
diff --git a/src/port/noblock.c b/src/port/noblock.c
index aa88727..f51079b 100644
--- a/src/port/noblock.c
+++ b/src/port/noblock.c
@@ -18,7 +18,7 @@
 #include <fcntl.h>
 
 bool
-set_noblock(int sock)
+pg_set_noblock(int sock)
 {
 #if !defined(WIN32) && !defined(__BEOS__)
 	return (fcntl(sock, F_SETFL, O_NONBLOCK) != -1);
@@ -34,3 +34,26 @@ set_noblock(int sock)
 #endif
 #endif
 }
+
+
+bool
+pg_set_block(int sock)
+{
+#if !defined(WIN32) && !defined(__BEOS__)
+	int flags;
+	flags = fcntl(sock, F_GETFL);
+	if (flags < 0 || fcntl(sock, F_SETFL, (long) (flags & ~O_NONBLOCK)))
+		return false;
+	return true;
+#else
+	long		ioctlsocket_ret = 0;
+
+	/* Returns non-0 on failure, while fcntl() returns -1 on failure */
+#ifdef WIN32
+	return (ioctlsocket(sock, FIONBIO, &ioctlsocket_ret) == 0);
+#endif
+#ifdef __BEOS__
+	return (ioctl(sock, FIONBIO, &ioctlsocket_ret) == 0);
+#endif
+#endif
+}
diff --git a/src/port/open.c b/src/port/open.c
index 68894dd..6fd9ab1 100644
--- a/src/port/open.c
+++ b/src/port/open.c
@@ -13,6 +13,7 @@
 
 #ifdef WIN32
 
+#include <postgres.h>
 #include <windows.h>
 #include <fcntl.h>
 #include <errno.h>
@@ -62,7 +63,7 @@ win32_open(const char *fileName, int fileFlags,...)
 	/* Check that we can handle the request */
 	assert((fileFlags & ((O_RDONLY | O_WRONLY | O_RDWR) | O_APPEND |
 						 (O_RANDOM | O_SEQUENTIAL | O_TEMPORARY) |
-						 _O_SHORT_LIVED |
+						 _O_SHORT_LIVED | O_DSYNC |
 	  (O_CREAT | O_TRUNC | O_EXCL) | (O_TEXT | O_BINARY))) == fileFlags);
 
 	sa.nLength = sizeof(sa);
@@ -81,7 +82,8 @@ win32_open(const char *fileName, int fileFlags,...)
 				 ((fileFlags & O_RANDOM) ? FILE_FLAG_RANDOM_ACCESS : 0) |
 		   ((fileFlags & O_SEQUENTIAL) ? FILE_FLAG_SEQUENTIAL_SCAN : 0) |
 		  ((fileFlags & _O_SHORT_LIVED) ? FILE_ATTRIBUTE_TEMPORARY : 0) |
-			 ((fileFlags & O_TEMPORARY) ? FILE_FLAG_DELETE_ON_CLOSE : 0),
+			 ((fileFlags & O_TEMPORARY) ? FILE_FLAG_DELETE_ON_CLOSE : 0)|
+					((fileFlags & O_DSYNC) ? FILE_FLAG_WRITE_THROUGH : 0),
 						NULL)) == INVALID_HANDLE_VALUE)
 	{
 		switch (GetLastError())
diff --git a/src/port/qsort.c b/src/port/qsort.c
index 3b6b2ca..9fc1458 100644
--- a/src/port/qsort.c
+++ b/src/port/qsort.c
@@ -6,7 +6,7 @@
  *	$PostgreSQL$
  */
 
-/*	$NetBSD$	*/
+/*	$NetBSD: qsort.c,v 1.13 2003/08/07 16:43:42 agc Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
diff --git a/src/test/examples/Makefile b/src/test/examples/Makefile
index 0326d42..b55405d 100644
--- a/src/test/examples/Makefile
+++ b/src/test/examples/Makefile
@@ -7,7 +7,7 @@ top_builddir = ../../..
 include $(top_builddir)/src/Makefile.global
 
 override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS)
-override LDLIBS := $(libpq) -lpgport $(LDLIBS)
+override LDLIBS := $(libpq_pgport) $(LDLIBS)
 
 
 PROGS = testlibpq testlibpq2 testlibpq3 testlibpq4 testlo
diff --git a/src/test/regress/expected/case.out b/src/test/regress/expected/case.out
index df3fb09..9ec32b8 100644
--- a/src/test/regress/expected/case.out
+++ b/src/test/regress/expected/case.out
@@ -72,6 +72,23 @@ SELECT '6' AS "One",
  6   |                     6
 (1 row)
 
+-- Constant-expression folding shouldn't evaluate unreachable subexpressions
+SELECT CASE WHEN 1=0 THEN 1/0 WHEN 1=1 THEN 1 ELSE 2/0 END;
+ case 
+------
+    1
+(1 row)
+
+SELECT CASE 1 WHEN 0 THEN 1/0 WHEN 1 THEN 1 ELSE 2/0 END;
+ case 
+------
+    1
+(1 row)
+
+-- However we do not currently suppress folding of potentially
+-- reachable subexpressions
+SELECT CASE WHEN i > 100 THEN 1/0 ELSE 0 END FROM case_tbl;
+ERROR:  division by zero
 -- Test for cases involving untyped literals in test expression
 SELECT CASE 'a' WHEN 'a' THEN 1 ELSE 2 END;
  case 
diff --git a/src/test/regress/expected/copy2.out b/src/test/regress/expected/copy2.out
index f3da7e8..40dd7f2 100644
--- a/src/test/regress/expected/copy2.out
+++ b/src/test/regress/expected/copy2.out
@@ -4,7 +4,7 @@ CREATE TABLE x (
 	c text not null default 'stuff',
 	d text,
 	e text
-);
+) WITH OIDS;
 NOTICE:  CREATE TABLE will create implicit sequence "x_a_seq" for serial column "x.a"
 CREATE FUNCTION fn_x_before () RETURNS TRIGGER AS '
   BEGIN
@@ -191,6 +191,9 @@ COPY y TO stdout WITH CSV FORCE QUOTE col2 ESCAPE '\\';
 "Jackson, Sam","\\h"
 "It is \"perfect\".","	"
 "",
+--test that we read consecutive LFs properly
+CREATE TEMP TABLE testnl (a int, b text, c int);
+COPY testnl FROM stdin CSV;
 DROP TABLE x, y;
 DROP FUNCTION fn_x_before();
 DROP FUNCTION fn_x_after();
diff --git a/src/test/regress/expected/create_table.out b/src/test/regress/expected/create_table.out
index 0da19d7..448be93 100644
--- a/src/test/regress/expected/create_table.out
+++ b/src/test/regress/expected/create_table.out
@@ -47,7 +47,7 @@ CREATE TABLE tenk1 (
 	stringu1	name,
 	stringu2	name,
 	string4		name
-);
+) WITH OIDS;
 CREATE TABLE tenk2 (
 	unique1 	int4,
 	unique2 	int4,
@@ -74,7 +74,7 @@ CREATE TABLE person (
 CREATE TABLE emp (
 	salary 		int4,
 	manager 	name
-) INHERITS (person);
+) INHERITS (person) WITH OIDS;
 CREATE TABLE student (
 	gpa 		float8
 ) INHERITS (person);
diff --git a/src/test/regress/expected/errors.out b/src/test/regress/expected/errors.out
index 8eca045..3e3a773 100644
--- a/src/test/regress/expected/errors.out
+++ b/src/test/regress/expected/errors.out
@@ -12,9 +12,6 @@ select 1;
 -- UNSUPPORTED STUFF
  
 -- doesn't work 
--- attachas nonesuch
---
--- doesn't work 
 -- notify pg_class
 --
 --
diff --git a/src/test/regress/expected/portals.out b/src/test/regress/expected/portals.out
index a46a14c..3f0e0cd 100644
--- a/src/test/regress/expected/portals.out
+++ b/src/test/regress/expected/portals.out
@@ -773,3 +773,38 @@ FETCH ALL FROM c;
 (15 rows)
 
 ROLLBACK;
+--
+-- Test behavior of both volatile and stable functions inside a cursor;
+-- in particular we want to see what happens during commit of a holdable
+-- cursor
+--
+create temp table tt1(f1 int);
+create function count_tt1_v() returns int8 as
+'select count(*) from tt1' language sql volatile;
+create function count_tt1_s() returns int8 as
+'select count(*) from tt1' language sql stable;
+begin;
+insert into tt1 values(1);
+declare c1 cursor for select count_tt1_v(), count_tt1_s();
+insert into tt1 values(2);
+fetch all from c1;
+ count_tt1_v | count_tt1_s 
+-------------+-------------
+           2 |           1
+(1 row)
+
+rollback;
+begin;
+insert into tt1 values(1);
+declare c2 cursor with hold for select count_tt1_v(), count_tt1_s();
+insert into tt1 values(2);
+commit;
+delete from tt1;
+fetch all from c2;
+ count_tt1_v | count_tt1_s 
+-------------+-------------
+           2 |           1
+(1 row)
+
+drop function count_tt1_v();
+drop function count_tt1_s();
diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out
index cf3e237..0d46494 100644
--- a/src/test/regress/expected/rules.out
+++ b/src/test/regress/expected/rules.out
@@ -1121,11 +1121,11 @@ SELECT * FROM shoelace_log ORDER BY sl_name;
 	SELECT * FROM shoelace_obsolete WHERE sl_avail = 0;
 insert into shoelace values ('sl9', 0, 'pink', 35.0, 'inch', 0.0);
 insert into shoelace values ('sl10', 1000, 'magenta', 40.0, 'inch', 0.0);
-SELECT * FROM shoelace_obsolete;
+SELECT * FROM shoelace_obsolete ORDER BY sl_len_cm;
   sl_name   | sl_avail |  sl_color  | sl_len | sl_unit  | sl_len_cm 
 ------------+----------+------------+--------+----------+-----------
- sl10       |     1000 | magenta    |     40 | inch     |     101.6
  sl9        |        0 | pink       |     35 | inch     |      88.9
+ sl10       |     1000 | magenta    |     40 | inch     |     101.6
 (2 rows)
 
 SELECT * FROM shoelace_candelete;
diff --git a/src/test/regress/sql/case.sql b/src/test/regress/sql/case.sql
index 85e17e0..2ab22fb 100644
--- a/src/test/regress/sql/case.sql
+++ b/src/test/regress/sql/case.sql
@@ -58,6 +58,14 @@ SELECT '6' AS "One",
     ELSE 7
   END AS "Two WHEN with default";
 
+-- Constant-expression folding shouldn't evaluate unreachable subexpressions
+SELECT CASE WHEN 1=0 THEN 1/0 WHEN 1=1 THEN 1 ELSE 2/0 END;
+SELECT CASE 1 WHEN 0 THEN 1/0 WHEN 1 THEN 1 ELSE 2/0 END;
+
+-- However we do not currently suppress folding of potentially
+-- reachable subexpressions
+SELECT CASE WHEN i > 100 THEN 1/0 ELSE 0 END FROM case_tbl;
+
 -- Test for cases involving untyped literals in test expression
 SELECT CASE 'a' WHEN 'a' THEN 1 ELSE 2 END;
 
diff --git a/src/test/regress/sql/copy2.sql b/src/test/regress/sql/copy2.sql
index 70c8ea6..eb1a69c 100644
--- a/src/test/regress/sql/copy2.sql
+++ b/src/test/regress/sql/copy2.sql
@@ -4,7 +4,7 @@ CREATE TABLE x (
 	c text not null default 'stuff',
 	d text,
 	e text
-);
+) WITH OIDS;
 
 CREATE FUNCTION fn_x_before () RETURNS TRIGGER AS '
   BEGIN
@@ -129,6 +129,17 @@ COPY y TO stdout WITH CSV;
 COPY y TO stdout WITH CSV QUOTE '''' DELIMITER '|';
 COPY y TO stdout WITH CSV FORCE QUOTE col2 ESCAPE '\\';
 
+--test that we read consecutive LFs properly
+
+CREATE TEMP TABLE testnl (a int, b text, c int);
+
+COPY testnl FROM stdin CSV;
+1,"a field with two LFs
+
+inside",2
+\.
+
+
 DROP TABLE x, y;
 DROP FUNCTION fn_x_before();
 DROP FUNCTION fn_x_after();
diff --git a/src/test/regress/sql/create_table.sql b/src/test/regress/sql/create_table.sql
index b6a0a8f..b5a2889 100644
--- a/src/test/regress/sql/create_table.sql
+++ b/src/test/regress/sql/create_table.sql
@@ -51,7 +51,7 @@ CREATE TABLE tenk1 (
 	stringu1	name,
 	stringu2	name,
 	string4		name
-);
+) WITH OIDS;
 
 CREATE TABLE tenk2 (
 	unique1 	int4,
@@ -83,7 +83,7 @@ CREATE TABLE person (
 CREATE TABLE emp (
 	salary 		int4,
 	manager 	name
-) INHERITS (person);
+) INHERITS (person) WITH OIDS;
 
 
 CREATE TABLE student (
diff --git a/src/test/regress/sql/errors.sql b/src/test/regress/sql/errors.sql
index 630e490..5ccd13b 100644
--- a/src/test/regress/sql/errors.sql
+++ b/src/test/regress/sql/errors.sql
@@ -10,9 +10,6 @@ select 1;
 -- UNSUPPORTED STUFF
  
 -- doesn't work 
--- attachas nonesuch
---
--- doesn't work 
 -- notify pg_class
 --
 
diff --git a/src/test/regress/sql/portals.sql b/src/test/regress/sql/portals.sql
index c7e29c3..da4e3b0 100644
--- a/src/test/regress/sql/portals.sql
+++ b/src/test/regress/sql/portals.sql
@@ -235,3 +235,46 @@ SELECT declares_cursor('AB%');
 FETCH ALL FROM c;
 
 ROLLBACK;
+
+--
+-- Test behavior of both volatile and stable functions inside a cursor;
+-- in particular we want to see what happens during commit of a holdable
+-- cursor
+--
+
+create temp table tt1(f1 int);
+
+create function count_tt1_v() returns int8 as
+'select count(*) from tt1' language sql volatile;
+
+create function count_tt1_s() returns int8 as
+'select count(*) from tt1' language sql stable;
+
+begin;
+
+insert into tt1 values(1);
+
+declare c1 cursor for select count_tt1_v(), count_tt1_s();
+
+insert into tt1 values(2);
+
+fetch all from c1;
+
+rollback;
+
+begin;
+
+insert into tt1 values(1);
+
+declare c2 cursor with hold for select count_tt1_v(), count_tt1_s();
+
+insert into tt1 values(2);
+
+commit;
+
+delete from tt1;
+
+fetch all from c2;
+
+drop function count_tt1_v();
+drop function count_tt1_s();
diff --git a/src/test/regress/sql/rules.sql b/src/test/regress/sql/rules.sql
index 4651090..cd0ae43 100644
--- a/src/test/regress/sql/rules.sql
+++ b/src/test/regress/sql/rules.sql
@@ -679,7 +679,7 @@ SELECT * FROM shoelace_log ORDER BY sl_name;
 insert into shoelace values ('sl9', 0, 'pink', 35.0, 'inch', 0.0);
 insert into shoelace values ('sl10', 1000, 'magenta', 40.0, 'inch', 0.0);
 
-SELECT * FROM shoelace_obsolete;
+SELECT * FROM shoelace_obsolete ORDER BY sl_len_cm;
 SELECT * FROM shoelace_candelete;
 
 DELETE FROM shoelace WHERE EXISTS
