Обсуждение: Re: [PATCHES] Changes in /contrib/fulltextindex

Поиск
Список
Период
Сортировка

Re: [PATCHES] Changes in /contrib/fulltextindex

От
"Christopher Kings-Lynne"
Дата:
Hi Florian,

> > The most recent patches were submitted by me, so I guess you
> could call me
> > the defacto "maintainer".
>
> Okay - glad someone answered me :)

Actually, I replied to you 5 minutes after you posted, but I think my emails
were being stalled somewhere...

> I will - please give me a few days for an up to date documentation
> concerning the changed and new features.
>
> And yes - I really appreciate your offer for code review!

To generate the diff, do this:

cd contrib/fulltextindex
cvs diff -c > ftidiff.txt

Then email -hackers the ftidiff.txt.

> > > The changes made include:
> > >
> > > + Changed the split up behaviour from checking via isalpha to
> > >   using a list of delimiters as isalpha is a pain used with
> > >   data containing german umlauts, etc. ATM this list contains:
> > >
> > >   " ,;.:-_#/*+~^°!?\"\\§$%&()[]{}=<>|0123456789\n\r\t@µ"
> >
> > Good idea.  Is there a locale-aware version of isalpha anywhere?
>
> If there is - I couldn't find it. I did find a lot of frustated
> posts about
> isalpha and locale-awareness although.

Yeah, I can't find anything in the man pages either.  Maybe we can ask the
list.  People?

> > List:  what should we do about the backward compatibility problem?
>
> I think the only reasonable way for keeping backward compatibiliy might be
> to leave the old fti function alone and introduce a new one with
> the changes
> (e.g. ftia). Even another fti parameter which activates the new features
> breaks the compatibility concerning the call. Activiation via DEFINE is
> another option, but this requires messing around with the source code
> (although very little) on the user side. Maybe a ./configure option is a
> good way (but this is beyond my C and friends skills).

I think that creating a new function, called ftia or ftix or something is
the best solution.  I think I can handle doing that...

Chris





Re: [PATCHES] Changes in /contrib/fulltextindex

От
Tom Lane
Дата:
"Christopher Kings-Lynne" <chriskl@familyhealth.com.au> writes:
> Good idea.  Is there a locale-aware version of isalpha anywhere?
>> 
>> If there is - I couldn't find it. I did find a lot of frustated
>> posts about isalpha and locale-awareness although.

> Yeah, I can't find anything in the man pages either.  Maybe we can ask the
> list.  People?

Huh?  isalpha() *is* locale-aware according to the ANSI C spec.
For instance, the attached test program finds 52 alpha characters
in C locale and 114 in fr_FR locale under HPUX.

I am not at all sure that this aspect of Florian's change is a good
idea, as it appears to eliminate locale-awareness in favor of a hard
coded delimiter list.
        regards, tom lane


#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <locale.h>

int main(int argc, char **argv)
{ int i;
 setlocale(LC_ALL, "");
 for (i = 0; i < 256; i++)   if (isalpha(i))     printf("%d    %c\n", i, i);
 return 0;
}




Re: [PATCHES] Changes in /contrib/fulltextindex

От
"Florian Helmberger"
Дата:
Hi.

> Huh?  isalpha() *is* locale-aware according to the ANSI C spec.
> For instance, the attached test program finds 52 alpha characters
> in C locale and 114 in fr_FR locale under HPUX.
>
> I am not at all sure that this aspect of Florian's change is a good
> idea, as it appears to eliminate locale-awareness in favor of a hard
> coded delimiter list.

Just tried your example - you're right of course! I will remove the hard
coded delimited list and replace it with the proper calls as shown in the
code you've sent.

Florian





Re: [PATCHES] Changes in /contrib/fulltextindex

От
Tom Lane
Дата:
"Florian Helmberger" <f.helmberger@uptime.at> writes:
> Just tried your example - you're right of course! I will remove the hard
> coded delimited list and replace it with the proper calls as shown in the
> code you've sent.

Well, that was a quick hack not clean code.  Coding rules for stuff
inside the backend are- don't do setlocale; it's already been done.- explicitly cast the argument of any ctype.h macro
to (unsigned char).
 

Without the latter you have portability problems depending on whether
chars are signed or unsigned.
        regards, tom lane




