Обсуждение: Views->Create Script + Regular Expressions

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

Views->Create Script + Regular Expressions

От
Richard Broersma
Дата:
I expect many have experienced this before.

Views->Create Script does not prefix regular expressions strings with
E. (e.g. E'\\d').  -- does this have something to do with
"standard_conforming_strings = on"?

So each time a view is tinkered with, the user must find all
occurrences of the regular expression strings and re-apply the E.

Is there any way to get 'Create Script' to do this automatically?

-- 
Regards,
Richard Broersma Jr.


Re: Views->Create Script + Regular Expressions

От
Guillaume Lelarge
Дата:
On Tue, 2011-08-23 at 14:28 -0700, Richard Broersma wrote:
> I expect many have experienced this before.
> 
> Views->Create Script does not prefix regular expressions strings with
> E. (e.g. E'\\d').  -- does this have something to do with
> "standard_conforming_strings = on"?
> 
> So each time a view is tinkered with, the user must find all
> occurrences of the regular expression strings and re-apply the E.
> 

It would be great if you could provide us a complete example.


-- 
Guillaume http://blog.guillaume.lelarge.info http://www.dalibo.com



Re: Views->Create Script + Regular Expressions

От
Richard Broersma
Дата:
On Tue, Aug 23, 2011 at 11:18 PM, Guillaume Lelarge
<guillaume@lelarge.info> wrote:
> It would be great if you could provide us a complete example.

Here is a sample view.

--*************
CREATE VIEW TestView AS select cmpnt_name, regexp_matches(cmpnt_name,
E'(^\\d{1,2})-([A-Z]+) *- ?(\\d{3,4})-?([A-Z]*)?')  from component;
--*************

Here what Views->Create Script returns:



--*************
-- View: testview

-- DROP VIEW testview;

CREATE OR REPLACE VIEW testview ASSELECT component.cmpnt_name,
regexp_matches(component.cmpnt_name::text, '(^\\d{1,2})-([A-Z]+) *-
?(\\d{3,4})-?([A-Z]*)?'::text) AS regexp_matches  FROM component;

ALTER TABLE testview OWNER TO rbroersma;
--*************



Notice what happens if I try to execute this script.

WARNING:  nonstandard use of \\ in a string literal
LINE 6: ..._name, regexp_matches(component.cmpnt_name::text, '(^\\d{1,2...
             ^
 
HINT:  Use the escape string syntax for backslashes, e.g., E'\\'.
Query returned successfully with no result in 157 ms.


-- 
Regards,
Richard Broersma Jr.


Re: Views->Create Script + Regular Expressions

От
Guillaume Lelarge
Дата:
On Wed, 2011-08-24 at 08:04 -0700, Richard Broersma wrote:
> On Tue, Aug 23, 2011 at 11:18 PM, Guillaume Lelarge
> <guillaume@lelarge.info> wrote:
> > It would be great if you could provide us a complete example.
> 
> Here is a sample view.
> 
> --*************
> CREATE VIEW TestView AS select cmpnt_name, regexp_matches(cmpnt_name,
> E'(^\\d{1,2})-([A-Z]+) *- ?(\\d{3,4})-?([A-Z]*)?')  from component;
> --*************
> 
> Here what Views->Create Script returns:
> 
> 
> 
> --*************
> -- View: testview
> 
> -- DROP VIEW testview;
> 
> CREATE OR REPLACE VIEW testview AS
>  SELECT component.cmpnt_name,
> regexp_matches(component.cmpnt_name::text, '(^\\d{1,2})-([A-Z]+) *-
> ?(\\d{3,4})-?([A-Z]*)?'::text) AS regexp_matches
>    FROM component;
> 
> ALTER TABLE testview OWNER TO rbroersma;
> --*************
> 
> 
> 
> Notice what happens if I try to execute this script.
> 
> WARNING:  nonstandard use of \\ in a string literal
> LINE 6: ..._name, regexp_matches(component.cmpnt_name::text, '(^\\d{1,2...
>                                                              ^
> HINT:  Use the escape string syntax for backslashes, e.g., E'\\'.
> Query returned successfully with no result in 157 ms.
> 
> 

There's not much we can do about this. The SELECT part is retrieved via
a call to pg_getviewdef. So, if you want to call this a bug, this is a
PostgreSQL bug (and I don't think this is).


-- 
Guillaume http://blog.guillaume.lelarge.info http://www.dalibo.com



Re: Views->Create Script + Regular Expressions

От
Michael Shapiro
Дата:
I ran into this warning when we switched from one version of Postgres to another.
It complains when the view is created, but it works fine when I select from it.

But I don't mix E' and \\

My views have strings like  '\\.[0-9]+\\.'

Your view has both E' and \\ -- could it be that if you have E' you only need \, not \\



On Wed, Aug 24, 2011 at 10:28 AM, Guillaume Lelarge <guillaume@lelarge.info> wrote:
On Wed, 2011-08-24 at 08:04 -0700, Richard Broersma wrote:
> On Tue, Aug 23, 2011 at 11:18 PM, Guillaume Lelarge
> <guillaume@lelarge.info> wrote:
> > It would be great if you could provide us a complete example.
>
> Here is a sample view.
>
> --*************
> CREATE VIEW TestView AS select cmpnt_name, regexp_matches(cmpnt_name,
> E'(^\\d{1,2})-([A-Z]+) *- ?(\\d{3,4})-?([A-Z]*)?')  from component;
> --*************
>
> Here what Views->Create Script returns:
>
>
>
> --*************
> -- View: testview
>
> -- DROP VIEW testview;
>
> CREATE OR REPLACE VIEW testview AS
>  SELECT component.cmpnt_name,
> regexp_matches(component.cmpnt_name::text, '(^\\d{1,2})-([A-Z]+) *-
> ?(\\d{3,4})-?([A-Z]*)?'::text) AS regexp_matches
>    FROM component;
>
> ALTER TABLE testview OWNER TO rbroersma;
> --*************
>
>
>
> Notice what happens if I try to execute this script.
>
> WARNING:  nonstandard use of \\ in a string literal
> LINE 6: ..._name, regexp_matches(component.cmpnt_name::text, '(^\\d{1,2...
>                                                              ^
> HINT:  Use the escape string syntax for backslashes, e.g., E'\\'.
> Query returned successfully with no result in 157 ms.
>
>

There's not much we can do about this. The SELECT part is retrieved via
a call to pg_getviewdef. So, if you want to call this a bug, this is a
PostgreSQL bug (and I don't think this is).


--
Guillaume
 http://blog.guillaume.lelarge.info
 http://www.dalibo.com


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

Re: Views->Create Script + Regular Expressions

От
Richard Broersma
Дата:
On Wed, Aug 24, 2011 at 8:28 AM, Guillaume Lelarge
<guillaume@lelarge.info> wrote:

> There's not much we can do about this. The SELECT part is retrieved via
> a call to pg_getviewdef. So, if you want to call this a bug, this is a
> PostgreSQL bug (and I don't think this is).

I agree that its probably not a bug, but it is an undesirable
'feature' that adds hurdles to altering existing DDL.  I expect that
this would affect table and domain constraints.

I'll mention this as a feature request on the general mailing list.

-- 
Regards,
Richard Broersma Jr.