Thread: Pattern with backslash commands in psql terminal
Hi Folks, actually I am not sure if this is the right mailing list, although I am quite sure that this is a documenation issue: I want to list the functions that are defined in a database and tried to use the internal \df command of the psql terminal (I use emacs so I don't need pgAdmin). Of course I don't want to see all internal function like substr(), cast(), ..., but only those that were created by myself some weeks ago. The internal docs say that I can specify an optional pattern after the \df or the \df+. And I think I read somewhere that the pattern is meant to be a regular expression. So wildcards should rather be .* or [a-z]+ and not the typical shell wildcards ? or *. But I had no success in either way. And using SQL wildcards % or _ doesn't work as well. "No success" means: The returned list is empty. And I didn't find more detailed information anywhere in the docs. Only if I use the full function name as pattern, then one row with the function is returned. But that is useless, because my starting point is usually: "What's the exact name of this function again? It started with 'my_' but was it 'export' or 'exp' after the prefix?" \df my_ --> no rows \df "my_.*" --> no rows \df /my_.*/ --> no rows \df "my_*" --> no rows \df 'my%' --> no rows \df my_export --> (1 row) Are there some special delimiters required? It would be really a good thing to have at least a comment or a footnote with any one of the \d commands what kind of syntax is needed for the [PATTERN]. An example would surely be a good idea as well. Thanks, Rolf.
Rolf Unger <rolf.unger@ctilabs.de> writes: > The internal docs say that I can specify an optional pattern after the > \df or the \df+. And I think I read somewhere that the pattern is meant > to be a regular expression. No, it's more a shell-style pattern. Use "*" and "?". "." separates schema and object name parts of the pattern. > Are there some special delimiters required? It would be really a good > thing to have at least a comment or a footnote with any one of the \d > commands what kind of syntax is needed for the [PATTERN]. Did you read the material at the bottom of the backslash command list? The various \d commands accept a pattern parameter to specify the object name(s) to be displayed. * means "any sequence of characters" and ? means "any single character". (This notation is comparable to Unix shell file name patterns.) Advanced users can also use regular-expression notations such as character classes, for example [0-9] to match "any digit". To make any of these pattern-matching characters be interpreted literally, surround it with double quotes. A pattern that contains an (unquoted) dot is interpreted as a schema name pattern followed by an object name pattern. For example, \dt foo*.bar* displays all tables in schemas whose name starts with foo and whose table name starts with bar. If no dot appears, then the pattern matches only objects that are visible in the current schema search path. Whenever the pattern parameter is omitted completely, the \d commands display all objects that are visible in the current schema search path. To see all objects in the database, use the pattern *.*. regards, tom lane
Okay, I've found it in the man page. I guess I just don't expected it to come after all these other \x, \? descriptions. Thanks that you pointed me to the right location. Rolf.