Re: [PATCHES] Changes in /contrib/fulltextindex

От
Tom Lane
Дата:
"Christopher Kings-Lynne" <chriskl@familyhealth.com.au> writes:
> I think that creating a new function, called ftia or ftix or something is
> the best solution.  I think I can handle doing that...

Why change the name?  If it's got a different argument list then you
can just overload the same old name.
        regards, tom lane




Re: [PATCHES] Changes in /contrib/fulltextindex

От
"Christopher Kings-Lynne"
Дата:
> > I am not at all sure that this aspect of Florian's change is a good
> > idea, as it appears to eliminate locale-awareness in favor of a hard
> > coded delimiter list.
>
> Just tried your example - you're right of course! I will remove the hard
> coded delimited list and replace it with the proper calls as shown in the
> code you've sent.

OK Florian, submit a diff with your changes and I'll give them a run.

I forgot that we could just overload functions with different parameter
lists!  That sounds like a good idea.

Chris






Re: [PATCHES] Changes in /contrib/fulltextindex

От
Bruce Momjian
Дата:
Florian, I haven't seen this patch yet.  Did you send it in?

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

Florian Helmberger wrote:
> Hi.
> 
> > Huh?  isalpha() *is* locale-aware according to the ANSI C spec.
> > For instance, the attached test program finds 52 alpha characters
> > in C locale and 114 in fr_FR locale under HPUX.
> >
> > I am not at all sure that this aspect of Florian's change is a good
> > idea, as it appears to eliminate locale-awareness in favor of a hard
> > coded delimiter list.
> 
> Just tried your example - you're right of course! I will remove the hard
> coded delimited list and replace it with the proper calls as shown in the
> code you've sent.
> 
> Florian
> 
> 
> 
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
> 
> 
> 

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


Re: [PATCHES] Changes in /contrib/fulltextindex

От
"Christopher Kings-Lynne"
Дата:
Yeah, I've got it Bruce - I still haven't had time to look into it and I
really don't know what to do about the backward compatibility issue.  How do
I set up 2 identically named C functions with different parameter lists?

Chris

> -----Original Message-----
> From: Bruce Momjian [mailto:pgman@candle.pha.pa.us]
> Sent: Friday, 12 July 2002 6:02 AM
> To: Florian Helmberger
> Cc: Tom Lane; Christopher Kings-Lynne; Hackers
> Subject: Re: [HACKERS] [PATCHES] Changes in /contrib/fulltextindex
>
>
>
> Florian, I haven't seen this patch yet.  Did you send it in?
>
> ------------------------------------------------------------------
> ---------
>
> Florian Helmberger wrote:
> > Hi.
> >
> > > Huh?  isalpha() *is* locale-aware according to the ANSI C spec.
> > > For instance, the attached test program finds 52 alpha characters
> > > in C locale and 114 in fr_FR locale under HPUX.
> > >
> > > I am not at all sure that this aspect of Florian's change is a good
> > > idea, as it appears to eliminate locale-awareness in favor of a hard
> > > coded delimiter list.
> >
> > Just tried your example - you're right of course! I will remove the hard
> > coded delimited list and replace it with the proper calls as
> shown in the
> > code you've sent.
> >
> > Florian
> >
> >
> >
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
> >
> >
> >
>
> --
>   Bruce Momjian                        |  http://candle.pha.pa.us
>   pgman@candle.pha.pa.us               |  (610) 853-3000
>   +  If your life is a hard drive,     |  830 Blythe Avenue
>   +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026
>



Re: [PATCHES] Changes in /contrib/fulltextindex

От
Bruce Momjian
Дата:
Christopher Kings-Lynne wrote:
> Yeah, I've got it Bruce - I still haven't had time to look into it and I
> really don't know what to do about the backward compatibility issue.  How do
> I set up 2 identically named C functions with different parameter lists?

Oh, that is easy.  When you CREATE FUNCTION, you just specify the
different params.  However, if you are calling it _from_ C, then it is
impossible.  Just break backward compatibility, I think was Tom's
suggestion, and I agree.

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


Re: [PATCHES] Changes in /contrib/fulltextindex

