[PATCHES] gendef fixes

2007-01-09 Thread Magnus Hagander
Attached patch fixes two problems:

1) gendef works from inside visual studio - use a tempfile instead of
redirection, because for some reason you can't redirect dumpbin from
inside (patch from Joachim Wieland)
2) gendef must process only *.obj, or you get weird errors in some build
scenarios when it tries to process a logfile


//Magnus

Index: src/tools/msvc/gendef.pl
===
RCS file: /projects/cvsroot/pgsql/src/tools/msvc/gendef.pl,v
retrieving revision 1.2
diff -c -r1.2 gendef.pl
*** src/tools/msvc/gendef.pl22 Oct 2006 17:17:08 -  1.2
--- src/tools/msvc/gendef.pl9 Jan 2007 10:12:59 -
***
*** 10,18 

  print Generating $defname.DEF from directory $ARGV[0]\n;

! while ($ARGV[0]/*) {
  print .;
!   open(F,dumpbin /symbols $_|) || die Could not open $_\n;
while (F) {
s/\(\)//g;
next unless /^\d/;
--- 10,19 

  print Generating $defname.DEF from directory $ARGV[0]\n;

! while ($ARGV[0]/*.obj) {
  print .;
!   system(dumpbin /symbols /out:symbols.out $_ NUL)  die Could not 
call dumpbin;
!   open(F, symbols.out) || die Could not open symbols.out for $_\n;
while (F) {
s/\(\)//g;
next unless /^\d/;
***
*** 31,36 
--- 32,38 
push @def, $pieces[6];
}
close(F);
+   unlink(symbols.out);
  }
  print \n;


---(end of broadcast)---
TIP 5: don't forget to increase your free space map settings


Re: [PATCHES] [HACKERS] [Fwd: Index Advisor]

2007-01-09 Thread Gurjeet Singh

On 1/9/07, Gurjeet Singh [EMAIL PROTECTED] wrote:



I have another idea for making the hooks a bit more cleaner; I will try
that and run it through you guys later today.



Please find attached the latest version of the patch. It applies cleanly on
REL8_2_STABLE.

The following restrictions are applied before generating an index candidate
(this is not mentioned in the README):

.) It should be a base relation; We do not generate advisory for a view or
Set Returning Function or something else.
.) It should not be a system table; like pg_class etc.
.) It should not be a temporary table. (May be we can allow these; opinions
please!!)
.) We do not recommend indexes on system columns; like oid, ctid etc.
.) The relation should have at least two pages.
.) The relation should have at least two tuples.

   The last two restrictions put the onus on the user to keep the table
ANALYZEd or VACUUMed.

   I have moved the calls to index_adviser() from two other places to the
end of planner(). IMO, that is the best place to place a call to the
Adviser; instead of duplicating code in every caller of planner().
index_adviser() makes sure that it doesn't get called recursively.

   This change however costs us the loss of ability to append suggested
plan to the existing plan, if being called by the EXPLAIN command. Instead,
it now uses the newly written function explain_getPlanString() in
explain.cto get the string representation of the plan, and then emits
it as elog(
LOG,...).

   The only kludge left now is the code enclosed in '#if GLOBAL_CAND_LIST'
in plancat.c. We need to decide whether we need the 'if' part or the 'else'
part! I already see a strong objection to the 'else' option, since it is
very close to the core of the optimizer! Opinions needed.

   After adding the CREATE TABLE advise_index(...) script to
src/test/regress/sql/create_table.sql and enabling the GUC in the conf
file,  'make installcheck' runs fine, with a few acceptable diffs. Moreover,
post the 'make' run, we can see there are a few advises for the tables
involved in the test run. Four of them are ob serial columns of
hash-index-testing tables, so they don't make much point; but the rest three
of them are on big tables, and one of them is a multi-column-index
suggestion.

Now that there's just one call to the Index Adviser (from planner()) we can
now move forward in making it a plugin.

Best regards,

--
[EMAIL PROTECTED]
[EMAIL PROTECTED] gmail | hotmail | yahoo }.com


pg_index_adviser-REL8_2_STABLE-v23.patch.gz
Description: GNU Zip compressed data

---(end of broadcast)---
TIP 2: Don't 'kill -9' the postmaster


Re: [PATCHES] COPY with no WAL, in certain circumstances

2007-01-09 Thread Bruce Momjian

Patch withdrawn by author.

---

Simon Riggs wrote:
 http://archives.postgresql.org/pgsql-hackers/2006-10/msg01172.php
 
 As discussed on -hackers, its possible to avoid writing any WAL at all
 for COPY in these circumstances:
 
 BEGIN;
   CREATE TABLE foo..
   COPY foo...
 COMMIT;
 
 BEGIN;
   TRUNCATE foo..
   COPY foo...
 COMMIT;
 
 The enclosed patch implements this, as discussed. There is no user
 interface to enable/disable, just as with CTAS and CREATE INDEX; no
 docs, just code comments.
 
 This plays nicely with the --single-transaction option in psql to allow
 fast restores/upgrades.
 
 YMMV but disk bound COPY will benefit greatly from this patch, some
 tests showing 100% gain. COPY is still *very* CPU intensive, so some
 tests have shown negligible benefit, fyi, but that isn't the typical
 case.
 
 Applies cleanly to CVS HEAD, passes make check. 
 
 -- 
   Simon Riggs 
   EnterpriseDB   http://www.enterprisedb.com
 

[ Attachment, skipping... ]

 
 ---(end of broadcast)---
 TIP 5: don't forget to increase your free space map settings

-- 
  Bruce Momjian   [EMAIL PROTECTED]
  EnterpriseDBhttp://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

---(end of broadcast)---
TIP 5: don't forget to increase your free space map settings


[PATCHES] vcbuild verbosity

2007-01-09 Thread Magnus Hagander
This patch enables verbose output when building all projects. This is
the same output level that was used when building a single project
before, and really needed to get reasonable information about what
happens (non-verbose just says starting build of foo and done
building foo, more or less).

//Magnus
Index: src/tools/msvc/build.bat
===
RCS file: c:/prog/cvsrepo/pgsql/pgsql/src/tools/msvc/build.bat,v
retrieving revision 1.2
diff -c -r1.2 build.bat
*** src/tools/msvc/build.bat15 Sep 2006 21:42:02 -  1.2
--- src/tools/msvc/build.bat29 Dec 2006 21:25:18 -
***
*** 12,18 
  if not %CONFIG% ==  shift
  if %CONFIG% ==  set CONFIG=Debug
  
! if %1 ==  msbuild pgsql.sln /p:Configuration=%CONFIG%
  if not %1 ==  vcbuild %1.vcproj %CONFIG%
  
  cd %STARTDIR%
--- 12,18 
  if not %CONFIG% ==  shift
  if %CONFIG% ==  set CONFIG=Debug
  
! if %1 ==  msbuild pgsql.sln /verbosity:detailed /p:Configuration=%CONFIG%
  if not %1 ==  vcbuild %1.vcproj %CONFIG%
  
  cd %STARTDIR%

---(end of broadcast)---
TIP 9: In versions below 8.0, the planner will ignore your desire to
   choose an index scan if your joining column's datatypes do not
   match


[PATCHES] COPY with no WAL, v2

2007-01-09 Thread Simon Riggs
VERSION 2, with all changed made as requested to date.

As discussed on -hackers, its possible to avoid writing any WAL at all
for COPY in these circumstances:

http://archives.postgresql.org/pgsql-hackers/2006-10/msg01172.php

and again recently.

BEGIN;
  CREATE TABLE foo..
  COPY foo...
COMMIT;

BEGIN;
  TRUNCATE foo..
  COPY foo...
COMMIT;

The enclosed patch implements this, as discussed. There is no user
interface to enable/disable, just as with CTAS and CREATE INDEX; no
docs, just code comments.

This plays nicely with the --single-transaction option in psql to allow
fast restores/upgrades.

YMMV but disk bound COPY will benefit greatly from this patch, some
tests showing 100% gain. COPY is still *very* CPU intensive, so some
tests have shown negligible benefit, fyi, but that isn't the typical
case.

While testing this, I realised something: small COPY commands get no
benefit at all, but larger ones do. When we do a small normal COPY the
data stays in cache, but the WAL is written to disk and fsynced. When we
do a small fast COPY, no WAL is written, but the data is written to disk
and fsynced. With COPY, WAL and data are roughly same size, hence no I/O
benefit. With larger COPY statements, benefit is very substantial.

Applies cleanly to CVS HEAD, passes make check.

I enclose a test case that shows whether the test has succeeded by
reading the WAL Insert pointer before/after each COPY. This has been
written in such a way that we could, if we wanted to, include a new
regression test for this. There is a function that returns an immutable
value if the test passes, rather than simply showing the WAL insert
pointer which would obviously vary between tests. The tests enclosed
here *also* include the WAL insert pointer so you can manually/visibly
see that the enclosed patch writes no WAL at appropriate times.

psql -f copy_nowal_prep.sql postgres
psql -f copy_nowal_test.sql postgres

Do we want an additional test case along these lines?

Agreed doc changes for Performance Tips forthcoming.

-- 
  Simon Riggs 
  EnterpriseDB   http://www.enterprisedb.com

Index: src/backend/access/heap/heapam.c
===
RCS file: /projects/cvsroot/pgsql/src/backend/access/heap/heapam.c,v
retrieving revision 1.223
diff -c -r1.223 heapam.c
*** src/backend/access/heap/heapam.c	5 Jan 2007 22:19:22 -	1.223
--- src/backend/access/heap/heapam.c	9 Jan 2007 19:41:43 -
***
*** 28,33 
--- 28,34 
   *		heap_update		- replace a tuple in a relation with another tuple
   *		heap_markpos	- mark scan position
   *		heap_restrpos	- restore position to marked location
+  *		heap_sync		- sync heap, for when no WAL has been written
   *
   * NOTES
   *	  This file contains the heap_ routines which implement
***
*** 50,55 
--- 51,57 
  #include miscadmin.h
  #include pgstat.h
  #include storage/procarray.h
+ #include storage/smgr.h
  #include utils/inval.h
  #include utils/lsyscache.h
  #include utils/relcache.h
***
*** 1358,1364 
   * that all new tuples go into new pages not containing any tuples from other
   * transactions, that the relation gets fsync'd before commit, and that the
   * transaction emits at least one WAL record to ensure RecordTransactionCommit
!  * will decide to WAL-log the commit.
   *
   * use_fsm is passed directly to RelationGetBufferForTuple, which see for
   * more info.
--- 1360,1366 
   * that all new tuples go into new pages not containing any tuples from other
   * transactions, that the relation gets fsync'd before commit, and that the
   * transaction emits at least one WAL record to ensure RecordTransactionCommit
!  * will decide to WAL-log the commit. (see heap_sync() comments also)
   *
   * use_fsm is passed directly to RelationGetBufferForTuple, which see for
   * more info.
***
*** 1418,1424 
  	 */
  	if (HeapTupleHasExternal(tup) ||
  		(MAXALIGN(tup-t_len)  TOAST_TUPLE_THRESHOLD))
! 		heaptup = toast_insert_or_update(relation, tup, NULL);
  	else
  		heaptup = tup;
  
--- 1420,1426 
  	 */
  	if (HeapTupleHasExternal(tup) ||
  		(MAXALIGN(tup-t_len)  TOAST_TUPLE_THRESHOLD))
! 		heaptup = toast_insert_or_update(relation, tup, NULL, use_wal);
  	else
  		heaptup = tup;
  
***
*** 1536,1541 
--- 1538,1555 
  }
  
  /*
+  *	fast_heap_insert - insert a tuple with options to improve speed
+  *
+  * Currently, this routine allows specifying additional options for speed
+  * in certain cases, such as WAL-avoiding COPY command
+  */
+ Oid
+ fast_heap_insert(Relation relation, HeapTuple tup, bool use_wal)
+ {
+ 	return heap_insert(relation, tup, GetCurrentCommandId(), use_wal, use_wal);
+ }
+ 
+ /*
   *	heap_delete - delete a tuple
   *
   * NB: do not call this directly unless you are prepared to deal with
***
*** 2086,2096 
  		 *
  		 * Note: below this point, heaptup is the data we actually intend 

Re: [HACKERS] [PATCHES] Patch to log usage of temporary files

2007-01-09 Thread Bill Moran
In response to Bruce Momjian [EMAIL PROTECTED]:
 
 I have applied a modified version of your patch.  I renamed the
 parameter to 'log_temp_files', for consistency, added documentation, and
 improved the wording, particularly mentioning that the logging happens
 at file deletion time.

Thanks.

-- 
Bill Moran
Collaborative Fusion Inc.

---(end of broadcast)---
TIP 9: In versions below 8.0, the planner will ignore your desire to
   choose an index scan if your joining column's datatypes do not
   match


Re: [PATCHES] Last infomask bit

2007-01-09 Thread Bruce Momjian

Patch applied.  Thanks.

I added a comment about the unused bits in the header file.

---



Heikki Linnakangas wrote:
 Hi,
 
 We're running out of infomask bits in the tuple header. I bumped into 
 this as I tried to apply both the phantom command ids patch, and the HOT 
 patch simultaneously. They both require one infomask bit, so they 
 conflicted.
 
 This has been discussed before; I think the best approach is to use the 
 extra bits available in t_natts field. Here's a patch that doesn't do 
 anything interesting in itself, but it renames the t_natts field to 
 t_infomask2, with 11 bits reserved for the number of attributes and the 
 other 5 bits available for future use. All references to the old t_natts 
 field are replaced with a HeapTupleHeaderGetNatts accessor macro.
 
 I believe it would actually be even better to combine the t_natts and 
 t_infomask fields to a single 32-bit infomask field. I refrained from 
 doing that for now because it would've required shifting all the 
 existing infomask flags.
 
 Naturally, there's no point applying this before we actually need more 
 infobits, but it's good to be prepared.
 
 -- 
Heikki Linnakangas
EnterpriseDB   http://www.enterprisedb.com

[ text/x-patch is unsupported, treating like TEXT/PLAIN ]

 Index: src/backend/access/common/heaptuple.c
 ===
 RCS file: 
 /home/hlinnaka/pgcvsrepository/pgsql/src/backend/access/common/heaptuple.c,v
 retrieving revision 1.112
 diff -c -r1.112 heaptuple.c
 *** src/backend/access/common/heaptuple.c 23 Nov 2006 05:27:18 -  
 1.112
 --- src/backend/access/common/heaptuple.c 5 Jan 2007 13:11:10 -
 ***
 *** 295,301 
   bool
   heap_attisnull(HeapTuple tup, int attnum)
   {
 ! if (attnum  (int) tup-t_data-t_natts)
   return true;
   
   if (attnum  0)
 --- 295,301 
   bool
   heap_attisnull(HeapTuple tup, int attnum)
   {
 ! if (attnum  (int) HeapTupleHeaderGetNatts(tup-t_data))
   return true;
   
   if (attnum  0)
 ***
 *** 474,479 
 --- 474,480 
   {
   int j = 1;
   longoff;
 + int natts = HeapTupleHeaderGetNatts(tup);
   
   /*
* need to set cache for some atts
 ***
 *** 488,494 
   
   for (; j = attnum ||
   /* Can we compute more?  We will probably need them */
 !  (j  tup-t_natts 
 att[j]-attcacheoff == -1 
 (HeapTupleNoNulls(tuple) || !att_isnull(j, bp)) 
 (HeapTupleAllFixed(tuple) || att[j]-attlen  0)); 
 j++)
 --- 489,495 
   
   for (; j = attnum ||
   /* Can we compute more?  We will probably need them */
 !  (j  natts 
 att[j]-attcacheoff == -1 
 (HeapTupleNoNulls(tuple) || !att_isnull(j, bp)) 
 (HeapTupleAllFixed(tuple) || att[j]-attlen  0)); 
 j++)
 ***
 *** 739,745 
   HeapTupleHeaderSetTypeId(td, tupleDescriptor-tdtypeid);
   HeapTupleHeaderSetTypMod(td, tupleDescriptor-tdtypmod);
   
 ! td-t_natts = numberOfAttributes;
   td-t_hoff = hoff;
   
   if (tupleDescriptor-tdhasoid)  /* else leave infomask = 0 */
 --- 740,746 
   HeapTupleHeaderSetTypeId(td, tupleDescriptor-tdtypeid);
   HeapTupleHeaderSetTypMod(td, tupleDescriptor-tdtypmod);
   
 ! HeapTupleHeaderSetNatts(td, numberOfAttributes);
   td-t_hoff = hoff;
   
   if (tupleDescriptor-tdhasoid)  /* else leave infomask = 0 */
 ***
 *** 846,852 
   HeapTupleHeaderSetTypeId(td, tupleDescriptor-tdtypeid);
   HeapTupleHeaderSetTypMod(td, tupleDescriptor-tdtypmod);
   
 ! td-t_natts = numberOfAttributes;
   td-t_hoff = hoff;
   
   if (tupleDescriptor-tdhasoid)  /* else leave infomask = 0 */
 --- 847,853 
   HeapTupleHeaderSetTypeId(td, tupleDescriptor-tdtypeid);
   HeapTupleHeaderSetTypMod(td, tupleDescriptor-tdtypmod);
   
 ! HeapTupleHeaderSetNatts(td, numberOfAttributes);
   td-t_hoff = hoff;
   
   if (tupleDescriptor-tdhasoid)  /* else leave infomask = 0 */
 ***
 *** 1035,1041 
   bits8  *bp = tup-t_bits;   /* ptr to null bitmap in tuple 
 */
   boolslow = false;   /* can we use/set attcacheoff? */
   
 ! natts = tup-t_natts;
   
   /*
* In inheritance situations, it is possible that the given tuple 
 actually
 --- 1036,1042 
   bits8  *bp = tup-t_bits;   /* ptr to null bitmap in tuple 
 */
   boolslow = false;   /* can we use/set attcacheoff? */
   
 ! natts = HeapTupleHeaderGetNatts(tup);
   

