]> granicus.if.org Git - postgresql/commitdiff
Fix \ef and \sf to not fail on functions with nonnull probin.
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 14 Aug 2010 14:20:35 +0000 (14:20 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 14 Aug 2010 14:20:35 +0000 (14:20 +0000)
Update comment about them in pg_get_functiondef.

src/backend/utils/adt/ruleutils.c
src/bin/psql/command.c

index 655d3f890c62e2a7f95afa45677b0790e6433a8f..df5b08480a7f96a4700997905b66ae540ac4f174 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.331 2010/08/12 00:40:59 tgl Exp $
+ *       $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.332 2010/08/14 14:20:35 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1622,8 +1622,9 @@ pg_get_serial_sequence(PG_FUNCTION_ARGS)
  *             the specified function.
  *
  * Note: if you change the output format of this function, be careful not
- * to break psql's rules (in \ef) for identifying the start of the function
- * body.
+ * to break psql's rules (in \ef and \sf) for identifying the start of the
+ * function body.  To wit: the function body starts on a line that begins
+ * with "AS ", and no preceding line will look like that.
  */
 Datum
 pg_get_functiondef(PG_FUNCTION_ARGS)
index e902f5e95c0b03a71f804ad3084d7844793b1fd1..a482010157b43d426ed451337d950dc98406f3ba 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2000-2010, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.227 2010/08/14 13:59:49 tgl Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.228 2010/08/14 14:20:35 tgl Exp $
  */
 #include "postgres_fe.h"
 #include "command.h"
@@ -611,17 +611,17 @@ exec_command(const char *cmd,
                                /*
                                 * lineno "1" should correspond to the first line of the
                                 * function body.  We expect that pg_get_functiondef() will
-                                * emit that on a line beginning with "AS $function", and that
-                                * there can be no such line before the real start of the
-                                * function body.  Increment lineno by the number of lines
-                                * before that line, so that it becomes relative to the first
-                                * line of the function definition.
+                                * emit that on a line beginning with "AS ", and that there
+                                * can be no such line before the real start of the function
+                                * body.  Increment lineno by the number of lines before that
+                                * line, so that it becomes relative to the first line of the
+                                * function definition.
                                 */
                                const char *lines = query_buf->data;
 
                                while (*lines != '\0')
                                {
-                                       if (strncmp(lines, "AS $function", 12) == 0)
+                                       if (strncmp(lines, "AS ", 3) == 0)
                                                break;
                                        lineno++;
                                        /* find start of next line */
@@ -1150,9 +1150,9 @@ exec_command(const char *cmd,
                                /*
                                 * lineno "1" should correspond to the first line of the
                                 * function body.  We expect that pg_get_functiondef() will
-                                * emit that on a line beginning with "AS $function", and that
-                                * there can be no such line before the real start of the
-                                * function body.
+                                * emit that on a line beginning with "AS ", and that there
+                                * can be no such line before the real start of the function
+                                * body.
                                 *
                                 * Note that this loop scribbles on func_buf.
                                 */
@@ -1160,7 +1160,7 @@ exec_command(const char *cmd,
                                {
                                        char   *eol;
 
-                                       if (in_header && strncmp(lines, "AS $function", 12) == 0)
+                                       if (in_header && strncmp(lines, "AS ", 3) == 0)
                                                in_header = false;
                                        /* increment lineno only for body's lines */
                                        if (!in_header)