On Tue, Jan 12, 2014 David Rowley wrote: >>I have found a case that PostgreSQL as win32 service does not start, if the >>data directory given as relative path. >>Error observed in this case is: >> "The PostgreSQL on Local Computer started and >> then stopped". >>This may happen because relative path given will be relative to path from >>where service is registered but >>the path from where WIN32 service execution gets invoked may be different and >>hence it won't be able >>to find the data directory. >>I have fixed the same by internally converting the relative path to absolute >>path as it is being done for executable file. >Hi, >I've not quite got around to testing this yet, but I think the patch is a good >idea as I can see that I can use a relative path when I start postgres.exe >from the command line, I guess the behaviour should likely be the same when >installed as a windows > service.
Thanks for reviewing and providing the first level of feedback.
>So, I've just been looking over this patch and I'm just wondering about a few
>things:
>In pgwin32_CommandLine you declare dbPath, it looks like you could declare
>this in the scope of; if (pg_config)
Yes I have declared the same in the scope of "if (pg_config) "
>In find_my_abs_path you're making a call to StrNCpy, I know you likely just
>used find_my_exec as an example here, but I'd say the use of StrNCpy is not
>really needed here and is a bit of a waste of cycles. I'd rather see strlcpy
>being used as strncpy
> will needlessly zero the remaining buffer space.
Yes you are right, it is much better to use strlcpy instead of
StrNCpy. I have modified the patch.
>Also in find_my_abs_path, I'm just wondering if the cwd variable is really
>needed, I think you could just use retpath each time and it would also save a
>little bit of copying that's done in join_path_components(). By the looks of
>it you can just call
> join_path_components(retpath, retpath, inpath). Perhaps some people would
> disagree, but I'm not really seeing the harm in it and it saves some copying
> too.
Yes I am also convinced with your suggestion. It really avoid one
level of copy.
I have seen that the similar mechanism is used in many places where
join_path_components() is called. So I think it should be OK to use in our case
also.
I have made the necessary changes for the same.
I have attached the changed patch. Please provide your further feedback, if any.
Thanks and Regards,
Kumar Rajeev Rastogi
pgctl_win32service_rel_dbpath_v2.patch
Description: pgctl_win32service_rel_dbpath_v2.patch
-- Sent via pgsql-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