Re: [PATCHES] gendef fixes

2007-01-09 Thread Bruce Momjian

Your patch has been added to the PostgreSQL unapplied patches list at:

http://momjian.postgresql.org/cgi-bin/pgpatches

It will be applied as soon as one of the PostgreSQL committers reviews
and approves it.

---
Magnus Hagander wrote:
 Attached patch fixes two problems:
 
 1) gendef works from inside visual studio - use a tempfile instead of
 redirection, because for some reason you can't redirect dumpbin from
 inside (patch from Joachim Wieland)
 2) gendef must process only *.obj, or you get weird errors in some build
 scenarios when it tries to process a logfile
 
 
 //Magnus
 

[ Attachment, skipping... ]

 
 ---(end of broadcast)---
 TIP 5: don't forget to increase your free space map settings

-- 
  Bruce Momjian   [EMAIL PROTECTED]
  EnterpriseDBhttp://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

---(end of broadcast)---
TIP 9: In versions below 8.0, the planner will ignore your desire to
   choose an index scan if your joining column's datatypes do not
   match


Re: [PATCHES] pg_regress updates for vc++ bulid

2007-01-09 Thread Bruce Momjian

Would you like this applied?

---

Magnus Hagander wrote:
 Magnus Hagander wrote:
  Hello!
  
  Per some previous discussion that I can't really recall if it was on or
  off list, here is a WIP patch to make pg_regress run completely outside
  of msys on win32.
  
  The change needed is that the processing of files from input/ and
  output/ into sql/ and expected/ is moved from the Makefile and into
  pg_regress itself.
  
  I have tested on Win32 non-MSVC and on Linux (non-VPATH), and it appears
  to work there.
  
  Still to be done is the make install part on MSVC build, currently
  #ifdef:ed out. While working on that, I'd appreciate some comments on
  the patch in general - if there are more things I need to fix before it
  can be considered. Particularly I'm concerned around the VPATH stuff,
  since I've never used that myself.
 
 
 Here's the patch without the WIP tag. It works for me per above, and
 also for a check (not just installcheck) on msvc built without msys.
 
 Again, the vpath part is the one I'm most unsure about, but I'm sure
 there could be other parts.
 
 Hopefully this will make it possible to get the msvc build up on the
 buildfarm not too long from now.
 
 Also, as in the first patch but not noted, this one makes it possible to
 run the regression tests as an admin account the proper way on both
 mingw and msvc.
 
 //Magnus

 Index: src/include/port.h
 ===
 RCS file: c:/prog/cvsrepo/pgsql/pgsql/src/include/port.h,v
 retrieving revision 1.107
 diff -c -r1.107 port.h
 *** src/include/port.h5 Jan 2007 22:19:50 -   1.107
 --- src/include/port.h7 Jan 2007 15:11:12 -
 ***
 *** 46,51 
 --- 46,56 
   extern bool get_home_path(char *ret_path);
   extern void get_parent_directory(char *path);
   
 + 
 + /* port/dirmod.c */
 + extern char **pgfnames(char *path);
 + extern void pgfnames_cleanup(char **filenames);
 + 
   /*
*  is_absolute_path
*
 Index: src/port/dirmod.c
 ===
 RCS file: c:/prog/cvsrepo/pgsql/pgsql/src/port/dirmod.c,v
 retrieving revision 1.46
 diff -c -r1.46 dirmod.c
 *** src/port/dirmod.c 5 Jan 2007 22:20:02 -   1.46
 --- src/port/dirmod.c 7 Jan 2007 15:13:27 -
 ***
 *** 287,298 
   
   
   /*
 !  * fnames
*
* return a list of the names of objects in the argument directory
*/
 ! static char **
 ! fnames(char *path)
   {
   DIR*dir;
   struct dirent *file;
 --- 287,298 
   
   
   /*
 !  * pgfnames
*
* return a list of the names of objects in the argument directory
*/
 ! char **
 ! pgfnames(char *path)
   {
   DIR*dir;
   struct dirent *file;
 ***
 *** 357,368 
   
   
   /*
 !  *  fnames_cleanup
*
*  deallocate memory used for filenames
*/
 ! static void
 ! fnames_cleanup(char **filenames)
   {
   char  **fn;
   
 --- 357,368 
   
   
   /*
 !  *  pgfnames_cleanup
*
*  deallocate memory used for filenames
*/
 ! void
 ! pgfnames_cleanup(char **filenames)
   {
   char  **fn;
   
 ***
 *** 394,400 
* we copy all the names out of the directory before we start modifying
* it.
*/
 ! filenames = fnames(path);
   
   if (filenames == NULL)
   return false;
 --- 394,400 
* we copy all the names out of the directory before we start modifying
* it.
*/
 ! filenames = pgfnames(path);
   
   if (filenames == NULL)
   return false;
 ***
 *** 415,421 
   if (!rmtree(filepath, true))
   {
   /* we already reported the error */
 ! fnames_cleanup(filenames);
   return false;
   }
   }
 --- 415,421 
   if (!rmtree(filepath, true))
   {
   /* we already reported the error */
 ! pgfnames_cleanup(filenames);
   return false;
   }
   }
 ***
 *** 433,439 
   goto report_and_fail;
   }
   
 ! fnames_cleanup(filenames);
   return true;
   
   report_and_fail:
 --- 433,439 
   goto report_and_fail;
   }
   
 ! pgfnames_cleanup(filenames);
   return true;
   
   report_and_fail:
 ***
 *** 444,449 
   fprintf(stderr, _(could not remove file or directory \%s\: %s\n),
   filepath, strerror(errno));
   #endif
 ! fnames_cleanup(filenames);
   return false;
   }
 --- 444,449 
   fprintf(stderr, _(could not remove file or 

Re: [PATCHES] Update UTF-8 RFC reference

2007-01-09 Thread Bruce Momjian

Patch applied.  Thanks.

---

Michael Fuhr wrote:
 Update the UTF-8 RFC reference.  RFC 2044 was obsoleted by RFC 2279,
 which was obsoleted by RFC 3629.
 
 -- 
 Michael Fuhr

[ Attachment, skipping... ]

 
 ---(end of broadcast)---
 TIP 5: don't forget to increase your free space map settings

-- 
  Bruce Momjian   [EMAIL PROTECTED]
  EnterpriseDBhttp://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

---(end of broadcast)---
TIP 3: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


Re: [PATCHES] Tablespace for temporary objects and sort files

2007-01-09 Thread Albert Cervera Areny
I don't have much time lately so if you're willing to work on it, please do.

A Dimarts 09 Gener 2007 02:51, Jaime Casanova va escriure:
 On 1/8/07, Jaime Casanova [EMAIL PROTECTED] wrote:
  maybe once this patch is applied you can think on make indexes and
  [temp] sequences on temp tables use the same temp_tablespace that
  table is using...

 actually, the index part is easy... do you want to do it?


---(end of broadcast)---
TIP 7: You can help support the PostgreSQL project by donating at

http://www.postgresql.org/about/donate


[PATCHES] Building libpq/psql with Borland BCC5

2007-01-09 Thread L Bayuk
The attached patch against PostgreSQL-8.2.1 was discussed on [INTERFACES].
It fixes bcc32.mak makefiles for the Borland BCC compiler to build libpq
and psql*. There are also changes to some header files to hide some things
BCC doesn't like.

*Note: psql compiles with bcc after the patch, but it does not run very well.
diff -c -r src.orig/bin/psql/bcc32.mak src/bin/psql/bcc32.mak
*** src.orig/bin/psql/bcc32.mak Tue Nov 21 18:26:47 2006
--- src/bin/psql/bcc32.mak  Tue Jan  9 12:17:48 2007
***
*** 60,66 
  !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
  
--- 60,66 
  !endif
  REFDOCDIR=../../../doc/src/sgml/ref
  
! CPP_PROJ = 
-I$(BCB)\include;..\..\include;..\..\interfaces\libpq;..\..\include\port\win32;..\..\include\port\win32_msvc;..\pg_dump;..\..\backend
 \
 -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
  
***
*** 98,103 
--- 98,104 
[EMAIL PROTECTED] $(INTDIR)\mbprint.obj
[EMAIL PROTECTED] $(INTDIR)\print.obj
[EMAIL PROTECTED] $(INTDIR)\prompt.obj
+   [EMAIL PROTECTED] $(INTDIR)\psqlscan.obj
[EMAIL PROTECTED] $(INTDIR)\startup.obj
[EMAIL PROTECTED] $(INTDIR)\stringutils.obj
[EMAIL PROTECTED] $(INTDIR)\tab-complete.obj
***
*** 105,113 
--- 106,118 
[EMAIL PROTECTED] $(INTDIR)\exec.obj
[EMAIL PROTECTED] $(INTDIR)\getopt.obj
[EMAIL PROTECTED] $(INTDIR)\getopt_long.obj
+   [EMAIL PROTECTED] $(INTDIR)\snprintf.obj
[EMAIL PROTECTED] $(INTDIR)\path.obj
+   [EMAIL PROTECTED] $(INTDIR)\strlcpy.obj
[EMAIL PROTECTED] $(INTDIR)\pgstrcasecmp.obj
[EMAIL PROTECTED] $(INTDIR)\sprompt.obj
+   [EMAIL PROTECTED] $(INTDIR)\dumputils.obj
+   [EMAIL PROTECTED] $(INTDIR)\keywords.obj
[EMAIL PROTECTED] $(INTDIR)\psql.ilc
[EMAIL PROTECTED] $(INTDIR)\psql.ild
[EMAIL PROTECTED] $(INTDIR)\psql.tds
***
*** 138,146 
$(INTDIR)\exec.obj \
$(INTDIR)\getopt.obj \
$(INTDIR)\getopt_long.obj \
$(INTDIR)\path.obj \
$(INTDIR)\pgstrcasecmp.obj \
!   $(INTDIR)\sprompt.obj
  
  !IFDEF DEBUG
  LINK32_OBJS   = $(LINK32_OBJS) ..\..\interfaces\libpq\Debug\blibpqddll.lib
--- 143,155 
$(INTDIR)\exec.obj \
$(INTDIR)\getopt.obj \
$(INTDIR)\getopt_long.obj \
+   $(INTDIR)\snprintf.obj \
$(INTDIR)\path.obj \
+   $(INTDIR)\strlcpy.obj \
$(INTDIR)\pgstrcasecmp.obj \
!   $(INTDIR)\sprompt.obj \
!   $(INTDIR)\dumputils.obj \
!   $(INTDIR)\keywords.obj 
  
  !IFDEF DEBUG
  LINK32_OBJS   = $(LINK32_OBJS) ..\..\interfaces\libpq\Debug\blibpqddll.lib
***
*** 149,155 
  !ENDIF
  
  # Have to use \# so # isn't treated as a comment, but MSVC doesn't like this
! ..\..\port\pg_config_paths.h: win32.mak
echo \#define PGBINDIR  $@
echo \#define PGSHAREDIR  $@
echo \#define SYSCONFDIR  $@
--- 158,164 
  !ENDIF
  
  # Have to use \# so # isn't treated as a comment, but MSVC doesn't like this
! ..\..\port\pg_config_paths.h: bcc32.mak
echo \#define PGBINDIR  $@
echo \#define PGSHAREDIR  $@
echo \#define SYSCONFDIR  $@
***
*** 188,198 
--- 197,217 
  $(CPP_PROJ) ..\..\port\getopt_long.c
  
  
+ $(INTDIR)\snprintf.obj : $(INTDIR) ..\..\port\snprintf.c
+ $(CPP) @
+ $(CPP_PROJ) ..\..\port\snprintf.c
+ 
+ 
  $(INTDIR)\path.obj : $(INTDIR) ..\..\port\path.c
  $(CPP) @
  $(CPP_PROJ) ..\..\port\path.c
  
  
+ $(INTDIR)\strlcpy.obj : $(INTDIR) ..\..\port\strlcpy.c
+ $(CPP) @
+ $(CPP_PROJ) ..\..\port\strlcpy.c
+ 
+ 
  $(INTDIR)\pgstrcasecmp.obj : ..\..\port\pgstrcasecmp.c
  $(CPP) @
  $(CPP_PROJ) ..\..\port\pgstrcasecmp.c
***
*** 203,208 
--- 222,237 
  $(CPP_PROJ) ..\..\port\sprompt.c
  
  
+ $(INTDIR)\dumputils.obj : $(INTDIR) ..\pg_dump\dumputils.c
+ $(CPP) @
+ $(CPP_PROJ) ..\pg_dump\dumputils.c
+ 
+ 
+ $(INTDIR)\keywords.obj : $(INTDIR) ..\..\backend\parser\keywords.c
+ $(CPP) @
+ $(CPP_PROJ) ..\..\backend\parser\keywords.c
+ 
+ 
  sql_help.h: create_help.pl 
 $(PERL) create_help.pl $(REFDOCDIR) $@
  
diff -c -r src.orig/include/c.h src/include/c.h
*** src.orig/include/c.hTue Oct  3 20:30:06 2006
--- src/include/c.h Tue Jan  9 12:18:57 2007
***
*** 59,65 
  #include postgres_ext.h
  #include pg_trace.h
  
! #if defined(__BORLANDC__) || (_MSC_VER = 1400)
  #define errcode __msvc_errcode
  #include crtdefs.h
  #undef errcode
--- 59,65 
  #include postgres_ext.h
  #include pg_trace.h
  
! #if _MSC_VER = 1400
  #define errcode 

Re: [PATCHES] Building libpq/psql with Borland BCC5

2007-01-09 Thread Gavin Sherry
On Tue, 9 Jan 2007, L Bayuk wrote:

 The attached patch against PostgreSQL-8.2.1 was discussed on [INTERFACES].
 It fixes bcc32.mak makefiles for the Borland BCC compiler to build libpq
 and psql*. There are also changes to some header files to hide some things
 BCC doesn't like.

 *Note: psql compiles with bcc after the patch, but it does not run very well.


Define does not run very well :-)

Gavin

---(end of broadcast)---
TIP 5: don't forget to increase your free space map settings


Re: [PATCHES] Building libpq/psql with Borland BCC5

2007-01-09 Thread Bruce Momjian
Gavin Sherry wrote:
 On Tue, 9 Jan 2007, L Bayuk wrote:
 
  The attached patch against PostgreSQL-8.2.1 was discussed on [INTERFACES].
  It fixes bcc32.mak makefiles for the Borland BCC compiler to build libpq
  and psql*. There are also changes to some header files to hide some things
  BCC doesn't like.
 
  *Note: psql compiles with bcc after the patch, but it does not run very 
  well.
 
 
 Define does not run very well :-)

