BUG #18964: `ALTER DATABASE ... RESET ...` fails to reset extension parameters that no longer exist

Lists: pgsql-bugs
From: PG Bug reporting form <noreply(at)postgresql(dot)org>
To: pgsql-bugs(at)lists(dot)postgresql(dot)org
Cc: mert(at)futo(dot)org
Subject: BUG #18964: `ALTER DATABASE ... RESET ...` fails to reset extension parameters that no longer exist
Date: 2025-06-20 12:24:20
Message-ID: [email protected]
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 18964
Logged by: Mert Alev
Email address: mert(at)futo(dot)org
PostgreSQL version: 17.5
Operating system: Debian 12
Description:

My project uses PostgreSQL (default 14, but later versions are supported as
well) with an extension where one of its parameters was removed in a later
version. I had applied a non-default value for this parameter using `ALTER
DATABASE immich SET vchordrq.prewarm_dim = '512,640,768,1024,1152,1536';`.
After upgrading the extension to a version that no longer includes this
parameter, admins reported that each connection emitted the following
warning:
```
2025-06-18 23:32:46.765 CEST [49] WARNING: invalid configuration parameter
name "vchordrq.prewarm_dim"
2025-06-18 23:32:46.765 CEST [49] DETAIL: "vchordrq" is a reserved prefix.
```
As a solution, I added a migration that removes the now-redundant parameter
with `ALTER DATABASE immich RESET vchordrq.prewarm_dim;`. However, while
this worked for our CI that uses Postgres 14 and for admins using 14, we
began getting reports from admins using 15, 16 and 17 that the migration
fails with the following error:
```
PostgresError: invalid configuration parameter name "vchordrq.prewarm_dim"
{
severity_local: 'ERROR',
severity: 'ERROR',
code: '42602',
detail: '"vchordrq" is a reserved prefix.',
file: 'guc.c',
line: '1153',
routine: 'assignable_custom_variable_name'
}
```
While not a PG developer, I think this is likely due to the change in commit
[88103567c](https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=88103567c)
that was part of the 15 release. It makes for a tricky situation where it
seems the options to remove this parameter are:
1. Write directly to `pg_catalog.pg_db_role_setting`, removing this
parameter from the `setconfig` array
2. Run `ALTER DATABASE immich RESET ALL;`, purging all database-level
parameter configuration along with it
3. Make a backup, then remove the relevant line that applies this parameter
in the backup file before restoring
There may be other approaches as well, but all of them are rather cumbersome
and error-prone. My solution was to write a transaction that first queries
the `setconfig` parameters, then runs `RESET ALL`, then re-applies all
parameters except `vchordrq.prewarm_dim` using the queried data.
It would be great if `RESET`ing the parameter still worked in this
situation, even if `SET`ing it does not.


From: Nathan Bossart <nathandbossart(at)gmail(dot)com>
To: mert(at)futo(dot)org, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #18964: `ALTER DATABASE ... RESET ...` fails to reset extension parameters that no longer exist
Date: 2025-06-20 19:53:43
Message-ID: aFW8R6Qlgtbp7TOk@nathan
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-bugs

Thanks for the report.

On Fri, Jun 20, 2025 at 12:24:20PM +0000, PG Bug reporting form wrote:
> My project uses PostgreSQL (default 14, but later versions are supported as
> well) with an extension where one of its parameters was removed in a later
> version. I had applied a non-default value for this parameter using `ALTER
> DATABASE immich SET vchordrq.prewarm_dim = '512,640,768,1024,1152,1536';`.
> After upgrading the extension to a version that no longer includes this
> parameter, admins reported that each connection emitted the following
> warning:
> ```
> 2025-06-18 23:32:46.765 CEST [49] WARNING: invalid configuration parameter
> name "vchordrq.prewarm_dim"
> 2025-06-18 23:32:46.765 CEST [49] DETAIL: "vchordrq" is a reserved prefix.
> ```
> As a solution, I added a migration that removes the now-redundant parameter
> with `ALTER DATABASE immich RESET vchordrq.prewarm_dim;`. However, while
> this worked for our CI that uses Postgres 14 and for admins using 14, we
> began getting reports from admins using 15, 16 and 17 that the migration
> fails with the following error:
> ```
> PostgresError: invalid configuration parameter name "vchordrq.prewarm_dim"
> {
> severity_local: 'ERROR',
> severity: 'ERROR',
> code: '42602',
> detail: '"vchordrq" is a reserved prefix.',
> file: 'guc.c',
> line: '1153',
> routine: 'assignable_custom_variable_name'
> }
> ```
>
> [...]
>
> It would be great if `RESET`ing the parameter still worked in this
> situation, even if `SET`ing it does not.

