|
12 | 12 | *
|
13 | 13 | *
|
14 | 14 | * IDENTIFICATION
|
15 |
| - * $Header: /cvsroot/pgsql/src/backend/utils/adt/name.c,v 1.43 2003/03/10 22:28:18 tgl Exp $ |
| 15 | + * $Header: /cvsroot/pgsql/src/backend/utils/adt/name.c,v 1.44 2003/04/27 23:22:13 tgl Exp $ |
16 | 16 | *
|
17 | 17 | *-------------------------------------------------------------------------
|
18 | 18 | */
|
@@ -246,32 +246,36 @@ current_schema(PG_FUNCTION_ARGS)
|
246 | 246 | if (search_path == NIL)
|
247 | 247 | PG_RETURN_NULL();
|
248 | 248 | nspname = get_namespace_name(lfirsto(search_path));
|
| 249 | + if (!nspname) |
| 250 | + PG_RETURN_NULL(); /* recently-deleted namespace? */ |
249 | 251 | PG_RETURN_DATUM(DirectFunctionCall1(namein, CStringGetDatum(nspname)));
|
250 | 252 | }
|
251 | 253 |
|
252 | 254 | Datum
|
253 | 255 | current_schemas(PG_FUNCTION_ARGS)
|
254 | 256 | {
|
255 | 257 | List *search_path = fetch_search_path(PG_GETARG_BOOL(0));
|
256 |
| - int nnames = length(search_path); |
257 | 258 | Datum *names;
|
258 | 259 | int i;
|
259 | 260 | ArrayType *array;
|
260 | 261 |
|
261 | 262 | /* +1 here is just to avoid palloc(0) error */
|
262 |
| - names = (Datum *) palloc((nnames + 1) * sizeof(Datum)); |
| 263 | + names = (Datum *) palloc((length(search_path) + 1) * sizeof(Datum)); |
263 | 264 | i = 0;
|
264 | 265 | while (search_path)
|
265 | 266 | {
|
266 | 267 | char *nspname;
|
267 | 268 |
|
268 | 269 | nspname = get_namespace_name(lfirsto(search_path));
|
269 |
| - names[i] = DirectFunctionCall1(namein, CStringGetDatum(nspname)); |
270 |
| - i++; |
| 270 | + if (nspname) /* watch out for deleted namespace */ |
| 271 | + { |
| 272 | + names[i] = DirectFunctionCall1(namein, CStringGetDatum(nspname)); |
| 273 | + i++; |
| 274 | + } |
271 | 275 | search_path = lnext(search_path);
|
272 | 276 | }
|
273 | 277 |
|
274 |
| - array = construct_array(names, nnames, |
| 278 | + array = construct_array(names, i, |
275 | 279 | NAMEOID,
|
276 | 280 | NAMEDATALEN, /* sizeof(Name) */
|
277 | 281 | false, /* Name is not by-val */
|
|
0 commit comments