See:

http://archives.postgresql.org/pgsql-interfaces/2007-01/msg3.php

-- 
  Bruce Momjian   [EMAIL PROTECTED]
  EnterpriseDBhttp://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

---(end of broadcast)---
TIP 1: if posting/reading through Usenet, please send an appropriate
   subscribe-nomail command to [EMAIL PROTECTED] so that your
   message can get through to the mailing list cleanly


Re: [PATCHES] Building libpq/psql with Borland BCC5

2007-01-09 Thread Bruce Momjian
Gavin Sherry wrote:
 On Tue, 9 Jan 2007, Bruce Momjian wrote:
 
  Gavin Sherry wrote:
   On Tue, 9 Jan 2007, L Bayuk wrote:
  
The attached patch against PostgreSQL-8.2.1 was discussed on 
[INTERFACES].
It fixes bcc32.mak makefiles for the Borland BCC compiler to build libpq
and psql*. There are also changes to some header files to hide some 
things
BCC doesn't like.
   
*Note: psql compiles with bcc after the patch, but it does not run very 
well.
   
  
   Define does not run very well :-)
 
  See:
 
  http://archives.postgresql.org/pgsql-interfaces/2007-01/msg3.php
 
 
 *blinks*
 
 Can we be sure that a BCC build libpq is even safe to use given the
 problems seen when using psql?

