|
9 | 9 | *
|
10 | 10 | *
|
11 | 11 | * IDENTIFICATION
|
12 |
| - * $Header: /cvsroot/pgsql/src/backend/commands/variable.c,v 1.64 2002/04/22 14:34:27 thomas Exp $ |
| 12 | + * $Header: /cvsroot/pgsql/src/backend/commands/variable.c,v 1.65 2002/04/22 15:13:53 thomas Exp $ |
13 | 13 | *
|
14 | 14 | *-------------------------------------------------------------------------
|
15 | 15 | */
|
@@ -287,7 +287,8 @@ parse_datestyle(List *args)
|
287 | 287 | Value *s;
|
288 | 288 | Assert(IsA(type->names, List));
|
289 | 289 | s = (Value *) lfirst(type->names);
|
290 |
| - elog(ERROR, "SET DATESTYLE does not allow input of type %s", s->val.str); |
| 290 | + elog(ERROR, "SET DATESTYLE does not allow input of type %s" |
| 291 | + "\n\tUse an untyped string instead", s->val.str); |
291 | 292 | }
|
292 | 293 |
|
293 | 294 | value = v->val.str;
|
@@ -594,7 +595,7 @@ parse_XactIsoLevel(List *args)
|
594 | 595 | Assert(IsA(lfirst(args), A_Const));
|
595 | 596 | /* Should only get one argument from the parser */
|
596 | 597 | if (lnext(args) != NIL)
|
597 |
| - elog(ERROR, "SET TRANSACTION ISOLATION LEVEL does not allow multiple arguments"); |
| 598 | + elog(ERROR, "SET TRANSACTION ISOLATION LEVEL takes only one argument"); |
598 | 599 |
|
599 | 600 | Assert(((A_Const *) lfirst(args))->val.type = T_String);
|
600 | 601 | value = ((A_Const *) lfirst(args))->val.val.str;
|
@@ -657,7 +658,7 @@ parse_random_seed(List *args)
|
657 | 658 | Assert(IsA(args, List));
|
658 | 659 | /* Should only get one argument from the parser */
|
659 | 660 | if (lnext(args) != NIL)
|
660 |
| - elog(ERROR, "SET SEED does not allow multiple arguments"); |
| 661 | + elog(ERROR, "SET SEED takes only one argument"); |
661 | 662 |
|
662 | 663 | p = lfirst(args);
|
663 | 664 | Assert(IsA(p, A_Const));
|
@@ -720,7 +721,7 @@ parse_client_encoding(List *args)
|
720 | 721 | return reset_client_encoding();
|
721 | 722 |
|
722 | 723 | if (lnext(args) != NIL)
|
723 |
| - elog(ERROR, "SET CLIENT ENCODING does not allow multiple arguments"); |
| 724 | + elog(ERROR, "SET CLIENT ENCODING takes only one argument"); |
724 | 725 |
|
725 | 726 | Assert(IsA(lfirst(args), A_Const));
|
726 | 727 | if (((A_Const *) lfirst(args))->val.type != T_String)
|
@@ -852,15 +853,23 @@ SetPGVariable(const char *name, List *args)
|
852 | 853 | elog(ERROR, "SET %s takes only one argument", name);
|
853 | 854 |
|
854 | 855 | n = (A_Const *) lfirst(args);
|
855 |
| - /* If this is a T_Integer, then we should convert back to a string |
856 |
| - * but for now we just reject the parameter. |
857 |
| - */ |
858 |
| - if ((n->val.type != T_String) |
859 |
| - && (n->val.type != T_Float)) |
860 |
| - elog(ERROR, "SET requires a string argument for this parameter" |
861 |
| - "\n\tInternal coding error: report to thomas@fourpalms.org"); |
862 |
| - |
863 |
| - value = n->val.val.str; |
| 856 | + if ((n->val.type == T_String) |
| 857 | + || (n->val.type == T_Float)) |
| 858 | + { |
| 859 | + value = n->val.val.str; |
| 860 | + } |
| 861 | + else if (n->val.type == T_Integer) |
| 862 | + { |
| 863 | + /* We should convert back to a string. */ |
| 864 | + value = DatumGetCString(DirectFunctionCall1(int4out, Int32GetDatum(n->val.val.ival))); |
| 865 | + } |
| 866 | + else |
| 867 | + { |
| 868 | + elog(ERROR, "SET %s accepts a string argument for this parameter" |
| 869 | + "\n\tInternal coding error: report to thomas@fourpalms.org", |
| 870 | + name); |
| 871 | + value = NULL; |
| 872 | + } |
864 | 873 | }
|
865 | 874 | else
|
866 | 875 | {
|
|
0 commit comments