Re: [HACKERS] more dirmod CYGWIN

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Reini Urban <rurban(at)x-ray(dot)at>
Cc: pgsql-hackers(at)postgresql(dot)org, pgsql-patches(at)postgresql(dot)org
Subject: Re: [HACKERS] more dirmod CYGWIN
Date: 2004-09-10 16:16:40
Message-ID: 200409101616.i8AGGeS04327@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers pgsql-hackers-win32 pgsql-patches


I have applied all parts of your patch now.

---------------------------------------------------------------------------

Reini Urban wrote:
> Reini Urban schrieb:
> > [BTW: there's no need to cc all, I'm subscribed to most lists]
> > Reini Urban schrieb:
> >> Bruce Momjian schrieb:
> >>> Andrew Dunstan wrote:
> >>>> Reini Urban wrote:
> >>>>
> >>>>> FYI: WIN32 is also defined because <windows.h> is included.
> >>>>> (/usr/incluse/w32api/windef.h)
> >>>>> If you want this or that, do proper nesting, and use #else.
> >>>>
> >>>> Ugh, yes. A little experimentation shows that __WIN32__ is defined
> >>>> for MinGW only, but WIN32 is for both. I wonder how we missed that
> >>>> in various places. Maybe we need a little audit of the use of WIN32.
> >>>
> >>> OK, fixed. We should not be using __WIN32__, just Win32. The proper
> >>> test is #ifndef __CYGWIN__.
> >>
> >> very good. just think of future MSVC versions.
> >>
> >> Just one more glitch:
> >>
> >> #undef rename
> >> #undef unlink
> >>
> >> has to be defined before #include <unistd.h> on CYGWIN, because
> >> unistd.h has the declarations for rename and unlink, which are
> >> required inside the pg versions.
> >> without the #undef, the macros which rename rename to pgrename, ...
> >> are still effective, which will lead to undeclared/falsely
> >> autodeclared rename/unlink parts.
> >>
> >> I don't know for mingw, if they need the pgrename/pgunlink declaration.
> >> For my CYGWIN patch I moved those two lines before #include <unistd.h>.
> >
> >
> > FYI: latest cvs HEAD, without any patches.
> >
> > make runs now through with the expected implicit declaration warnings,
> > but without any errors. Esp. the CYGWIN-specific SHMLIB linking errors
> > are now gone. good!
> >
> > make[2]: Entering directory `/usr/src/postgresql/pgsql/src/port'
> > gcc -O2 -fno-strict-aliasing -Wall -Wmissing-prototypes
> > -Wmissing-declarations -I../../src/port -I../../src/include -c -o
> > dirmod.o dirmod.c
> > dirmod.c: In Funktion >>pgunlink<<:
> > dirmod.c:113: Warnung: implicit declaration of function `unlink'
> > dirmod.c: In Funktion >>rmt_cleanup<<:
> > dirmod.c:267: Warnung: implicit declaration of function `pgport_pfree'
> > dirmod.c: In Funktion >>rmtree<<:
> > dirmod.c:318: Warnung: implicit declaration of function `pgport_palloc'
> > dirmod.c:318: Warnung: Zuweisung erzeugt Zeiger von Ganzzahl ohne
> > Typkonvertierung
> > dirmod.c:333: Warnung: implicit declaration of function `pgport_pstrdup'
> > dirmod.c:333: Warnung: Zuweisung erzeugt Zeiger von Ganzzahl ohne
> > Typkonvertierung
> >
> > make check hangs at:
> > "running on port 65432 with pid 2304
> > ============== creating database "regression" ==============
> > CREATE DATABASE
> > ALTER DATABASE
> > ============== dropping regression test user accounts ==============
> > ============== installing PL/pgSQL ==============
> > ============== running regression test queries ==============
> > parallel group (13 tests): int2 int4 int8 float4 name varchar numeric"
> >
> > which means rename works ok. probably the false implicit declarations in
> > the memory code break it.
> >
> > I'll come with another patch later.
>
> parallel tests hang on cygwin. this is expected.
>
> attached is the postmaster stackdump on the parallel test (if you care),
> and the IPC's during the parallel test (not quite busy...):
> $ ipcs
> Message Queues:
> T ID KEY MODE OWNER GROUP
>
> Shared Memory:
> T ID KEY MODE OWNER GROUP
> m 1966080 65432001 --rw------- rurban root
>
> Semaphores:
> T ID KEY MODE OWNER GROUP
> s 1966080 65432001 --rw------- rurban root
> s 1966081 65432002 --rw------- rurban root
> s 1966082 65432003 --rw------- rurban root
> s 1966083 65432004 --rw------- rurban root
> s 1966084 65432005 --rw------- rurban root
> s 1966085 65432006 --rw------- rurban root
> s 1966086 65432007 --rw------- rurban root
>
> with the serial schedule all tests but the last pass.
> test tablespace ... FAILED
>
> This is the tail of the postmaster log for this failing test.
>
> ERROR: cannot alter table "fullname" because column "people"."fn" uses
> its rowtype
> ERROR: could not create symbolic link
> "/usr/src/postgresql/pgsql/src/test/regress/./tmp_check/data/pg_tblspc/155118":
> No error
> ERROR: tablespace "testspace" does not exist
> ERROR: schema "testschema" does not exist
> ERROR: schema "testschema" does not exist
> ERROR: schema "testschema" does not exist
> ERROR: schema "testschema" does not exist
> ERROR: could not set permissions on directory "/no/such/location": No
> such file or directory
> ERROR: tablespace "nosuchspace" does not exist
> ERROR: tablespace "testspace" does not exist
> ERROR: schema "testschema" does not exist
> ERROR: tablespace "testspace" does not exist
> LOG: received smart shutdown request
> LOG: shutting down
> LOG: database system is shut down
>
> attached is the regression.diffs,
>
> and also the overall patch against current CVS HEAD I used for this run.
> (the move-#undef patch is probably already applied regarding bruce)
> this should be applied.
> --
> Reini Urban
> http://xarch.tu-graz.ac.at/home/rurban/

> *** ./expected/tablespace.out Fri Sep 10 13:42:08 2004
> --- ./results/tablespace.out Fri Sep 10 13:53:22 2004
> ***************
> *** 1,34 ****
> -- create a tablespace we can use
> CREATE TABLESPACE testspace LOCATION '/usr/src/postgresql/pgsql/src/test/regress/testtablespace';
> -- create a schema in the tablespace
> CREATE SCHEMA testschema TABLESPACE testspace;
> -- sanity check
> SELECT nspname, spcname FROM pg_catalog.pg_tablespace t, pg_catalog.pg_namespace n
> where n.nsptablespace = t.oid and n.nspname = 'testschema';
> nspname | spcname
> ! ------------+-----------
> ! testschema | testspace
> ! (1 row)
>
> -- try a table
> CREATE TABLE testschema.foo (i int);
> SELECT relname, spcname FROM pg_catalog.pg_tablespace t, pg_catalog.pg_class c
> where c.reltablespace = t.oid AND c.relname = 'foo';
> relname | spcname
> ! ---------+-----------
> ! foo | testspace
> ! (1 row)
>
> INSERT INTO testschema.foo VALUES(1);
> INSERT INTO testschema.foo VALUES(2);
> -- index
> CREATE INDEX foo_idx on testschema.foo(i);
> SELECT relname, spcname FROM pg_catalog.pg_tablespace t, pg_catalog.pg_class c
> where c.reltablespace = t.oid AND c.relname = 'foo_idx';
> relname | spcname
> ! ---------+-----------
> ! foo_idx | testspace
> ! (1 row)
>
> -- Will fail with bad path
> CREATE TABLESPACE badspace LOCATION '/no/such/location';
> --- 1,37 ----
> -- create a tablespace we can use
> CREATE TABLESPACE testspace LOCATION '/usr/src/postgresql/pgsql/src/test/regress/testtablespace';
> + ERROR: could not create symbolic link "/usr/src/postgresql/pgsql/src/test/regress/./tmp_check/data/pg_tblspc/155118": No error
> -- create a schema in the tablespace
> CREATE SCHEMA testschema TABLESPACE testspace;
> + ERROR: tablespace "testspace" does not exist
> -- sanity check
> SELECT nspname, spcname FROM pg_catalog.pg_tablespace t, pg_catalog.pg_namespace n
> where n.nsptablespace = t.oid and n.nspname = 'testschema';
> nspname | spcname
> ! ---------+---------
> ! (0 rows)
>
> -- try a table
> CREATE TABLE testschema.foo (i int);
> + ERROR: schema "testschema" does not exist
> SELECT relname, spcname FROM pg_catalog.pg_tablespace t, pg_catalog.pg_class c
> where c.reltablespace = t.oid AND c.relname = 'foo';
> relname | spcname
> ! ---------+---------
> ! (0 rows)
>
> INSERT INTO testschema.foo VALUES(1);
> + ERROR: schema "testschema" does not exist
> INSERT INTO testschema.foo VALUES(2);
> + ERROR: schema "testschema" does not exist
> -- index
> CREATE INDEX foo_idx on testschema.foo(i);
> + ERROR: schema "testschema" does not exist
> SELECT relname, spcname FROM pg_catalog.pg_tablespace t, pg_catalog.pg_class c
> where c.reltablespace = t.oid AND c.relname = 'foo_idx';
> relname | spcname
> ! ---------+---------
> ! (0 rows)
>
> -- Will fail with bad path
> CREATE TABLESPACE badspace LOCATION '/no/such/location';
> ***************
> *** 38,45 ****
> ERROR: tablespace "nosuchspace" does not exist
> -- Fail, not empty
> DROP TABLESPACE testspace;
> ! ERROR: tablespace "testspace" is not empty
> DROP SCHEMA testschema CASCADE;
> ! NOTICE: drop cascades to table testschema.foo
> -- Should succeed
> DROP TABLESPACE testspace;
> --- 41,49 ----
> ERROR: tablespace "nosuchspace" does not exist
> -- Fail, not empty
> DROP TABLESPACE testspace;
> ! ERROR: tablespace "testspace" does not exist
> DROP SCHEMA testschema CASCADE;
> ! ERROR: schema "testschema" does not exist
> -- Should succeed
> DROP TABLESPACE testspace;
> + ERROR: tablespace "testspace" does not exist
>
> ======================================================================
>

> --- ./src/include/utils/palloc.h.orig 2004-08-29 05:13:11.000000000 +0100
> +++ ./src/include/utils/palloc.h 2004-09-10 13:33:04.587653100 +0100
> @@ -80,7 +80,7 @@
>
> #define pstrdup(str) MemoryContextStrdup(CurrentMemoryContext, (str))
>
> -#ifdef WIN32
> +#if defined(WIN32) || defined(__CYGWIN__)
> extern void *pgport_palloc(Size sz);
> extern char *pgport_pstrdup(const char *str);
> extern void pgport_pfree(void *pointer);
> --- ./src/port/dirmod.c.orig 2004-09-10 10:29:36.500414700 +0100
> +++ ./src/port/dirmod.c 2004-09-10 13:33:53.790148300 +0100
> @@ -21,6 +21,9 @@
> #include "postgres_fe.h"
> #endif
>
> +#undef rename
> +#undef unlink
> +
> #include <unistd.h>
> #include <dirent.h>
> #include <sys/stat.h>
> @@ -33,9 +36,6 @@
>
> #include "miscadmin.h"
>
> -#undef rename
> -#undef unlink
> -
> #ifndef __CYGWIN__
> #include <winioctl.h>
> #else

>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo(at)postgresql(dot)org so that your
> message can get through to the mailing list cleanly

--
Bruce Momjian | http://candle.pha.pa.us
pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 2004-09-10 16:36:09 Re: row wise comparison broken
Previous Message Bruce Momjian 2004-09-10 16:13:58 Re: APR 1.0 released

Browse pgsql-hackers-win32 by date

  From Date Subject
Next Message Bruce Momjian 2004-09-10 16:30:55 Re: VC++ psql build broken
Previous Message Dave Page 2004-09-10 16:03:51 Installer crash - cannot readglobal/config_exec_params

Browse pgsql-patches by date

  From Date Subject
Next Message Reini Urban 2004-09-10 18:10:50 Re: [HACKERS] more dirmod CYGWIN
Previous Message Neil Conway 2004-09-10 14:31:03 Re: contrib/dbmirror