ANSWER IS:
- Update sql request
- SELECT id, person_id, validity_date FROM public.product WHERE person_id IS NULL OR validity_date IS NULL ORDER BY id DESC LIMIT 5 OFFSET 0;
- EXPLAIN ANALYZE WITH rows AS (SELECT person_id FROM public.product ORDER BY id DESC LIMIT 5 OFFSET 0)
- UPDATE public.product SET person_id = clob::json->’personId’::text #» ‘{}’ WHERE EXISTS(SELECT * FROM rows WHERE rows.person_id IS NULL);
1
2
3
4
5
6
7
| WITH filter_rows AS (SELECT id FROM public.product WHERE validity_date IS NULL OR person_id IS NULL ORDER BY id DESC OFFSET 0 LIMIT 5)
UPDATE public.product main_rows
SET validity_date = to_timestamp(main_rows.clob::json->’validityDate’::text #>> ‘{}’, ‘yyyy-MM-dd’)::timestamp,
person_id = main_rows.clob::json->’personId’::text #>> ‘{}’
FROM filter_rows
WHERE main_rows.id = filter_rows.id
RETURNING main_rows.id, main_rows.person_id, main_rows.validity_date;
|
- ALTER TABLE public.product ADD person_id VARCHAR(255) NOT NULL UNIQUE;
- ALTER TABLE public.product DROP COLUMN person_id;
- SEARCH SCRIPT
- SELECT * FROM public.product WHERE clob::json->’productNumber’::text #» ‘{}’ = ‘0000003665’
=================================
MIGRATION SCRIPT:
- ALTER TABLE public.product DROP COLUMN person_id;
- CREATE INDEX index_person_id ON public.product (person_id);
- ALTER TABLE public.product ADD person_id VARCHAR(255);
1
2
3
| UPDATE public.product
SET person_id = clob::json->’personId’::text #>> ‘{}’
WHERE person_id IS NULL;
|
- ALTER TABLE public.product ADD validity_date TIMESTAMP without time zone NULL;
1
2
3
| UPDATE public.product
SET validity_date = to_timestamp(clob::json->’validityDate’::text #>> ‘{}’, ‘yyyy-MM-dd’)::timestamp
WHERE validity_date IS NULL;
|
1
2
3
4
| UPDATE public.product
SET person_id = clob::json->’personId’::text #>> ‘{}’,
validity_date = to_timestamp(clob::json->’validityDate’::text #>> ‘{}’, ‘yyyy-MM-dd’)::timestamp
WHERE person_id IS NULL OR validity_date IS NULL;
|
=================================
THE ANSWER IS:
- SELECT id, person_id, validity_date FROM public.product WHERE validity_date IS NULL OR person_id IS NULL ORDER BY id DESC LIMIT 5 OFFSET 0;
- SELECT * FROM public.product WHERE id = ‘6336e118-1890-9600-0192-2b3cda14cd4a’;
- SELECT * FROM public.product WHERE id = ‘6329df6c-1890-9600-0157-61aa29e323bb’;
1
2
3
4
5
6
7
| WITH rows AS (SELECT * FROM public.product WHERE validity_date IS NULL OR person_id IS NULL ORDER BY id DESC LIMIT 5 OFFSET 0)
UPDATE public.product main_rows
SET validity_date = to_timestamp(main_rows.clob::json->’validityDate’::text #>> ‘{}’, ‘yyyy-MM-dd’)::timestamp,
person_id = main_rows.clob::json->’personId’::text #>> ‘{}’
FROM rows
WHERE main_rows.id = rows.id
RETURNING main_rows.id, main_rows.person_id, main_rows.validity_date;
|
=================================
- SELECT * FROM public.product WHERE validity_date >= NOW() AND person_id = ‘f6ae122e-4d4d-45ab-a396-536d4bd8fb1c’ ORDER BY validity_date DESC;
- SELECT clob::json->’personId’ as person_id FROM public.product WHERE validity_date >= NOW() AND person_id = ‘f6ae122e-4d4d-45ab-a396-536d4bd8fb1c’ ORDER BY validity_date DESC;