के 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
जाँच रहा है कि सभी कॉलम NULL नहीं हैं, जबकि rec_variable IS NULL
जाँच रहा है कि क्या सभी कॉलम NULL हैं। इसलिए NOT rec_variable IS NULL
मुझे जो उम्मीद थी - सवाल का जवाब "क्या अंदर कुछ है?"।