Calling sqlite_create_function() overrides builtin functions.

On Tue, 2004-01-27 at 07:36, Drew, Stephen wrote:
> So how does SQLite distinguish between the built-in:
> 
>     { "like",       2, SQLITE_NUMERIC, likeFunc   },
> 
> and a user-defined function such as 
> 
>     { "like",       2, SQLITE_NUMERIC, my_like_function   },
> 
> then?
> 
> -----Original Message-----
> From: Mrs. Brisby [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, January 27, 2004 12:27 PM
> To: [EMAIL PROTECTED]
> Cc: D. Richard Hipp; [EMAIL PROTECTED]
> Subject: Re: [sqlite] escaping " and % in sql statements
> 
> 
> On Mon, 2004-01-26 at 09:08, [EMAIL PROTECTED] wrote:
> > "D. Richard Hipp" <[EMAIL PROTECTED]> writes:
> > 
> > > As an interim workaround, you could defined your own
> > > "like()" function using the sqlite_create_function() API
> > > that implemented built-in escapes.  Any user-defined
> > > function named "like()" is used to implement the LIKE
> > > keyword of SQL.
> > 
> > That seems pretty dangerous, since no one would expect that function name
> to
> > exist as a public symbol in a library.  I would suggest changing the name
> of
> > the internal like() function to sqlite_like() or some equivalent, to avoid
> > potential problems.  Being able to overload internal functions could be a
> nice
> > feature (which should be documented) but it seems the names should be
> clearly
> > associated with sqlite.
> 
> I do not think you understand.
> 
> SQLite has no "deep magic" allowing it to figure out what you call your
> own symbols: The built-in like() function is a static symbol in func.c
> called "likeFunc", and your code has nothing at all to do with this.
> 
> You make a call like this:
> 
> sqlite_create_function(p, "like", 2, my_like_func, 0);
> 
> after defining your own function; in this example it's called
> "my_like_function" - but you can certainly call it whatever you like,
> including sqlite_like, if you're so inclined.
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to