[PATCHES] gendef fixes
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 () { 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, ") { 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]
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
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
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
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
Re: [HACKERS] [PATCHES] Patch to log usage of temporary files
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
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
Re: [PATCHES] gendef fixes
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
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
Re: [PATCHES] Update UTF-8 RFC reference
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
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
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_errc
Re: [PATCHES] Building libpq/psql with Borland BCC5
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
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
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? Gavin ---(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] Building libpq/psql with Borland BCC5
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
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
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
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
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 + + log_temp_files (integer) + +log_temp_files configuration parameter + + + + 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 -1 (off). + + + + 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: /cvsroot/pgsql/src/backend/utils/misc/postgresql.conf.sample,v retrieving revision 1.199 diff -c -c -r1.199 postgresql.conf.sample *** src/backend/utils/misc/postgresql.conf.sa
Re: [HACKERS] [PATCHES] Patch to log usage of temporary files
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
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 -1 (off). --- 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 -1 (off). 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
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 ""; \ > --- 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 ""; \ > *** > *** 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/
Re: [HACKERS] [PATCHES] Patch to log usage of temporary files
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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