[patch] Adding an assertion to report too long hash table name

2022-09-28 Thread Xiaoran Wang
Hi,

The max size for the shmem hash table name is SHMEM_INDEX_KEYSIZE - 1.
but when the caller uses a longer hash table name, it doesn't report any error, 
instead
it just uses the first SHMEM_INDEX_KEYSIZE -1 chars as the hash table name.

I created some shmem hash tables with the same prefix which was longer than
SHMEM_INDEX_KEYSIZE - 1, and the size of those hash tables were the same,
then only one hash table was created. But I thought those hash tables were 
created
successfully.

I know this is a corner case, but it's difficult to figure it out when run into 
it. So I add
an assertion to prevent it.


Thanks,
Xiaoran


Adding-an-assertion-to-report-too-long-hash-table-name.patch
Description:  Adding-an-assertion-to-report-too-long-hash-table-name.patch


Re: [patch] Adding an assertion to report too long hash table name

2022-11-07 Thread Zhang Mingli
Hi,


On Sep 29, 2022, 09:38 +0800, Xiaoran Wang , wrote:
> Hi,
> The max size for the shmem hash table name is SHMEM_INDEX_KEYSIZE - 1. but 
> when the caller uses a longer hash table name, it doesn't report any error, 
> insteadit just uses the first SHMEM_INDEX_KEYSIZE -1 chars as the hash table 
> name.
> I created some shmem hash tables with the same prefix which was longer 
> thanSHMEM_INDEX_KEYSIZE - 1, and the size of those hash tables were the 
> same,then only one hash table was created. But I thought those hash tables 
> were createdsuccessfully.
> I know this is a corner case, but it's difficult to figure it out when run 
> into it. So I addan assertion to prevent it.
>
> Thanks,Xiaoran
Seems Postgres doesn’t have a case that strlen(name) >= SHMEM_INDEX_KEYSIZE(48).
The max length of name I found is 29:
```
ShmemInitHash("Shared Buffer Lookup Table”

```
But it will help for other Databases built on Postgres or later Postgres in 
case of forgetting to update SHMEM_INDEX_KEYSIZE
when new shmem added with a name longer than current SHMEM_INDEX_KEYSIZE.
And we don’t have such assertion now.
So, +1 for the patch.

Regards,
Zhang Mingli


Re: [patch] Adding an assertion to report too long hash table name

2022-09-29 Thread Junwang Zhao
LGTM
+1

On Thu, Sep 29, 2022 at 9:38 AM Xiaoran Wang  wrote:
>
> Hi,
>
> The max size for the shmem hash table name is SHMEM_INDEX_KEYSIZE - 1.
> but when the caller uses a longer hash table name, it doesn't report any 
> error, instead
> it just uses the first SHMEM_INDEX_KEYSIZE -1 chars as the hash table name.
>
> I created some shmem hash tables with the same prefix which was longer than
> SHMEM_INDEX_KEYSIZE - 1, and the size of those hash tables were the same,
> then only one hash table was created. But I thought those hash tables were 
> created
> successfully.
>
> I know this is a corner case, but it's difficult to figure it out when run 
> into it. So I add
> an assertion to prevent it.
>
>
> Thanks,
> Xiaoran



-- 
Regards
Junwang Zhao