The bcc users say it is.

-- 
  Bruce Momjian   [EMAIL PROTECTED]
  EnterpriseDBhttp://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

---(end of broadcast)---
TIP 5: don't forget to increase your free space map settings


Re: [PATCHES] vcbuild verbosity

2007-01-09 Thread Neil Conway
On Tue, 2007-01-09 at 18:56 +0100, Magnus Hagander wrote:
 This patch enables verbose output when building all projects.

Applied, thanks.

-Neil



---(end of broadcast)---
TIP 9: In versions below 8.0, the planner will ignore your desire to
   choose an index scan if your joining column's datatypes do not
   match


Re: [PATCHES] gendef fixes

2007-01-09 Thread Neil Conway
On Tue, 2007-01-09 at 12:29 +0100, Magnus Hagander wrote:
 Attached patch fixes two problems:

Applied, thanks.

-Neil



---(end of broadcast)---
TIP 1: if posting/reading through Usenet, please send an appropriate
   subscribe-nomail command to [EMAIL PROTECTED] so that your
   message can get through to the mailing list cleanly


Re: [PATCHES] Tablespace for temporary objects and sort files

2007-01-09 Thread Jaime Casanova

On 1/9/07, Albert Cervera Areny [EMAIL PROTECTED] wrote:

I don't have much time lately so if you're willing to work on it, please do.



