কেন x IS NOT NULL
সমান নয় NOT x IS NULL
?
এই কোড:
CREATE TABLE bug_test (
id int,
name text
);
INSERT INTO bug_test
VALUES (1, NULL);
DO $$
DECLARE
v_bug_test bug_test;
BEGIN
RAISE NOTICE '%: %', v_bug_test, (v_bug_test IS NULL);
RAISE NOTICE '%: %', v_bug_test, (v_bug_test IS NOT NULL);
RAISE NOTICE '%: %', v_bug_test, (NOT v_bug_test IS NULL);
SELECT *
INTO v_bug_test
FROM bug_test
WHERE id = 1;
RAISE NOTICE '%: %', v_bug_test, (v_bug_test IS NULL);
RAISE NOTICE '%: %', v_bug_test, (v_bug_test IS NOT NULL);
RAISE NOTICE '%: %', v_bug_test, (NOT v_bug_test IS NULL);
END
$$;
DROP TABLE bug_test;
নিম্নলিখিত আউটপুট দেয়:
(,): t
(,): f
(,): f
(1,): f
(1,): f ???
(1,): t
যদিও আমি এই আউটপুটটি পেতে আশা করব:
(,): t
(,): f
(,): f
(1,): f
(1,): t <<<
(1,): t
id
আমার আসল কোডবেসটিতে যাচাই করার জন্য কোডটি স্যুইচ করেছি, তবে কয়েক ঘন্টা ব্যয় করেই কেবল কোনও সমস্যার সন্ধান করছে।
rec_variable IS NOT NULL
যদি চেক করা হয় সব কলাম নাল না তৈরী করছেন, rec_variable IS NULL
যদি চেক করা হয় সব কলাম শূন্য হয়। সুতরাং NOT rec_variable IS NULL
আমি যা প্রত্যাশা করেছি তা দেয় - "ভিতরে কি কিছু আছে?" প্রশ্নের উত্তর।