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



Attachment: pgctl_win32service_rel_dbpath_v2.patch
Description: pgctl_win32service_rel_dbpath_v2.patch

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to