It seems like we could at least allow superusers and folks with existing
privileges on removed parameters to RESET in this case. IIUC we'd need to
teach validate_option_array_item() to treat unknown custom parameters like
they're known (for calls from GUCArrayDelete()).

On the extension side, another option could be to leave the parameter
defined as a placeholder so that Postgres knows about it.

--
nathan


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Nathan Bossart <nathandbossart(at)gmail(dot)com>
Cc: mert(at)futo(dot)org, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #18964: `ALTER DATABASE ... RESET ...` fails to reset extension parameters that no longer exist
Date: 2025-06-20 20:24:41
Message-ID: [email protected]
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-bugs

Nathan Bossart <nathandbossart(at)gmail(dot)com> writes:
> On Fri, Jun 20, 2025 at 12:24:20PM +0000, PG Bug reporting form wrote:
>> As a solution, I added a migration that removes the now-redundant parameter
>> with `ALTER DATABASE immich RESET vchordrq.prewarm_dim;`. However, while
>> this worked for our CI that uses Postgres 14 and for admins using 14, we
>> began getting reports from admins using 15, 16 and 17 that the migration
>> fails with the following error:
>> ```
>> PostgresError: invalid configuration parameter name "vchordrq.prewarm_dim"
>> {
>> severity_local: 'ERROR',
>> severity: 'ERROR',
>> code: '42602',
>> detail: '"vchordrq" is a reserved prefix.',
>>
>> It would be great if `RESET`ing the parameter still worked in this
>> situation, even if `SET`ing it does not.

> It seems like we could at least allow superusers and folks with existing
> privileges on removed parameters to RESET in this case.

The hazard we need to pay attention to here is someone removing a
parameter setting that they shouldn't have had privilege to do.
In particular, if a non-superuser can RESET a SUSET-or-above
parameter, that's bad.

In the case at hand, where the prefix is known but the parameter
isn't, I think we could safely assume that the setting is either
a mistake (probably installed while the extension wasn't loaded)
or the described case of a parameter the extension no longer
uses. Either way it seems safe to allow RESET with suitable
privileges on the target DB and/or role.

If the prefix is not known, then we're really flying blind.
It looks like we assume the parameter might be SUSET and therefore
allow both ALTER DB/ROLE SET and RESET only to superusers.
I'm hesitant to relax that case.

regards, tom lane


From: Nathan Bossart <nathandbossart(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: mert(at)futo(dot)org, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #18964: `ALTER DATABASE ... RESET ...` fails to reset extension parameters that no longer exist
Date: 2025-06-20 21:20:25
Message-ID: aFXQmZ2sveFAwdjY@nathan
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-bugs

On Fri, Jun 20, 2025 at 04:24:41PM -0400, Tom Lane wrote:
> In the case at hand, where the prefix is known but the parameter
> isn't, I think we could safely assume that the setting is either
> a mistake (probably installed while the extension wasn't loaded)
> or the described case of a parameter the extension no longer
> uses. Either way it seems safe to allow RESET with suitable
> privileges on the target DB and/or role.

I'm a little hesitant to consider opening this up too much. For example,
what if someone accidentally downgrades the library temporarily and a GUC
definition disappears, or one version of the library removes a parameter
and a future one adds it back (due to user backlash)? Maybe those
situations are too contrived/unlikely to worry about, though.

> If the prefix is not known, then we're really flying blind.
> It looks like we assume the parameter might be SUSET and therefore
> allow both ALTER DB/ROLE SET and RESET only to superusers.
> I'm hesitant to relax that case.

IIUC we also check pg_parameter_acl in this case, but I agree that we don't
want to relax this any further.

--
nathan


From: Nathan Bossart <nathandbossart(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: mert(at)futo(dot)org, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #18964: `ALTER DATABASE ... RESET ...` fails to reset extension parameters that no longer exist
Date: 2025-06-20 22:48:37
Message-ID: aFXlRTxMxVyMjfjq@nathan
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-bugs

Here is a fragile proof-of-concept patch that demonstrates roughly what I
had in mind.

--
nathan

Attachment Content-Type Size
fix_alter_role_reset_v1.patch text/plain 3.3 KB

From: Nathan Bossart <nathandbossart(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: mert(at)futo(dot)org, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #18964: `ALTER DATABASE ... RESET ...` fails to reset extension parameters that no longer exist
Date: 2025-06-25 16:06:05
Message-ID: aFwebUErRdEKZy6i@nathan
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-bugs

Here is a tidied-up version of the patch. It's still quite fragile, but
AFAICT to do any better we'd need to return more context from
find_option(), and I don't think we can change that one on the
back-branches since it's exported. I assume we don't want find_option() to
create a placeholder in this case, either. I'll continue to look around
for a better solution...

If we wanted to open up RESET in this case to everyone with suitable
privileges on the target DB and/or role (as proposed by Tom upthread [0]),
I think we'd just need to replace the "return false;" under find_option()
to "return reset_custom;".

[0] https://postgr.es/m/2474668.1750451081%40sss.pgh.pa.us

--
nathan

Attachment Content-Type Size
v2-0001-Allow-resetting-unknown-custom-GUCs-with-reserved.patch text/plain 2.2 KB

From: Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>
To: Nathan Bossart <nathandbossart(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: mert(at)futo(dot)org, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #18964: `ALTER DATABASE ... RESET ...` fails to reset extension parameters that no longer exist
Date: 2025-07-22 02:27:24
Message-ID: [email protected]
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-bugs

On Wed, 2025-06-25 at 11:06 -0500, Nathan Bossart wrote:
> Here is a tidied-up version of the patch. It's still quite fragile, but
> AFAICT to do any better we'd need to return more context from
> find_option(), and I don't think we can change that one on the
> back-branches since it's exported. I assume we don't want find_option() to
> create a placeholder in this case, either. I'll continue to look around
> for a better solution...

I tested your patch, and it works as expected for

ALTER DATABASE ... RESET
ALTER ROLE ... RESET
ALTER ROLE ... IN DATABASE ... RESET

There is still one piece missing in my opinion:

ALTER SYSTEM RESET testext.swap_limit;
ERROR: invalid configuration parameter name "testext.swap_limit"
DETAIL: "testext" is a reserved prefix.

I think that this case should work like the others.

I'd like to see regression tests for this, but I am not sure how
to best devise them.
One idea would be to stick them into the regression tests of some
contrib module, even though it is not the perfect place.
Perhaps a sequence like this:

DO $$BEGIN EXECUTE format(
'ALTER DATABASE %I SET pg_trgm.somevar = 42',
current_catalog); END$$;

LOAD 'pg_trgm';
WARNING: invalid configuration parameter name "pg_trgm.somevar", removing it
DETAIL: "pg_trgm" is now a reserved prefix.

DO $$BEGIN EXECUTE format(
'ALTER DATABASE %I RESET pg_trgm.somevar',
current_catalog); END$$;

\drds

> If we wanted to open up RESET in this case to everyone with suitable
> privileges on the target DB and/or role (as proposed by Tom upthread [0]),
> I think we'd just need to replace the "return false;" under find_option()
> to "return reset_custom;".
>
> [0] https://postgr.es/m/2474668.1750451081%40sss.pgh.pa.us

I have no strong opinion about that.
I'd say it is good enough to allow superusers to reset such parameters.

Yours,
Laurenz Albe


From: Nathan Bossart <nathandbossart(at)gmail(dot)com>
To: Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, mert(at)futo(dot)org, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #18964: `ALTER DATABASE ... RESET ...` fails to reset extension parameters that no longer exist
Date: 2025-07-24 16:30:49
Message-ID: aIJfucaqjZ3gh-xj@nathan
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-bugs

On Tue, Jul 22, 2025 at 04:27:24AM +0200, Laurenz Albe wrote:
> I tested your patch, and it works as expected for

Thanks for reviewing.

> There is still one piece missing in my opinion:
>
> ALTER SYSTEM RESET testext.swap_limit;
> ERROR: invalid configuration parameter name "testext.swap_limit"
> DETAIL: "testext" is a reserved prefix.
>
> I think that this case should work like the others.

Good catch. This should be fixed in v3.

> I'd like to see regression tests for this, but I am not sure how
> to best devise them.
> One idea would be to stick them into the regression tests of some
> contrib module, even though it is not the perfect place.

Added in v3.

--
nathan

Attachment Content-Type Size
v3-0001-Allow-resetting-unknown-custom-GUCs-with-reserved.patch text/plain 6.1 KB

From: Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>
To: Nathan Bossart <nathandbossart(at)gmail(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, mert(at)futo(dot)org, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #18964: `ALTER DATABASE ... RESET ...` fails to reset extension parameters that no longer exist
Date: 2025-07-24 21:06:57
Message-ID: [email protected]
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-bugs

On Thu, 2025-07-24 at 11:30 -0500, Nathan Bossart wrote:
> On Tue, Jul 22, 2025 at 04:27:24AM +0200, Laurenz Albe wrote:
>
> > There is still one piece missing in my opinion:
> >
> > ALTER SYSTEM RESET testext.swap_limit;
> > ERROR: invalid configuration parameter name "testext.swap_limit"
> > DETAIL: "testext" is a reserved prefix.
> >
> > I think that this case should work like the others.
>
> Good catch. This should be fixed in v3.

Check.

> > I'd like to see regression tests for this, but I am not sure how
> > to best devise them.
> > One idea would be to stick them into the regression tests of some
> > contrib module, even though it is not the perfect place.
>
> Added in v3.

Great! The regression test works fine on my Linux machine.

> --- /dev/null
> +++ b/contrib/auto_explain/sql/alter_reset.sql
> [...]
> +SELECT current_database() AS datname \gset
> +CREATE ROLE regress_ae_role;
> +
> +ALTER DATABASE :datname SET auto_explain.bogus = 1;
> +ALTER ROLE regress_ae_role SET auto_explain.bogus = 1;
> +ALTER ROLE regress_ae_role IN DATABASE :datname SET auto_explain.bogus = 1;
> +ALTER SYSTEM SET auto_explain.bogus = 1;
> +
> +LOAD 'auto_explain';
> +
> +ALTER DATABASE :datname RESET auto_explain.bogus;
> +ALTER ROLE regress_ae_role RESET auto_explain.bogus;
> +ALTER ROLE regress_ae_role IN DATABASE :datname RESET auto_explain.bogus;

That is perhaps a rediculous quibble, but shouldn't that be :"datname"?
I guess the regression test database will always have a proper name...

Anyway, I'll mark the patch as "ready for committer".

Yours,
Laurenz Albe


From: Nathan Bossart <nathandbossart(at)gmail(dot)com>
To: Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, mert(at)futo(dot)org, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #18964: `ALTER DATABASE ... RESET ...` fails to reset extension parameters that no longer exist
Date: 2025-07-25 14:15:17
Message-ID: aIORdQ-PJ15k-WjZ@nathan
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-bugs

On Thu, Jul 24, 2025 at 11:06:57PM +0200, Laurenz Albe wrote:
> On Thu, 2025-07-24 at 11:30 -0500, Nathan Bossart wrote:
>> +ALTER ROLE regress_ae_role IN DATABASE :datname RESET auto_explain.bogus;
>
> That is perhaps a rediculous quibble, but shouldn't that be :"datname"?
> I guess the regression test database will always have a proper name...

You're right, it probably should be quoted.

> Anyway, I'll mark the patch as "ready for committer".

Thanks. I'd like to get this fixed in the August releases, so I'm planning
to commit this sometime late next week, barring additional feedback or
objections.

--
nathan

Attachment Content-Type Size
v4-0001-Allow-resetting-unknown-custom-GUCs-with-reserved.patch text/plain 6.1 KB

From: Nathan Bossart <nathandbossart(at)gmail(dot)com>
To: Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, mert(at)futo(dot)org, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #18964: `ALTER DATABASE ... RESET ...` fails to reset extension parameters that no longer exist
Date: 2025-07-28 21:15:04
Message-ID: aIfoWKXanBNGhdwt@nathan
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-bugs

On Fri, Jul 25, 2025 at 09:15:17AM -0500, Nathan Bossart wrote:
> On Thu, Jul 24, 2025 at 11:06:57PM +0200, Laurenz Albe wrote:
>> Anyway, I'll mark the patch as "ready for committer".
>
> Thanks. I'd like to get this fixed in the August releases, so I'm planning
> to commit this sometime late next week, barring additional feedback or
> objections.

I looked into how easily this back-patched to v15 (where commit 88103567c
was added), and I noticed that the ALTER SYSTEM code looks a bit different
on v15 and v16. Furthermore, I didn't see a simple way to fix it on those
versions without first back-patching commit 2d870b4. From the commit
message, it looks like Tom didn't back-patch it at the time due to a lack
of complaints. I'm currently thinking we should first back-patch that one
to at least v15, if not all supported versions, before applying my proposed
patch. Thoughts?

--
nathan


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Nathan Bossart <nathandbossart(at)gmail(dot)com>
Cc: Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>, mert(at)futo(dot)org, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #18964: `ALTER DATABASE ... RESET ...` fails to reset extension parameters that no longer exist
Date: 2025-07-28 21:27:50
Message-ID: [email protected]
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-bugs

Nathan Bossart <nathandbossart(at)gmail(dot)com> writes:
> I looked into how easily this back-patched to v15 (where commit 88103567c
> was added), and I noticed that the ALTER SYSTEM code looks a bit different
> on v15 and v16. Furthermore, I didn't see a simple way to fix it on those
> versions without first back-patching commit 2d870b4. From the commit
> message, it looks like Tom didn't back-patch it at the time due to a lack
> of complaints. I'm currently thinking we should first back-patch that one
> to at least v15, if not all supported versions, before applying my proposed
> patch. Thoughts?

No objection here. Now that that's a couple years old, it should have
had enough time to bake.

regards, tom lane


From: Nathan Bossart <nathandbossart(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>, mert(at)futo(dot)org, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #18964: `ALTER DATABASE ... RESET ...` fails to reset extension parameters that no longer exist
Date: 2025-07-30 19:13:16
Message-ID: aIpuzKVndJrI48B1@nathan
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-bugs

On Mon, Jul 28, 2025 at 05:27:50PM -0400, Tom Lane wrote:
> Nathan Bossart <nathandbossart(at)gmail(dot)com> writes:
>> I looked into how easily this back-patched to v15 (where commit 88103567c
>> was added), and I noticed that the ALTER SYSTEM code looks a bit different
>> on v15 and v16. Furthermore, I didn't see a simple way to fix it on those
>> versions without first back-patching commit 2d870b4. From the commit
>> message, it looks like Tom didn't back-patch it at the time due to a lack
>> of complaints. I'm currently thinking we should first back-patch that one
>> to at least v15, if not all supported versions, before applying my proposed
>> patch. Thoughts?
>
> No objection here. Now that that's a couple years old, it should have
> had enough time to bake.

It applies relatively cleanly down to v15. The only thing I had to change
was to replace guc_free() with free() on v15. I was a little worried about
changing the signature of check_GUC_name_for_parameter_acl(), but
codesearch.debian.net doesn't show any outside uses.

--
nathan

Attachment Content-Type Size
v1-0001-Allow-ALTER-SYSTEM-to-set-unrecognized-custom.patch.v15 text/plain 16.4 KB
v1-0001-Allow-ALTER-SYSTEM-to-set-unrecognized-custom.patch.v16 text/plain 16.6 KB

From: Nathan Bossart <nathandbossart(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>, mert(at)futo(dot)org, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #18964: `ALTER DATABASE ... RESET ...` fails to reset extension parameters that no longer exist
Date: 2025-08-01 22:01:47
Message-ID: aI05S9BjQ3CsDTud@nathan
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-bugs

Committed.

On Wed, Jul 30, 2025 at 02:13:16PM -0500, Nathan Bossart wrote:
> It applies relatively cleanly down to v15. The only thing I had to change
> was to replace guc_free() with free() on v15. I was a little worried about
> changing the signature of check_GUC_name_for_parameter_acl(), but
> codesearch.debian.net doesn't show any outside uses.

I ended up skipping the back-patch of commit 2d870b4 to avoid the ABI
breakage. That means ALTER SYSTEM remains broken for this use-case on v15
and v16, but IIUC it's already pretty broken in this area, so I'm not sure
we care too much.

--
nathan