Only in sigres-0.1.2: CHANGELOG Only in postgresql-8.2.1: README Only in sigres-0.1.2: README.pgsql Only in sigres-0.1.2: README.sigres diff -c -r postgresql-8.2.1/src/backend/access/transam/xlog.c sigres-0.1.2/src/backend/access/transam/xlog.c *** postgresql-8.2.1/src/backend/access/transam/xlog.c Fri Dec 1 03:29:11 2006 --- sigres-0.1.2/src/backend/access/transam/xlog.c Fri Feb 16 09:45:05 2007 *************** *** 10,15 **** --- 10,18 ---- * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.258 2006/11/30 18:29:11 tgl Exp $ * *------------------------------------------------------------------------- + * + * Extended to Sigres by Hideyuki Kawashima (kawasima@cs.tsukuba.ac.jp) + * */ #include "postgres.h" *************** *** 142,147 **** --- 145,154 ---- bool XLOG_DEBUG = false; #endif + /* Entities are in "globals.c", for SIGRES */ + extern int BgWriterPid; + extern bool enableSigres; + /* * XLOGfileslop is used in the code as the allowed "fuzz" in the number of * preallocated XLOG segments --- we try to have at least XLOGfiles advance *************** *** 474,480 **** static bool XLogCheckBuffer(XLogRecData *rdata, bool doPageWrites, XLogRecPtr *lsn, BkpBlock *bkpb); static bool AdvanceXLInsertBuffer(bool new_segment); ! static void XLogWrite(XLogwrtRqst WriteRqst, bool flexible, bool xlog_switch); static int XLogFileInit(uint32 log, uint32 seg, bool *use_existent, bool use_lock); static bool InstallXLogFileSegment(uint32 *log, uint32 *seg, char *tmppath, --- 481,487 ---- static bool XLogCheckBuffer(XLogRecData *rdata, bool doPageWrites, XLogRecPtr *lsn, BkpBlock *bkpb); static bool AdvanceXLInsertBuffer(bool new_segment); ! static void _XLogWrite(XLogwrtRqst WriteRqst, bool flexible, bool xlog_switch); static int XLogFileInit(uint32 log, uint32 seg, bool *use_existent, bool use_lock); static bool InstallXLogFileSegment(uint32 *log, uint32 *seg, char *tmppath, *************** *** 510,515 **** --- 517,529 ---- XLogRecPtr *minRecoveryLoc); static void rm_redo_error_callback(void *arg); + #define XLogWrite(WriteRqst, flexible, xlog_switch) \ + do { \ + if (enableSigres == false) \ + _XLogWrite(WriteRqst, flexible, xlog_switch); \ + else if ((IsUnderPostmaster && BgWriterPid == MyProcPid) || !IsUnderPostmaster) \ + _XLogWrite(WriteRqst, flexible, xlog_switch); \ + } while (0) /* * Insert an XLOG record having the specified RMID and info bytes, *************** *** 727,746 **** (LogwrtRqst.Write.xrecoff >= LogwrtResult.Write.xrecoff + XLogCtl->XLogCacheByte / 2)) { ! if (LWLockConditionalAcquire(WALWriteLock, LW_EXCLUSIVE)) ! { ! /* ! * Since the amount of data we write here is completely optional ! * anyway, tell XLogWrite it can be "flexible" and stop at a ! * convenient boundary. This allows writes triggered by this ! * mechanism to synchronize with the cache boundaries, so that in ! * a long transaction we'll basically dump alternating halves of ! * the buffer array. ! */ ! LogwrtResult = XLogCtl->Write.LogwrtResult; ! if (XLByteLT(LogwrtResult.Write, LogwrtRqst.Write)) ! XLogWrite(LogwrtRqst, true, false); ! LWLockRelease(WALWriteLock); } } --- 741,762 ---- (LogwrtRqst.Write.xrecoff >= LogwrtResult.Write.xrecoff + XLogCtl->XLogCacheByte / 2)) { ! if (enableSigres == false) { ! if (LWLockConditionalAcquire(WALWriteLock, LW_EXCLUSIVE)) ! { ! /* ! * Since the amount of data we write here is completely optional ! * anyway, tell XLogWrite it can be "flexible" and stop at a ! * convenient boundary. This allows writes triggered by this ! * mechanism to synchronize with the cache boundaries, so that in ! * a long transaction we'll basically dump alternating halves of ! * the buffer array. ! */ ! LogwrtResult = XLogCtl->Write.LogwrtResult; ! if (XLByteLT(LogwrtResult.Write, LogwrtRqst.Write)) ! XLogWrite(LogwrtRqst, true, false); ! LWLockRelease(WALWriteLock); ! } } } *************** *** 890,897 **** RecPtr.xlogid -= 1; RecPtr.xrecoff = XLogFileSize; } ! ! LWLockAcquire(WALWriteLock, LW_EXCLUSIVE); LogwrtResult = XLogCtl->Write.LogwrtResult; if (!XLByteLE(RecPtr, LogwrtResult.Flush)) { --- 906,913 ---- RecPtr.xlogid -= 1; RecPtr.xrecoff = XLogFileSize; } ! if (enableSigres == false) ! LWLockAcquire(WALWriteLock, LW_EXCLUSIVE); LogwrtResult = XLogCtl->Write.LogwrtResult; if (!XLByteLE(RecPtr, LogwrtResult.Flush)) { *************** *** 901,908 **** FlushRqst.Flush = RecPtr; XLogWrite(FlushRqst, false, false); } ! LWLockRelease(WALWriteLock); ! END_CRIT_SECTION(); return RecPtr; --- 917,924 ---- FlushRqst.Flush = RecPtr; XLogWrite(FlushRqst, false, false); } ! if (enableSigres == false) ! LWLockRelease(WALWriteLock); END_CRIT_SECTION(); return RecPtr; *************** *** 1016,1024 **** XLogCtlWrite *Write = &XLogCtl->Write; XLogwrtRqst FlushRqst; XLogRecPtr OldSegEnd; ! ! LWLockAcquire(WALWriteLock, LW_EXCLUSIVE); ! /* * Flush through the end of the page containing XLOG_SWITCH, and * perform end-of-segment actions (eg, notifying archiver). --- 1032,1039 ---- XLogCtlWrite *Write = &XLogCtl->Write; XLogwrtRqst FlushRqst; XLogRecPtr OldSegEnd; ! if (enableSigres == false) ! LWLockAcquire(WALWriteLock, LW_EXCLUSIVE); /* * Flush through the end of the page containing XLOG_SWITCH, and * perform end-of-segment actions (eg, notifying archiver). *************** *** 1067,1075 **** } Write->LogwrtResult = LogwrtResult; ! ! LWLockRelease(WALWriteLock); ! updrqst = false; /* done already */ } else --- 1082,1089 ---- } Write->LogwrtResult = LogwrtResult; ! if (enableSigres == false) ! LWLockRelease(WALWriteLock); updrqst = false; /* done already */ } else *************** *** 1376,1382 **** WriteRqst.Write = OldPageRqstPtr; WriteRqst.Flush.xlogid = 0; WriteRqst.Flush.xrecoff = 0; ! XLogWrite(WriteRqst, false, false); LWLockRelease(WALWriteLock); Insert->LogwrtResult = LogwrtResult; } --- 1390,1396 ---- WriteRqst.Write = OldPageRqstPtr; WriteRqst.Flush.xlogid = 0; WriteRqst.Flush.xrecoff = 0; ! _XLogWrite(WriteRqst, false, false); /* SIGRES */ LWLockRelease(WALWriteLock); Insert->LogwrtResult = LogwrtResult; } *************** *** 1463,1469 **** * Must be called with WALWriteLock held. */ static void ! XLogWrite(XLogwrtRqst WriteRqst, bool flexible, bool xlog_switch) { XLogCtlWrite *Write = &XLogCtl->Write; bool ispartialpage; --- 1477,1483 ---- * Must be called with WALWriteLock held. */ static void ! _XLogWrite(XLogwrtRqst WriteRqst, bool flexible, bool xlog_switch) { XLogCtlWrite *Write = &XLogCtl->Write; bool ispartialpage; *************** *** 1581,1587 **** if (XLOG_DEBUG) elog(LOG, "time for a checkpoint, signaling bgwriter"); #endif ! RequestCheckpoint(false, true); } } } --- 1595,1602 ---- if (XLOG_DEBUG) elog(LOG, "time for a checkpoint, signaling bgwriter"); #endif ! if (enableSigres == false) ! RequestCheckpoint(false, true); } } } *************** *** 1861,1871 **** * section. However, calls from bufmgr.c are not within critical sections * and so we will not force a restart for a bad LSN on a data page. */ ! if (XLByteLT(LogwrtResult.Flush, record)) ! elog(InRecovery ? WARNING : ERROR, ! "xlog flush request %X/%X is not satisfied --- flushed only to %X/%X", ! record.xlogid, record.xrecoff, ! LogwrtResult.Flush.xlogid, LogwrtResult.Flush.xrecoff); } /* --- 1876,1887 ---- * section. However, calls from bufmgr.c are not within critical sections * and so we will not force a restart for a bad LSN on a data page. */ ! if (enableSigres == false) ! if (XLByteLT(LogwrtResult.Flush, record)) ! elog(InRecovery ? WARNING : ERROR, ! "xlog flush request %X/%X is not satisfied --- flushed only to %X/%X", ! record.xlogid, record.xrecoff, ! LogwrtResult.Flush.xlogid, LogwrtResult.Flush.xrecoff); } /* *************** *** 2342,2347 **** --- 2358,2366 ---- #endif #endif /* NOT_USED */ + if (enableSigres == true) + issue_xlog_fsync(); + if (close(openLogFile)) ereport(PANIC, (errcode_for_file_access(), *************** *** 5420,5425 **** --- 5439,5447 ---- void ShutdownXLOG(int code, Datum arg) { + if (enableSigres == true) + enableFsync = true; + ereport(LOG, (errmsg("shutting down"))); *************** *** 5428,5433 **** --- 5450,5458 ---- ShutdownSUBTRANS(); ShutdownMultiXact(); + if (enableSigres == true) + XLogFileClose(); + ereport(LOG, (errmsg("database system is shut down"))); } *************** *** 6183,6190 **** * have different checkpoint positions and hence different history * file names, even if nothing happened in between. */ ! RequestCheckpoint(true, false); ! /* * Now we need to fetch the checkpoint record location, and also its * REDO pointer. The oldest point in WAL that would be needed to --- 6208,6215 ---- * have different checkpoint positions and hence different history * file names, even if nothing happened in between. */ ! if (enableSigres == false) ! RequestCheckpoint(true, false); /* * Now we need to fetch the checkpoint record location, and also its * REDO pointer. The oldest point in WAL that would be needed to diff -c -r postgresql-8.2.1/src/backend/commands/dbcommands.c sigres-0.1.2/src/backend/commands/dbcommands.c *** postgresql-8.2.1/src/backend/commands/dbcommands.c Mon Nov 6 07:42:08 2006 --- sigres-0.1.2/src/backend/commands/dbcommands.c Fri Feb 16 10:35:01 2007 *************** *** 59,64 **** --- 59,66 ---- static void remove_dbtablespaces(Oid db_id); static bool check_db_file_conflict(Oid db_id); + /* For Sigres */ + extern bool enableSigres; /* * CREATE DATABASE *************** *** 504,510 **** * Perhaps if we ever implement CREATE DATABASE in a less cheesy way, * we can avoid this. */ ! RequestCheckpoint(true, false); /* * Close pg_database, but keep lock till commit (this is important to --- 506,513 ---- * Perhaps if we ever implement CREATE DATABASE in a less cheesy way, * we can avoid this. */ ! if (enableSigres == false) ! RequestCheckpoint(true, false); /* * Close pg_database, but keep lock till commit (this is important to diff -c -r postgresql-8.2.1/src/backend/postmaster/bgwriter.c sigres-0.1.2/src/backend/postmaster/bgwriter.c *** postgresql-8.2.1/src/backend/postmaster/bgwriter.c Sat Dec 2 04:55:28 2006 --- sigres-0.1.2/src/backend/postmaster/bgwriter.c Fri Feb 16 11:18:06 2007 *************** *** 42,48 **** *------------------------------------------------------------------------- */ #include "postgres.h" - #include #include #include --- 42,47 ---- *************** *** 63,68 **** --- 62,75 ---- #include "utils/memutils.h" #include "utils/resowner.h" + #include "debug.h" + #include + #include + #include + + /* For Sigres */ + extern int BgWriterPid; /* Entity is in "globals.c" */ + extern bool enableSigres; /* Entity is in "globals.c" */ /*---------- * Shared memory area for communication between bgwriter and backends *************** *** 171,176 **** --- 178,193 ---- BgWriterShmem->bgwriter_pid = MyProcPid; am_bg_writer = true; + if (enableSigres == true) + { + int fd; + + if ((fd = open(BGWRITER_PIDFILE, O_WRONLY|O_TRUNC|O_CREAT, 0644)) == -1) ERR; + if (write(fd, &MyProcPid, sizeof(int)) == -1) ERR; + if (close(fd) == -1) ERR; + BgWriterPid = MyProcPid; + } + /* * If possible, make this process a group leader, so that the postmaster * can signal any child processes too. (bgwriter probably never has *************** *** 321,326 **** --- 338,379 ---- */ PG_SETMASK(&UnBlockSig); + if (enableSigres == true) { + for (;;) { + if (!PostmasterIsAlive(true)) + exit(1); + + /* + * Process any requests or signals received recently. + */ + AbsorbFsyncRequests(); + + if (got_SIGHUP) + { + got_SIGHUP = false; + ProcessConfigFile(PGC_SIGHUP); + } + if (shutdown_requested) + { + /* + * From here on, elog(ERROR) should end with exit(1), not send + * control back to the sigsetjmp block above + */ + ExitOnAnyError = true; + /* Close down the database */ + ShutdownXLOG(0, 0); + DumpFreeSpaceMap(0, 0); + + remove(BGWRITER_PIDFILE); /* SIGRES */ + + /* Normal exit from the bgwriter is here */ + proc_exit(0); /* done */ + } + + usleep(100000L); + } + } + /* * Loop forever */ *************** *** 506,512 **** } } - /* -------------------------------- * signal handler routines * -------------------------------- --- 559,564 ---- diff -c -r postgresql-8.2.1/src/backend/postmaster/postmaster.c sigres-0.1.2/src/backend/postmaster/postmaster.c *** postgresql-8.2.1/src/backend/postmaster/postmaster.c Thu Jan 4 09:58:01 2007 --- sigres-0.1.2/src/backend/postmaster/postmaster.c Fri Feb 16 09:48:10 2007 *************** *** 122,127 **** --- 122,129 ---- #include "storage/spin.h" #endif + /* For Sigres */ + extern bool enableSigres; /* Entity is in "globals.c" */ /* * List of active backends (or child processes anyway; we don't actually *************** *** 960,965 **** --- 962,970 ---- */ StartupPID = StartupDataBase(); + if (enableSigres == true) + enableFsync = false; + status = ServerLoop(); /* *************** *** 2841,2846 **** --- 2846,2854 ---- char protobuf[32]; int i; + if (enableSigres == true) + enableFsync = false; + /* * Don't want backend to be able to see the postmaster random number * generator state. We have to clobber the static random_seed *and* start diff -c -r postgresql-8.2.1/src/backend/utils/init/globals.c sigres-0.1.2/src/backend/utils/init/globals.c *** postgresql-8.2.1/src/backend/utils/init/globals.c Wed Oct 4 09:30:02 2006 --- sigres-0.1.2/src/backend/utils/init/globals.c Fri Feb 16 10:35:00 2007 *************** *** 109,111 **** --- 109,115 ---- bool VacuumCostActive = false; int GinFuzzySearchLimit = 0; + + /* Sigres Parameters */ + int BgWriterPid = 0; /* Must be extern */ + bool enableSigres = false; diff -c -r postgresql-8.2.1/src/backend/utils/misc/guc.c sigres-0.1.2/src/backend/utils/misc/guc.c *** postgresql-8.2.1/src/backend/utils/misc/guc.c Wed Nov 29 23:50:07 2006 --- sigres-0.1.2/src/backend/utils/misc/guc.c Fri Feb 16 09:30:42 2007 *************** *** 521,526 **** --- 521,534 ---- true, NULL, NULL }, { + {"sigres", PGC_SIGHUP, WAL_SETTINGS, + gettext_noop("Ignoring XLogWrite to accelerate INSERT/UPDATE operations with UPS ."), + gettext_noop("Without using UPS, enabling sigres makes your system dangerous.") + }, + &enableSigres, + false, NULL, NULL + }, + { {"zero_damaged_pages", PGC_SUSET, DEVELOPER_OPTIONS, gettext_noop("Continues processing past damaged page headers."), gettext_noop("Detection of a damaged page header normally causes PostgreSQL to " diff -c -r postgresql-8.2.1/src/backend/utils/misc/postgresql.conf.sample sigres-0.1.2/src/backend/utils/misc/postgresql.conf.sample *** postgresql-8.2.1/src/backend/utils/misc/postgresql.conf.sample Tue Nov 21 10:23:37 2006 --- sigres-0.1.2/src/backend/utils/misc/postgresql.conf.sample Fri Feb 16 09:22:08 2007 *************** *** 171,176 **** --- 171,183 ---- #archive_timeout = 0 # force a logfile segment switch after this # many seconds; 0 is off + # - Accelerating WAL *IF* you have UPS - + #sigres = off # turns sigres mode on or off + # in default, sigres == off + # without UPS, you never turn on sigres + # if sigres == on, then, + # both of "fsync" and "full_page_writes" + # are turned off. #--------------------------------------------------------------------------- # QUERY TUNING diff -c -r postgresql-8.2.1/src/bin/psql/sql_help.h sigres-0.1.2/src/bin/psql/sql_help.h *** postgresql-8.2.1/src/bin/psql/sql_help.h Sat Jan 6 14:22:23 2007 --- sigres-0.1.2/src/bin/psql/sql_help.h Sat Feb 10 23:57:54 2007 *************** *** 3,9 **** * *** generated from the DocBook documentation. * * generated by ! * /usr/local/bin/suidperl create_help.pl ../../../doc/src/sgml/ref sql_help.h * */ --- 3,9 ---- * *** generated from the DocBook documentation. * * generated by ! * /usr/bin/perl create_help.pl ../../../doc/src/sgml/ref sql_help.h * */ Only in sigres-0.1.2/src/include: debug.h diff -c -r postgresql-8.2.1/src/include/miscadmin.h sigres-0.1.2/src/include/miscadmin.h *** postgresql-8.2.1/src/include/miscadmin.h Fri Oct 20 03:32:47 2006 --- sigres-0.1.2/src/include/miscadmin.h Fri Feb 16 09:53:40 2007 *************** *** 202,207 **** --- 202,208 ---- extern bool allowSystemTableMods; extern DLLIMPORT int work_mem; extern DLLIMPORT int maintenance_work_mem; + extern bool enableSigres; /* SIGRES */ extern int VacuumCostPageHit; extern int VacuumCostPageMiss; *************** *** 324,326 **** --- 325,328 ---- extern void process_local_preload_libraries(void); #endif /* MISCADMIN_H */ + diff -c -r postgresql-8.2.1/src/include/postgres.h sigres-0.1.2/src/include/postgres.h *** postgresql-8.2.1/src/include/postgres.h Fri Jul 14 01:49:18 2006 --- sigres-0.1.2/src/include/postgres.h Fri Feb 16 10:38:45 2007 *************** *** 544,546 **** --- 544,552 ---- typedef int4 aclitem; /* PHONY definition for catalog use only */ #endif /* POSTGRES_H */ + + /* ---------------------------------------------------------------- + * Section 5: Sigres extention + * ---------------------------------------------------------------- + */ + #define BGWRITER_PIDFILE "/tmp/bgwriter.pid" diff -c -r postgresql-8.2.1/src/interfaces/ecpg/preproc/pgc.c sigres-0.1.2/src/interfaces/ecpg/preproc/pgc.c *** postgresql-8.2.1/src/interfaces/ecpg/preproc/pgc.c Sat Jan 6 14:22:23 2007 --- sigres-0.1.2/src/interfaces/ecpg/preproc/pgc.c Sat Feb 10 23:57:54 2007 *************** *** 1,9 **** #line 2 "pgc.c" ! /* A lexical scanner generated by flex */ /* Scanner skeleton version: * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $ - * $FreeBSD: src/usr.bin/lex/flex.skl,v 1.8 2004/01/06 19:03:44 nectar Exp $ */ #define FLEX_SCANNER --- 1,8 ---- #line 2 "pgc.c" ! /* A lexical scanner generated by flex*/ /* Scanner skeleton version: * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $ */ #define FLEX_SCANNER *************** *** 11,16 **** --- 10,16 ---- #define YY_FLEX_MINOR_VERSION 5 #include + #include /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ *************** *** 24,30 **** #ifdef __cplusplus #include - #include /* Use prototypes in function declarations. */ #define YY_USE_PROTOS --- 24,29 ---- *************** *** 136,141 **** --- 135,149 ---- #define unput(c) yyunput( c, yytext_ptr ) + /* Some routines like yy_flex_realloc() are emitted as static but are + not called by all lexers. This generates warnings in some compilers, + notably GCC. Arrange to suppress these. */ + #ifdef __GNUC__ + #define YY_MAY_BE_UNUSED __attribute__((unused)) + #else + #define YY_MAY_BE_UNUSED + #endif + /* The following is because we cannot portably get our hands on size_t * (without autoconf's help, which isn't available because we want * flex-generated scanners to compile on their own). *************** *** 242,248 **** YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); static void *yy_flex_alloc YY_PROTO(( yy_size_t )); ! static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); static void yy_flex_free YY_PROTO(( void * )); #define yy_new_buffer yy_create_buffer --- 250,256 ---- YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); static void *yy_flex_alloc YY_PROTO(( yy_size_t )); ! static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )) YY_MAY_BE_UNUSED; static void yy_flex_free YY_PROTO(( void * )); #define yy_new_buffer yy_create_buffer *************** *** 1340,1346 **** * Note that xcstart must appear before operator, as explained above! * Also whitespace (comment) must appear before operator. */ ! #line 1344 "pgc.c" /* Macros after this point can all be overridden by user definitions in * section 1. --- 1348,1354 ---- * Note that xcstart must appear before operator, as explained above! * Also whitespace (comment) must appear before operator. */ ! #line 1352 "pgc.c" /* Macros after this point can all be overridden by user definitions in * section 1. *************** *** 1488,1494 **** YY_DECL { register yy_state_type yy_current_state; ! register char *yy_cp, *yy_bp; register int yy_act; #line 324 "pgc.l" --- 1496,1502 ---- YY_DECL { register yy_state_type yy_current_state; ! register char *yy_cp = NULL, *yy_bp = NULL; register int yy_act; #line 324 "pgc.l" *************** *** 1499,1505 **** token_start = NULL; ! #line 1503 "pgc.c" if ( yy_init ) { --- 1507,1513 ---- token_start = NULL; ! #line 1511 "pgc.c" if ( yy_init ) { *************** *** 1559,1565 **** yy_find_action: yy_current_state = *--yy_state_ptr; yy_lp = yy_accept[yy_current_state]; - goto find_rule; /* avoid `defined but not used' warning */ find_rule: /* we branch to this label when backing up */ for ( ; ; ) /* until we find what rule we matched */ { --- 1567,1572 ---- *************** *** 2961,2967 **** #line 1181 "pgc.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK ! #line 2965 "pgc.c" case YY_END_OF_BUFFER: { --- 2968,2974 ---- #line 1181 "pgc.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK ! #line 2972 "pgc.c" case YY_END_OF_BUFFER: { *************** *** 3337,3342 **** --- 3344,3350 ---- #endif /* ifndef YY_NO_UNPUT */ + #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput() #else *************** *** 3410,3416 **** return c; } ! #ifdef YY_USE_PROTOS void yyrestart( FILE *input_file ) --- 3418,3424 ---- return c; } ! #endif /* YY_NO_INPUT */ #ifdef YY_USE_PROTOS void yyrestart( FILE *input_file ) *************** *** 3521,3531 **** } - #ifndef YY_ALWAYS_INTERACTIVE - #ifndef YY_NEVER_INTERACTIVE - extern int isatty YY_PROTO(( int )); - #endif - #endif #ifdef YY_USE_PROTOS void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) --- 3529,3534 ---- diff -c -r postgresql-8.2.1/src/interfaces/libpq/libpq.rc sigres-0.1.2/src/interfaces/libpq/libpq.rc *** postgresql-8.2.1/src/interfaces/libpq/libpq.rc Sat Jan 6 14:22:19 2007 --- sigres-0.1.2/src/interfaces/libpq/libpq.rc Fri Feb 16 11:25:08 2007 *************** *** 1,8 **** #include VS_VERSION_INFO VERSIONINFO ! FILEVERSION 8,2,1,7006 ! PRODUCTVERSION 8,2,1,7006 FILEFLAGSMASK 0x3fL FILEFLAGS 0 FILEOS VOS__WINDOWS32 --- 1,8 ---- #include VS_VERSION_INFO VERSIONINFO ! FILEVERSION 8,2,1,7047 ! PRODUCTVERSION 8,2,1,7047 FILEFLAGSMASK 0x3fL FILEFLAGS 0 FILEOS VOS__WINDOWS32