От
"Christopher Kings-Lynne"
Дата:
> Christopher Kings-Lynne wrote:
> > Yeah, I've got it Bruce - I still haven't had time to look into it and I
> > really don't know what to do about the backward compatibility
> issue.  How do
> > I set up 2 identically named C functions with different parameter lists?
>
> Oh, that is easy.  When you CREATE FUNCTION, you just specify the
> different params.  However, if you are calling it _from_ C, then it is
> impossible.  Just break backward compatibility, I think was Tom's
> suggestion, and I agree.

I mean, can I code up 2 functions called "fti" and put them both in the
fti.c and then have them both in the fti.so?  Then when CREATE FUNCTION is
run it will link to the correct function in the fti.so depending on the
parameter list?

It's easy for you guys to say "break backward", but you aren't using it ;)

Chris



Re: [PATCHES] Changes in /contrib/fulltextindex

От
Bruce Momjian
Дата:
Christopher Kings-Lynne wrote:
> > Christopher Kings-Lynne wrote:
> > > Yeah, I've got it Bruce - I still haven't had time to look into it and I
> > > really don't know what to do about the backward compatibility
> > issue.  How do
> > > I set up 2 identically named C functions with different parameter lists?
> >
> > Oh, that is easy.  When you CREATE FUNCTION, you just specify the
> > different params.  However, if you are calling it _from_ C, then it is
> > impossible.  Just break backward compatibility, I think was Tom's
> > suggestion, and I agree.
> 
> I mean, can I code up 2 functions called "fti" and put them both in the
> fti.c and then have them both in the fti.so?  Then when CREATE FUNCTION is
> run it will link to the correct function in the fti.so depending on the
> parameter list?

Call them different C names, but name them the same in CREATE FUNCTION
funcname.  Just use a different symbol name here:
      CREATE [ OR REPLACE ] FUNCTION name ( [ argtype [, ...] ] )                                     ^^^^ same here
     RETURNS rettype          AS 'obj_file', 'link_symbol'                         ^^^^^^^^^^^^^ different here
LANGUAGE langname          [ WITH ( attribute [, ...] ) ]
 


Does that help?

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


Re: [PATCHES] Changes in /contrib/fulltextindex

От
"Christopher Kings-Lynne"
Дата:
> Call them different C names, but name them the same in CREATE FUNCTION
> funcname.  Just use a different symbol name here:
> 
>        CREATE [ OR REPLACE ] FUNCTION name ( [ argtype [, ...] ] )
>                                       ^^^^ same here
>            RETURNS rettype
>            AS 'obj_file', 'link_symbol'
>                           ^^^^^^^^^^^^^ different here
>            LANGUAGE langname
>            [ WITH ( attribute [, ...] ) ]
> 
> 
> Does that help?

Yes, I get it now - I should be able to set it up quite nicely.

Chris



Re: [PATCHES] Changes in /contrib/fulltextindex

От
Bruce Momjian
Дата:
Christopher Kings-Lynne wrote:
> > Call them different C names, but name them the same in CREATE FUNCTION
> > funcname.  Just use a different symbol name here:
> > 
> >        CREATE [ OR REPLACE ] FUNCTION name ( [ argtype [, ...] ] )
> >                                       ^^^^ same here
> >            RETURNS rettype
> >            AS 'obj_file', 'link_symbol'
> >                           ^^^^^^^^^^^^^ different here
> >            LANGUAGE langname
> >            [ WITH ( attribute [, ...] ) ]
> > 
> > 
> > Does that help?
> 
> Yes, I get it now - I should be able to set it up quite nicely.

Yea, this function overloading is a nifty feature.  No wonder C++ has
it.

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


Re: [PATCHES] Changes in /contrib/fulltextindex

От
"Florian Helmberger"
Дата:
Hi.

> Florian, I haven't seen this patch yet.  Did you send it in?

Yes, I sent it to Christopher for reviewing, as allready mentioned by
himself :)
I still had not the time to update the docs though, hope to get this done
next week.

Florian



Re: [PATCHES] Changes in /contrib/fulltextindex

От
Bruce Momjian
Дата:
Florian Helmberger wrote:
> Hi.
> 
> > Florian, I haven't seen this patch yet.  Did you send it in?
> 
> Yes, I sent it to Christopher for reviewing, as allready mentioned by
> himself :)
> I still had not the time to update the docs though, hope to get this done
> next week.

Yes, I had an email exchange with Christopher last night and he is
working on the backward compatibility issues with overloaded function
parameters.

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026