Re: jsonb_array_length: ERROR: 22023: cannot get array length of a scalar

From: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>
To: Alexander Farber <alexander(dot)farber(at)gmail(dot)com>
Cc: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Re: jsonb_array_length: ERROR: 22023: cannot get array length of a scalar
Date: 2018-03-02 19:05:44
Message-ID: CAKFQuwb9Tym+QoRqr2nWLzbX_Q0uzxH3yds9rwF5gVBwkZHeAA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Fri, Mar 2, 2018 at 11:58 AM, Alexander Farber <
alexander(dot)farber(at)gmail(dot)com> wrote:

> I see, thank you for your comments, David and Adrian.
>
> In the "tiles" column actually save either the JSON array of tiles - when
> the user plays them
>
> Or a string (which is jsonb too) concatenated of letters - when the user
> swaps the letters.
>
> Maybe I should rethink my table structure (I just want to "log" all plays,
> swaps, skips, resigns in the words_moves table)...
>
> Or maybe I should always check for the "action" column first (acts as
> enum) - before accessing "tiles" column....
>
>
​A table constraint like:

CASE WHEN action = 'Play'
THEN lengh < 0
WHEN action = 'Swap'
THEN ...
ELSE false
END

Is perfectly fine - though having actual non-null values take on different
meanings based upon the enum is generally not a good idea. I've been using
the above to enforce conditional not null constraints when I don't want to
implement explicit inheritance​.

David J.

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Joshua D. Drake 2018-03-02 19:16:42 Re: Is there a continuous backup for pg ?
Previous Message Alexander Farber 2018-03-02 18:58:37 Re: jsonb_array_length: ERROR: 22023: cannot get array length of a scalar