Hitesh Patel <hitesh@presys.com> writes:
> I just upgraded to postgresql 7.0 and was restoring my data when I
> noticed I had a function defined that used the builtin textpos()
> function. This function was available in 6.5.3 but seems to have
> dissapeared in 7.0.. Is there any way to restore this function or has
> it been renamed to something else (i found strpos() but i'm not sure if
> that does exactly the same thing).
Looks like it's called position() now --- that function has the same OID
(849) as 6.5's textpos(), and even more damningly points to a C function
that's still called textpos():
regression=# select oid,* from pg_proc where oid=849;
oid | proname | proowner | prolang | proisinh | proistrusted | proiscachable |
pronargs | proretset | prorettype | proargtypes | probyte_pct | properbyte_cpu
| propercall_cpu | prooutin_ratio | prosrc | probin
-----+----------+----------+---------+----------+--------------+---------------+
----------+-----------+------------+-------------+-------------+----------------
+----------------+----------------+---------+--------
849 | position | 256 | 11 | f | t | t |
2 | f | 23 | 25 25 | 100 | 0
| 1 | 0 | textpos | -
(1 row)
We've made a number of changes in 7.0 to bring function and type names
into alignment with the SQL92 standard. The incompatibilities I knew
about were in date/time types and functions, but I guess this is another
one ...
If you really don't want to update your app's code just yet, you can
install a pg_proc entry that defines textpos() with a CREATE FUNCTION
command. But the long-term answer is to fix your code to conform with
the standard.
regards, tom lane