Обсуждение: dynamic_library_path on Win32
I'm using CVS HEAD in a windows environment. I'm trying to start the postmaster using "postmaster -c dynamic_library_path=C:/foo/bar". It starts just fine, then, when I ask it to load a module, an error is generating stating: ERROR: component in parameter "dynamic_library_path" is not an absolute path I added a trace to find out what it thinks the path is. It prints "C". Obviously it treats ':' as a path separator somewhere. Is that the intended behavior on win32? Kind regards, Thomas Hallgren
Thomas Hallgren wrote: >I'm using CVS HEAD in a windows environment. I'm trying to start the >postmaster using "postmaster -c dynamic_library_path=C:/foo/bar". It starts >just fine, then, when I ask it to load a module, an error is generating >stating: > >ERROR: component in parameter "dynamic_library_path" is not an absolute path > >I added a trace to find out what it thinks the path is. It prints "C". >Obviously it treats ':' as a path separator somewhere. Is that the intended >behavior on win32? > > > You've found a bug. Clearly we need to adjust the parsing of dynamic_library_path and probably preload_libraries for Win32. cheers andrew
"Thomas Hallgren" <thhal@mailblocks.com> writes: > I'm using CVS HEAD in a windows environment. I'm trying to start the > postmaster using "postmaster -c dynamic_library_path=C:/foo/bar". It starts > just fine, then, when I ask it to load a module, an error is generating > stating: > ERROR: component in parameter "dynamic_library_path" is not an absolute path > I added a trace to find out what it thinks the path is. It prints "C". > Obviously it treats ':' as a path separator somewhere. Yeah. dynamic_library_path follows the universal Unix convention that search path components are separated by ':'. Is there any equivalent convention in Windows? regards, tom lane
>> I'm using CVS HEAD in a windows environment. I'm trying to start the >> postmaster using "postmaster -c >dynamic_library_path=C:/foo/bar". It starts >> just fine, then, when I ask it to load a module, an error is >generating >> stating: > >> ERROR: component in parameter "dynamic_library_path" is not >an absolute path > >> I added a trace to find out what it thinks the path is. It >prints "C". >> Obviously it treats ':' as a path separator somewhere. > >Yeah. dynamic_library_path follows the universal Unix convention that >search path components are separated by ':'. Is there any equivalent >convention in Windows? ';' is what's used in PATH, and several other such places. //Magnus
Yes, on windows, you use a semicolon as path separator. regards, - thomas ----- Original Message ----- From: "Tom Lane" <tgl@sss.pgh.pa.us> To: "Thomas Hallgren" <thhal@mailblocks.com> Cc: <pgsql-hackers@postgresql.org> Sent: Saturday, May 29, 2004 17:20 Subject: Re: [HACKERS] dynamic_library_path on Win32 > "Thomas Hallgren" <thhal@mailblocks.com> writes: > > I'm using CVS HEAD in a windows environment. I'm trying to start the > > postmaster using "postmaster -c dynamic_library_path=C:/foo/bar". It starts > > just fine, then, when I ask it to load a module, an error is generating > > stating: > > > ERROR: component in parameter "dynamic_library_path" is not an absolute path > > > I added a trace to find out what it thinks the path is. It prints "C". > > Obviously it treats ':' as a path separator somewhere. > > Yeah. dynamic_library_path follows the universal Unix convention that > search path components are separated by ':'. Is there any equivalent > convention in Windows? > > regards, tom lane >
Tom Lane wrote: >"Thomas Hallgren" <thhal@mailblocks.com> writes: > > >>I'm using CVS HEAD in a windows environment. I'm trying to start the >>postmaster using "postmaster -c dynamic_library_path=C:/foo/bar". It starts >>just fine, then, when I ask it to load a module, an error is generating >>stating: >> >> > > > >>ERROR: component in parameter "dynamic_library_path" is not an absolute path >> >> > > > >>I added a trace to find out what it thinks the path is. It prints "C". >>Obviously it treats ':' as a path separator somewhere. >> >> > >Yeah. dynamic_library_path follows the universal Unix convention that >search path components are separated by ':'. Is there any equivalent >convention in Windows? > > > src/port/exec.c has this: #ifdef WIN32 #define PATHSEP ';' #else #define PATHSEP ':' #endif It should probably move to c.h. cheers andrew
Andrew Dunstan <andrew@dunslane.net> writes: > You've found a bug. Clearly we need to adjust the parsing of > dynamic_library_path and probably preload_libraries for Win32. Yup. Using PATHSEP sounded reasonable to me. Any volunteer to fix this? (Don't forget to patch the docs for these variables, too.) regards, tom lane
I can do it but will be a few days until I get to it. --------------------------------------------------------------------------- Tom Lane wrote: > Andrew Dunstan <andrew@dunslane.net> writes: > > You've found a bug. Clearly we need to adjust the parsing of > > dynamic_library_path and probably preload_libraries for Win32. > > Yup. Using PATHSEP sounded reasonable to me. Any volunteer to fix > this? (Don't forget to patch the docs for these variables, too.) > > regards, tom lane > > ---------------------------(end of broadcast)--------------------------- > TIP 4: Don't 'kill -9' the postmaster > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001+ If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania19073