after doing the index part i revisited the patch again and saw that
there is something fundamentally wrong here (sorry for no noticing
that before :( )

your are using local backend variables for the iterator so two
different backends will use to different variables... because of that
if you have 3 temp tablespaces in your temp_tablespaces guc and start
100 backend and every one of them create just one temp table those 100
temp tables will be in the first temp tablespace... :(

i will try to fix that as well... unless you want to do it, just tell me...

--
regards,
Jaime Casanova

Programming today is a race between software engineers striving to
build bigger and better idiot-proof programs and the universe trying
to produce bigger and better idiots.
So far, the universe is winning.
  Richard Cook

---(end of broadcast)---
TIP 9: In versions below 8.0, the planner will ignore your desire to
  choose an index scan if your joining column's datatypes do not
  match


Re: [HACKERS] [PATCHES] Patch to log usage of temporary files

2007-01-09 Thread Bruce Momjian
Bill Moran wrote:
 In response to Tom Lane [EMAIL PROTECTED]:
 
  Bill Moran [EMAIL PROTECTED] writes:
   Andrew Dunstan [EMAIL PROTECTED] wrote:
   Might be more robust to say
   if (trace_temp_files = 0)
  
   I specified in the GUC config that minimum allowable value is -1.
  
  I'd still tend to go with Andrew's suggestion because it makes this
  particular bit of code self-defending against bad values.  Yes, it's
  reasonably safe given that bit of coding way over yonder in guc.c,
  but there's no particularly good reason why this code has to depend
  on that to avoid doing something stupid.  And it's easier to understand
  too --- you don't have to go looking in guc.c to convince yourself it's
  safe.
 
 Ahh ... well, I've probably already argued about it more than it's worth.
 The patch is easy enough to adjust, find attached.

I have applied a modified version of your patch.  I renamed the
parameter to 'log_temp_files', for consistency, added documentation, and
improved the wording, particularly mentioning that the logging happens
at file deletion time.

Thanks.

-- 
  Bruce Momjian   [EMAIL PROTECTED]
  EnterpriseDBhttp://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +
Index: doc/src/sgml/config.sgml
===
RCS file: /cvsroot/pgsql/doc/src/sgml/config.sgml,v
retrieving revision 1.99
diff -c -c -r1.99 config.sgml
*** doc/src/sgml/config.sgml	12 Dec 2006 21:30:33 -	1.99
--- doc/src/sgml/config.sgml	9 Jan 2007 21:03:51 -
***
*** 2920,2925 
--- 2920,2942 
/listitem
   /varlistentry
  
+  varlistentry id=guc-log-temp-files xreflabel=log_temp_files
+   termvarnamelog_temp_files/varname (typeinteger/type)/term
+   indexterm
+primaryvarnamelog_temp_files/ configuration parameter/primary
+   /indexterm
+   listitem
+para
+ Controls whether temporary files are logged when deleted.
+ A value of zero logs all temporary files, and positive
+ values log only files whose size is equal or greater than
+ the specified number of bytes.  Temporary files can be
+ created for sorts, hashes, and temporary results.  The
+ default is literal-1/ (off).
+/para
+   /listitem
+  /varlistentry
+ 
   /variablelist
  /sect2
 /sect1
Index: src/backend/storage/file/fd.c
===
RCS file: /cvsroot/pgsql/src/backend/storage/file/fd.c,v
retrieving revision 1.132
diff -c -c -r1.132 fd.c
*** src/backend/storage/file/fd.c	5 Jan 2007 22:19:37 -	1.132
--- src/backend/storage/file/fd.c	9 Jan 2007 21:03:54 -
***
*** 50,55 
--- 50,56 
  #include access/xact.h
  #include storage/fd.h
  #include storage/ipc.h
+ #include utils/guc.h
  
  
  /*
***
*** 938,944 
  void
  FileClose(File file)
  {
! 	Vfd		   *vfdP;
  
  	Assert(FileIsValid(file));
  
--- 939,946 
  void
  FileClose(File file)
  {
! 	Vfd			*vfdP;
! 	struct stat	filestats;
  
  	Assert(FileIsValid(file));
  
***
*** 968,973 
--- 970,988 
  	{
  		/* reset flag so that die() interrupt won't cause problems */
  		vfdP-fdstate = ~FD_TEMPORARY;
+ 		PG_TRACE1(temp__file__cleanup, vfdP-fileName);
+ 		if (log_temp_files = 0)
+ 		{
+ 			if (stat(vfdP-fileName, filestats) == 0)
+ 			{
+ if (filestats.st_size = log_temp_files)
+ 	ereport(LOG,
+ 		(errmsg(temp file: path \%s\ size %lu,
+ 		 vfdP-fileName, (unsigned long)filestats.st_size)));
+ 			}
+ 			else
+ elog(LOG, Could not stat \%s\: %m, vfdP-fileName);
+ 		}
  		if (unlink(vfdP-fileName))
  			elog(LOG, failed to unlink \%s\: %m,
   vfdP-fileName);
Index: src/backend/utils/misc/guc.c
===
RCS file: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v
retrieving revision 1.365
diff -c -c -r1.365 guc.c
*** src/backend/utils/misc/guc.c	5 Jan 2007 22:19:46 -	1.365
--- src/backend/utils/misc/guc.c	9 Jan 2007 21:03:57 -
***
*** 182,187 
--- 182,188 
  int			log_min_messages = NOTICE;
  int			client_min_messages = NOTICE;
  int			log_min_duration_statement = -1;
+ int			log_temp_files = -1;
  
  int			num_temp_buffers = 1000;
  
***
*** 1660,1665 
--- 1661,1676 
  		server_version_num,
  		PG_VERSION_NUM, PG_VERSION_NUM, PG_VERSION_NUM, NULL, NULL
  	},
+ 
+ 	{
+ 		{log_temp_files, PGC_USERSET, LOGGING_WHAT,
+ 			gettext_noop(Log the use of temporary files larger than this size.),
+ 			gettext_noop(Zero logs all files. The default is -1 (turning this feature off).),
+ 			NULL
+ 		},
+ 		log_temp_files,
+ 		-1, -1, INT_MAX, NULL, NULL
+ 	},
  
  	/* End-of-list marker */
  	{
Index: src/backend/utils/misc/postgresql.conf.sample
===
RCS file: 

Re: [HACKERS] [PATCHES] Patch to log usage of temporary files

2007-01-09 Thread Tom Lane
Bruce Momjian [EMAIL PROTECTED] writes:
 + A value of zero logs all temporary files, and positive
 + values log only files whose size is equal or greater than
 + the specified number of bytes.

Surely the measurement unit should be kbytes or disk blocks.  And why
aren't you using that GUC UNITS infrastructure Peter put in?

   /* reset flag so that die() interrupt won't cause problems */
   vfdP-fdstate = ~FD_TEMPORARY;
 + PG_TRACE1(temp__file__cleanup, vfdP-fileName);
 + if (log_temp_files = 0)
 + {
 + if (stat(vfdP-fileName, filestats) == 0)

The TRACE is in the wrong place no?  I thought it was going to be after
the stat() operation so it could pass the file size.

Also, I dunno much about DTrace, but I had the idea that you can't
simply throw a PG_TRACE macro into the source and think you are done
--- isn't there a file of probe declarations to add to?  Not to mention
the documentation of what probes exist.

regards, tom lane

---(end of broadcast)---
TIP 9: In versions below 8.0, the planner will ignore your desire to
   choose an index scan if your joining column's datatypes do not
   match


Re: [HACKERS] [PATCHES] Patch to log usage of temporary files

2007-01-09 Thread Bruce Momjian
Tom Lane wrote:
 Bruce Momjian [EMAIL PROTECTED] writes:
  + A value of zero logs all temporary files, and positive
  + values log only files whose size is equal or greater than
  + the specified number of bytes.
 
 Surely the measurement unit should be kbytes or disk blocks.  And why
 aren't you using that GUC UNITS infrastructure Peter put in?

Agreed.  I have applied the following patch to make it kilobytes, and
documented it.  I didn't put '-1kB' in the postgresql.conf file because
the -1 value is special.  (ideas?)

  /* reset flag so that die() interrupt won't cause problems */
  vfdP-fdstate = ~FD_TEMPORARY;
  +   PG_TRACE1(temp__file__cleanup, vfdP-fileName);
  +   if (log_temp_files = 0)
  +   {
  +   if (stat(vfdP-fileName, filestats) == 0)
 
 The TRACE is in the wrong place no?  I thought it was going to be after
 the stat() operation so it could pass the file size.
 
 Also, I dunno much about DTrace, but I had the idea that you can't
 simply throw a PG_TRACE macro into the source and think you are done
 --- isn't there a file of probe declarations to add to?  Not to mention
 the documentation of what probes exist.

I didn't like the macro in that area anyway.  It seems too adhock to
just throw it in when we have so few places monitored now.  Removed.

-- 
  Bruce Momjian   [EMAIL PROTECTED]
  EnterpriseDBhttp://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +
Index: doc/src/sgml/config.sgml
===
RCS file: /cvsroot/pgsql/doc/src/sgml/config.sgml,v
retrieving revision 1.100
diff -c -c -r1.100 config.sgml
*** doc/src/sgml/config.sgml	9 Jan 2007 21:31:14 -	1.100
--- doc/src/sgml/config.sgml	9 Jan 2007 22:15:40 -
***
*** 2930,2936 
  Controls whether temporary files are logged when deleted.
  A value of zero logs all temporary files, and positive
  values log only files whose size is equal or greater than
! the specified number of bytes.  Temporary files can be
  created for sorts, hashes, and temporary results.  The
  default is literal-1/ (off).
 /para
--- 2930,2936 
  Controls whether temporary files are logged when deleted.
  A value of zero logs all temporary files, and positive
  values log only files whose size is equal or greater than
! the specified number of kilobytes.  Temporary files can be
  created for sorts, hashes, and temporary results.  The
  default is literal-1/ (off).
 /para
Index: src/backend/utils/misc/guc.c
===
RCS file: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v
retrieving revision 1.366
diff -c -c -r1.366 guc.c
*** src/backend/utils/misc/guc.c	9 Jan 2007 21:31:14 -	1.366
--- src/backend/utils/misc/guc.c	9 Jan 2007 22:15:43 -
***
*** 1664,1672 
  
  	{
  		{log_temp_files, PGC_USERSET, LOGGING_WHAT,
! 			gettext_noop(Log the use of temporary files larger than this size.),
  			gettext_noop(Zero logs all files. The default is -1 (turning this feature off).),
! 			NULL
  		},
  		log_temp_files,
  		-1, -1, INT_MAX, NULL, NULL
--- 1664,1672 
  
  	{
  		{log_temp_files, PGC_USERSET, LOGGING_WHAT,
! 			gettext_noop(Log the use of temporary files larger than this number of kilobytes.),
  			gettext_noop(Zero logs all files. The default is -1 (turning this feature off).),
! 			GUC_UNIT_KB
  		},
  		log_temp_files,
  		-1, -1, INT_MAX, NULL, NULL
Index: src/backend/utils/misc/postgresql.conf.sample
===
RCS file: /cvsroot/pgsql/src/backend/utils/misc/postgresql.conf.sample,v
retrieving revision 1.200
diff -c -c -r1.200 postgresql.conf.sample
*** src/backend/utils/misc/postgresql.conf.sample	9 Jan 2007 21:31:16 -	1.200
--- src/backend/utils/misc/postgresql.conf.sample	9 Jan 2007 22:15:43 -
***
*** 334,340 
  #log_hostname = off
  
  #log_temp_files = -1			# Log temporary files equal or larger
! 	# than the specified number of bytes.  
  	# -1 disables;  0 logs all temp files
  
  #---
--- 334,340 
  #log_hostname = off
  
  #log_temp_files = -1			# Log temporary files equal or larger
! 	# than the specified number of kilobytes.
  	# -1 disables;  0 logs all temp files
  
  #---

---(end of broadcast)---
TIP 3: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


Re: [HACKERS] [PATCHES] SGML index build fix

2007-01-09 Thread Bruce Momjian

Patch applied.

---

Bruce Momjian wrote:
 Tom Lane wrote:
  Bruce Momjian [EMAIL PROTECTED] writes:
   Peter Eisentraut wrote:
   The problem is that this requires two runs even to proof the 
   documentation,
   which I think no one wants.
  
   So what would the API be to signal you want a draft build?
 gmake DRAFT=Y html
  
  I'd vote for
  
  gmake draft
 
 OK, I used that syntax (and needed another use of recursion to do it).
 Attached.
 
 -- 
   Bruce Momjian   [EMAIL PROTECTED]
   EnterpriseDBhttp://www.enterprisedb.com
 
   + If your life is a hard drive, Christ can be your backup. +

 Index: doc/src/sgml/Makefile
 ===
 RCS file: /cvsroot/pgsql/doc/src/sgml/Makefile,v
 retrieving revision 1.87
 diff -c -c -r1.87 Makefile
 *** doc/src/sgml/Makefile 7 Jan 2007 08:49:31 -   1.87
 --- doc/src/sgml/Makefile 9 Jan 2007 03:13:06 -
 ***
 *** 65,71 
   ## Man pages
   ##
   
 ! .PHONY: man
   
   DEFAULTSECTION := $(sqlmansect_dummy)
   
 --- 65,71 
   ## Man pages
   ##
   
 ! .PHONY: man draft
   
   DEFAULTSECTION := $(sqlmansect_dummy)
   
 ***
 *** 95,115 
   ifeq ($(vpath_build), yes)
   @cp $(srcdir)/stylesheet.css .
   endif
   
   
   COLLATEINDEX := LC_ALL=C $(PERL) $(COLLATEINDEX) -f -g
   
 ! # If HTML.index does not exist, create a dummy bookindex.sgml.  During the
 ! # next build, create bookindex.sgml with the proper index contents.  A 
 proper
 ! # bookindex.sgml is required to have an index in the output.
 ! ifeq (,$(wildcard HTML.index))
 ! bookindex.sgml:
 ! $(COLLATEINDEX) -o $@ -N
   else
 ! bookindex.sgml: HTML.index
 ! $(COLLATEINDEX) -i 'bookindex' -o $@ $
   endif
   
   version.sgml: $(top_builddir)/src/Makefile.global
   { \
 echo !entity version \$(VERSION)\; \
 --- 95,132 
   ifeq ($(vpath_build), yes)
   @cp $(srcdir)/stylesheet.css .
   endif
 + ifndef DRAFT
 + @cmp -s HTML.index.start HTML.index || $(MAKE) $*
 + endif
   
   
   COLLATEINDEX := LC_ALL=C $(PERL) $(COLLATEINDEX) -f -g
   
 ! draft:
 ! ifndef DRAFT
 ! ifneq ($(MAKECMDGOALS), draft)
 ! # Call ourselves with the DRAFT value set.  This seems to be the only
 ! # way to set gmake variables in a rule.
 ! @$(MAKE) DRAFT=Y $(MAKECMDGOALS))
   else
 ! # run default 'all' rule
 ! @$(MAKE) DRAFT=Y html
 ! endif
   endif
   
 + bookindex.sgml: HTML.index
 + # create a dummy bookindex.html
 + test -s HTML.index || $(COLLATEINDEX) -o $@ -N
 + # If HTML.index is valid, create a valid bookindex.sgml.  This 
 + # is required so the output has a proper index.
 + test ! -s HTML.index || $(COLLATEINDEX) -i 'bookindex' -o $@ $
 + # save copy of HTML.index for later comparison
 + @cp HTML.index HTML.index.start
 + 
 + HTML.index:
 + # create HTML.index if it does not exist
 + @$(if $(wildcard HTML.index), , touch HTML.index)
 + 
   version.sgml: $(top_builddir)/src/Makefile.global
   { \
 echo !entity version \$(VERSION)\; \
 ***
 *** 141,155 
 --- 158,184 
   
   %-A4.tex-ps: %.sgml $(ALLSGML) stylesheet.dsl bookindex.sgml
   $(JADE.tex.call) -V texdvi-output -V '%paper-type%'=A4 -o $@ $
 + ifndef DRAFT
 + @cmp -s HTML.index.start HTML.index || $(MAKE) $*
 + endif
   
   %-US.tex-ps: %.sgml $(ALLSGML) stylesheet.dsl bookindex.sgml
   $(JADE.tex.call) -V texdvi-output -V '%paper-type%'=USletter -o $@ $
 + ifndef DRAFT
 + @cmp -s HTML.index.start HTML.index || $(MAKE) $*
 + endif
   
   %-A4.tex-pdf: %.sgml $(ALLSGML) stylesheet.dsl bookindex.sgml
   $(JADE.tex.call) -V texpdf-output -V '%paper-type%'=A4 -o $@ $
 + ifndef DRAFT
 + @cmp -s HTML.index.start HTML.index || $(MAKE) $*
 + endif
   
   %-US.tex-pdf: %.sgml $(ALLSGML) stylesheet.dsl bookindex.sgml
   $(JADE.tex.call) -V texpdf-output -V '%paper-type%'=USletter -o $@ $
 + ifndef DRAFT
 + @cmp -s HTML.index.start HTML.index || $(MAKE) $*
 + endif
   
   %.dvi: %.tex-ps
   @rm -f $*.aux $*.log
 ***
 *** 291,297 
   # print
   rm -f *.rtf *.tex-ps *.tex-pdf *.dvi *.aux *.log *.ps *.pdf *.out *.eps 
 *.fot
   # index
 ! rm -f HTML.index $(GENERATED_SGML)
   # text
   rm -f INSTALL HISTORY regress_README
   # XSLT
 --- 320,326 
   # print
   rm -f *.rtf *.tex-ps *.tex-pdf *.dvi *.aux *.log *.ps *.pdf *.out *.eps 
 *.fot
   # index
 ! rm -f HTML.index HTML.index.start $(GENERATED_SGML)
   # text
   rm -f INSTALL HISTORY regress_README
   # XSLT
 Index: doc/src/sgml/docguide.sgml
 ===
 RCS file: /cvsroot/pgsql/doc/src/sgml/docguide.sgml,v
 retrieving revision 1.63
 diff -c -c -r1.63 docguide.sgml
 *** doc/src/sgml/docguide.sgml15 Dec 2006 16:50:07 -  1.63
 --- doc/src/sgml/docguide.sgml9 Jan 2007 03:13:06 -
 

Re: [HACKERS] [PATCHES] Patch to log usage of temporary files

2007-01-09 Thread Tom Lane
Bruce Momjian [EMAIL PROTECTED] writes:
 Tom Lane wrote:
 Surely the measurement unit should be kbytes or disk blocks.  And why
 aren't you using that GUC UNITS infrastructure Peter put in?

 Agreed.  I have applied the following patch to make it kilobytes, and
 documented it.  I didn't put '-1kB' in the postgresql.conf file because
 the -1 value is special.  (ideas?)

Hmm, that could be a little bit ugly.  Suggestion: redefine the value
such that files *greater than* the given size are logged, and then zero
can be the off position, and we need not worry about whether -1 is
-1 byte or -1 kbyte.

regards, tom lane

---(end of broadcast)---
TIP 7: You can help support the PostgreSQL project by donating at

http://www.postgresql.org/about/donate


Re: [PATCHES] Last infomask bit

2007-01-09 Thread Tom Lane
Bruce Momjian [EMAIL PROTECTED] writes:
 Patch applied.  Thanks.
 I added a comment about the unused bits in the header file.

Has anyone bothered to measure the overhead added by having to mask to
fetch or store the natts value?  This is not a zero-cost improvement.

regards, tom lane

---(end of broadcast)---
TIP 2: Don't 'kill -9' the postmaster


Re: [HACKERS] [PATCHES] Patch to log usage of temporary files

2007-01-09 Thread Bruce Momjian
Tom Lane wrote:
 Bruce Momjian [EMAIL PROTECTED] writes:
  Tom Lane wrote:
  Surely the measurement unit should be kbytes or disk blocks.  And why
  aren't you using that GUC UNITS infrastructure Peter put in?
 
  Agreed.  I have applied the following patch to make it kilobytes, and
  documented it.  I didn't put '-1kB' in the postgresql.conf file because
  the -1 value is special.  (ideas?)
 
 Hmm, that could be a little bit ugly.  Suggestion: redefine the value
 such that files *greater than* the given size are logged, and then zero
 can be the off position, and we need not worry about whether -1 is
 -1 byte or -1 kbyte.

Uh, the problem is that if you want all files logged, 1 does everything
1kb and larger, skipping a 500-byte file, for example.  There are also
many places where -1 is off and 0 is all, so we would be inconsistent
with that too.

-- 
  Bruce Momjian   [EMAIL PROTECTED]
  EnterpriseDBhttp://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

---(end of broadcast)---
TIP 9: In versions below 8.0, the planner will ignore your desire to
   choose an index scan if your joining column's datatypes do not
   match


Re: [HACKERS] [PATCHES] Patch to log usage of temporary files

2007-01-09 Thread Bill Moran
In response to Tom Lane [EMAIL PROTECTED]:

 Bruce Momjian [EMAIL PROTECTED] writes:
  Tom Lane wrote:
  Surely the measurement unit should be kbytes or disk blocks.  And why
  aren't you using that GUC UNITS infrastructure Peter put in?
 
  Agreed.  I have applied the following patch to make it kilobytes, and
  documented it.  I didn't put '-1kB' in the postgresql.conf file because
  the -1 value is special.  (ideas?)
 
 Hmm, that could be a little bit ugly.  Suggestion: redefine the value
 such that files *greater than* the given size are logged,

It already is that way, with 0 effectively meaning log all.

 and then zero
 can be the off position, and we need not worry about whether -1 is
 -1 byte or -1 kbyte.

All doing this does is make it impossible to log temp files of 1 byte.
I thought the -1 = magic off was more intuitive.  But 0 = off isn't
terribly cryptic or anything.

I'd considered creating two GUC variables: a boolean log_temp_files and
an int log_temp_file_max_size, or something like that, but it seemed
like overkill if I could just use a magic value from the int.

Someone (I don't remember who) suggested that it might be useful to
also have the ability to log temp files _smaller_ than a certain size.
Allowing _either_ larger than _or_ smaller than will certainly complicate
the config options.  I had this devilish master plan that - values would
be less than and positive values greater than, then I decided I was
being stupid.

So, that's my input.  But, at this point I'm not entirely sure what the
best approach is.

-- 
Bill Moran
Collaborative Fusion Inc.

---(end of broadcast)---
TIP 7: You can help support the PostgreSQL project by donating at

http://www.postgresql.org/about/donate


Re: [HACKERS] [PATCHES] Patch to log usage of temporary files

2007-01-09 Thread Tom Lane
Bill Moran [EMAIL PROTECTED] writes:
 In response to Tom Lane [EMAIL PROTECTED]:
 and then zero
 can be the off position, and we need not worry about whether -1 is
 -1 byte or -1 kbyte.

 All doing this does is make it impossible to log temp files of 1 byte.

How you figure that?  It would make it impossible to log files of *zero*
bytes, if anyone cared about that, but not 1 byte. 1 byte  0 kbyte.

regards, tom lane

---(end of broadcast)---
TIP 4: Have you searched our list archives?

   http://archives.postgresql.org


Re: [HACKERS] [PATCHES] Last infomask bit

2007-01-09 Thread Bruce Momjian
Tom Lane wrote:
 Bruce Momjian [EMAIL PROTECTED] writes:
  Patch applied.  Thanks.
  I added a comment about the unused bits in the header file.
 
 Has anyone bothered to measure the overhead added by having to mask to
 fetch or store the natts value?  This is not a zero-cost improvement.

I assumed Heikki had tested it, but now see no mention of a test in the
posting:

http://archives.postgresql.org/pgsql-patches/2007-01/msg00052.php

Tom, how should this be tested?  I assume some loop of the same query
over and over again.

-- 
  Bruce Momjian   [EMAIL PROTECTED]
  EnterpriseDBhttp://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

---(end of broadcast)---
TIP 4: Have you searched our list archives?

   http://archives.postgresql.org


Re: [HACKERS] [PATCHES] Patch to log usage of temporary files

2007-01-09 Thread Tom Lane
Bill Moran [EMAIL PROTECTED] writes:
 In response to Tom Lane [EMAIL PROTECTED]:
 Hmm, that could be a little bit ugly.  Suggestion: redefine the value
 such that files *greater than* the given size are logged,

 It already is that way, with 0 effectively meaning log all.

Oh, never mind, obviously I had my head screwed on backwards there.
Time for more caffeine.

Let's live with the -1 ... but please check that the GUC units stuff
handles setting and reading it nicely.  I want to see -1 not -1Kb
when I inspect the default value ...

regards, tom lane

---(end of broadcast)---
TIP 2: Don't 'kill -9' the postmaster


Re: [HACKERS] [PATCHES] Patch to log usage of temporary files

2007-01-09 Thread Bruce Momjian
Tom Lane wrote:
 Bill Moran [EMAIL PROTECTED] writes:
  In response to Tom Lane [EMAIL PROTECTED]:
  and then zero
  can be the off position, and we need not worry about whether -1 is
  -1 byte or -1 kbyte.
 
  All doing this does is make it impossible to log temp files of 1 byte.
 
 How you figure that?  It would make it impossible to log files of *zero*
 bytes, if anyone cared about that, but not 1 byte. 1 byte  0 kbyte.

Uh, if you supply just a number with no units, is that bytes or
kilobytes?  Do you have to say 0B.

Even if we could get that to work, I don't think it is worth the
inconsistency with the other GUC entries to do it.  The units are
mentioned in the comments in postgresql.conf.

-- 
  Bruce Momjian   [EMAIL PROTECTED]
  EnterpriseDBhttp://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

---(end of broadcast)---
TIP 3: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


Re: [HACKERS] [PATCHES] Last infomask bit

2007-01-09 Thread Bruce Momjian
Tom Lane wrote:
 Bruce Momjian [EMAIL PROTECTED] writes:
  Patch applied.  Thanks.
  I added a comment about the unused bits in the header file.
 
 Has anyone bothered to measure the overhead added by having to mask to
 fetch or store the natts value?  This is not a zero-cost improvement.

SHOW ALL has:

   log_temp_files  | -1 | Log the 
use of temporary files larger than th

and pg_settings has:

   log_temp_files| -1  | kB  | Reporting and Logging / What to Log

Looks OK to me.

-- 
  Bruce Momjian   [EMAIL PROTECTED]
  EnterpriseDBhttp://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

---(end of broadcast)---
TIP 4: Have you searched our list archives?

   http://archives.postgresql.org


Re: [HACKERS] [PATCHES] Last infomask bit

2007-01-09 Thread Tom Lane
Bruce Momjian [EMAIL PROTECTED] writes:

 SHOW ALL has:

log_temp_files  | -1 | Log the 
 use of temporary files larger than th

Yeah, but if you do SET log_temp_files = -1, does it still say that?
I'm worried that will change it to -1024.

regards, tom lane

---(end of broadcast)---
TIP 1: if posting/reading through Usenet, please send an appropriate
   subscribe-nomail command to [EMAIL PROTECTED] so that your
   message can get through to the mailing list cleanly


Re: [HACKERS] [PATCHES] Last infomask bit

2007-01-09 Thread Tom Lane
Bruce Momjian [EMAIL PROTECTED] writes:
 Tom Lane wrote:
 Has anyone bothered to measure the overhead added by having to mask to
 fetch or store the natts value?  This is not a zero-cost improvement.

 Tom, how should this be tested?  I assume some loop of the same query
 over and over again.

I'd be satisfied by a demonstration of no meaningful difference in
pgbench numbers.

It's *probably* not a problem, but you never know if you don't check...

regards, tom lane

---(end of broadcast)---
TIP 9: In versions below 8.0, the planner will ignore your desire to
   choose an index scan if your joining column's datatypes do not
   match


Re: [HACKERS] [PATCHES] Last infomask bit

2007-01-09 Thread Bruce Momjian
Tom Lane wrote:
 Bruce Momjian [EMAIL PROTECTED] writes:
 
  SHOW ALL has:
 
 log_temp_files  | -1 | Log 
  the use of temporary files larger than th
 
 Yeah, but if you do SET log_temp_files = -1, does it still say that?
 I'm worried that will change it to -1024.

You can rest easy tonight.  :-)

test= SET log_temp_files = -1;
SET
test= SHOW log_temp_files;
 log_temp_files

 -1
(1 row)

test= SET log_temp_files = 1;
SET
test= SHOW log_temp_files;
 log_temp_files

 1kB
(1 row)

-- 
  Bruce Momjian   [EMAIL PROTECTED]
  EnterpriseDBhttp://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

---(end of broadcast)---
TIP 1: if posting/reading through Usenet, please send an appropriate
   subscribe-nomail command to [EMAIL PROTECTED] so that your
   message can get through to the mailing list cleanly


Re: [HACKERS] [PATCHES] SGML index build fix

2007-01-09 Thread Peter Eisentraut
Bruce Momjian wrote:
    %-A4.tex-ps: %.sgml $(ALLSGML) stylesheet.dsl bookindex.sgml
    $(JADE.tex.call) -V texdvi-output -V '%paper-type%'=A4 -o $@ $
  + ifndef DRAFT
  + [EMAIL PROTECTED] -s HTML.index.start HTML.index || $(MAKE) $*
  + endif

What is the point of that?

-- 
Peter Eisentraut
http://developer.postgresql.org/~petere/

---(end of broadcast)---
TIP 3: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


Re: [HACKERS] [PATCHES] SGML index build fix

2007-01-09 Thread Peter Eisentraut
Bruce Momjian wrote:
  + ifndef DRAFT
  + [EMAIL PROTECTED] -s HTML.index.start HTML.index || $(MAKE) $*
  + endif

Why are you using $*?  This isn't a pattern rule.

-- 
Peter Eisentraut
http://developer.postgresql.org/~petere/

---(end of broadcast)---
TIP 3: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


Re: [HACKERS] [PATCHES] SGML index build fix

2007-01-09 Thread Peter Eisentraut
Bruce Momjian wrote:
  ! draft:
  ! ifndef DRAFT
  ! ifneq ($(MAKECMDGOALS), draft)

How could this condition ever match?

  ! # Call ourselves with the DRAFT value set.  This seems to be the only
  ! # way to set gmake variables in a rule. 
  ! [EMAIL PROTECTED](MAKE) DRAFT=Y $(MAKECMDGOALS))
    else
  ! # run default 'all' rule
  ! [EMAIL PROTECTED](MAKE) DRAFT=Y html
  ! endif
    endif

-- 
Peter Eisentraut
http://developer.postgresql.org/~petere/

---(end of broadcast)---
TIP 3: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


Re: [HACKERS] [PATCHES] SGML index build fix

2007-01-09 Thread Bruce Momjian
Peter Eisentraut wrote:
 Bruce Momjian wrote:
   ? %-A4.tex-ps: %.sgml $(ALLSGML) stylesheet.dsl bookindex.sgml
   ? $(JADE.tex.call) -V texdvi-output -V '%paper-type%'=A4 -o $@ $
   + ifndef DRAFT
   + [EMAIL PROTECTED] -s HTML.index.start HTML.index || $(MAKE) $*
   + endif
 
 What is the point of that?

If HTML.index changed during the build, we need to rerun it until it is
unchanged.

-- 
  Bruce Momjian   [EMAIL PROTECTED]
  EnterpriseDBhttp://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

---(end of broadcast)---
TIP 6: explain analyze is your friend


Re: [HACKERS] [PATCHES] SGML index build fix

2007-01-09 Thread Bruce Momjian
Peter Eisentraut wrote:
 Bruce Momjian wrote:
   + ifndef DRAFT
   + [EMAIL PROTECTED] -s HTML.index.start HTML.index || $(MAKE) $*
   + endif
 
 Why are you using $*?  This isn't a pattern rule.
 

Sorry, my mistake.  Here is an patch to fix that.

-- 
  Bruce Momjian   [EMAIL PROTECTED]
  EnterpriseDBhttp://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +
Index: doc/src/sgml/Makefile
===
RCS file: /cvsroot/pgsql/doc/src/sgml/Makefile,v
retrieving revision 1.88
diff -c -c -r1.88 Makefile
*** doc/src/sgml/Makefile	9 Jan 2007 22:19:36 -	1.88
--- doc/src/sgml/Makefile	10 Jan 2007 01:23:40 -
***
*** 96,102 
  	@cp $(srcdir)/stylesheet.css .
  endif
  ifndef DRAFT
! 	@cmp -s HTML.index.start HTML.index || $(MAKE) $*
  endif
  
  
--- 96,102 
  	@cp $(srcdir)/stylesheet.css .
  endif
  ifndef DRAFT
! 	@cmp -s HTML.index.start HTML.index || $(MAKE) $(MAKECMDGOALS)
  endif
  
  
***
*** 107,113 
  ifneq ($(MAKECMDGOALS), draft)
  # Call ourselves with the DRAFT value set.  This seems to be the only
  # way to set gmake variables in a rule.
! 	@$(MAKE) DRAFT=Y $(MAKECMDGOALS))
  else
  # run default 'all' rule
  	@$(MAKE) DRAFT=Y all
--- 107,113 
  ifneq ($(MAKECMDGOALS), draft)
  # Call ourselves with the DRAFT value set.  This seems to be the only
  # way to set gmake variables in a rule.
! 	@$(MAKE) DRAFT=Y $(MAKECMDGOALS)
  else
  # run default 'all' rule
  	@$(MAKE) DRAFT=Y all
***
*** 159,183 
  %-A4.tex-ps: %.sgml $(ALLSGML) stylesheet.dsl bookindex.sgml
  	$(JADE.tex.call) -V texdvi-output -V '%paper-type%'=A4 -o $@ $
  ifndef DRAFT
! 	@cmp -s HTML.index.start HTML.index || $(MAKE) $*
  endif
  
  %-US.tex-ps: %.sgml $(ALLSGML) stylesheet.dsl bookindex.sgml
  	$(JADE.tex.call) -V texdvi-output -V '%paper-type%'=USletter -o $@ $
  ifndef DRAFT
! 	@cmp -s HTML.index.start HTML.index || $(MAKE) $*
  endif
  
  %-A4.tex-pdf: %.sgml $(ALLSGML) stylesheet.dsl bookindex.sgml
  	$(JADE.tex.call) -V texpdf-output -V '%paper-type%'=A4 -o $@ $
  ifndef DRAFT
! 	@cmp -s HTML.index.start HTML.index || $(MAKE) $*
  endif
  
  %-US.tex-pdf: %.sgml $(ALLSGML) stylesheet.dsl bookindex.sgml
  	$(JADE.tex.call) -V texpdf-output -V '%paper-type%'=USletter -o $@ $
  ifndef DRAFT
! 	@cmp -s HTML.index.start HTML.index || $(MAKE) $*
  endif
  
  %.dvi: %.tex-ps
--- 159,183 
  %-A4.tex-ps: %.sgml $(ALLSGML) stylesheet.dsl bookindex.sgml
  	$(JADE.tex.call) -V texdvi-output -V '%paper-type%'=A4 -o $@ $
  ifndef DRAFT
! 	@cmp -s HTML.index.start HTML.index || $(MAKE) $@
  endif
  
  %-US.tex-ps: %.sgml $(ALLSGML) stylesheet.dsl bookindex.sgml
  	$(JADE.tex.call) -V texdvi-output -V '%paper-type%'=USletter -o $@ $
  ifndef DRAFT
! 	@cmp -s HTML.index.start HTML.index || $(MAKE) $@
  endif
  
  %-A4.tex-pdf: %.sgml $(ALLSGML) stylesheet.dsl bookindex.sgml
  	$(JADE.tex.call) -V texpdf-output -V '%paper-type%'=A4 -o $@ $
  ifndef DRAFT
! 	@cmp -s HTML.index.start HTML.index || $(MAKE) $@
  endif
  
  %-US.tex-pdf: %.sgml $(ALLSGML) stylesheet.dsl bookindex.sgml
  	$(JADE.tex.call) -V texpdf-output -V '%paper-type%'=USletter -o $@ $
  ifndef DRAFT
! 	@cmp -s HTML.index.start HTML.index || $(MAKE) $@
  endif
  
  %.dvi: %.tex-ps

---(end of broadcast)---
TIP 9: In versions below 8.0, the planner will ignore your desire to
   choose an index scan if your joining column's datatypes do not
   match


Re: [HACKERS] [PATCHES] SGML index build fix

2007-01-09 Thread Bruce Momjian
Peter Eisentraut wrote:
 Bruce Momjian wrote:
   ! draft:
   ! ifndef DRAFT
   ! ifneq ($(MAKECMDGOALS), draft)
 
 How could this condition ever match?

On first call, 'draft' might be set, but in the recursive call, this
code will not be reached because DRAFT iss set.

---

 
   ! # Call ourselves with the DRAFT value set. ?This seems to be the only
   ! # way to set gmake variables in a rule. 
   ! [EMAIL PROTECTED](MAKE) DRAFT=Y $(MAKECMDGOALS))
   ? else
   ! # run default 'all' rule
   ! [EMAIL PROTECTED](MAKE) DRAFT=Y html
   ! endif
   ? endif
 
 -- 
 Peter Eisentraut
 http://developer.postgresql.org/~petere/
 
 ---(end of broadcast)---
 TIP 3: Have you checked our extensive FAQ?
 
http://www.postgresql.org/docs/faq

-- 
  Bruce Momjian   [EMAIL PROTECTED]
  EnterpriseDBhttp://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

---(end of broadcast)---
TIP 3: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


Re: [PATCHES] Building libpq/psql with Borland BCC5

2007-01-09 Thread Tom Lane
Gavin Sherry [EMAIL PROTECTED] writes:
 Can we be sure that a BCC build libpq is even safe to use given the
 problems seen when using psql?

Well, I'd not trust it a lot, but surely we have to get it to build
before anyone can debug it ...

regards, tom lane

---(end of broadcast)---
TIP 2: Don't 'kill -9' the postmaster