The query is as follows:
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100),
signup_date DATE
);
INSERT INTO users (name, email, signup_date)
SELECT
'User ' || i,
'user' || i || '@example.com',
NOW() - (random() * (365 * 5) || ' days')::interval
FROM generate_series(1, 1000000) AS s(i);
explain analyze
SELECT * FROM users WHERE name = 'User '||trunc(random()*100) ;
I expected the result to return one record. However, in some cases, the result comes back with 2 or 3 records. What am I doing wrong?
I'm not sure if this is a conflict issue between the random() and trunc() functions, or if I have set up the test case incorrectly.
I am using PostgreSQL 15.4 version on Ubuntu 22.04 in a container environment. PostgreSQL was built by compiling the Source code.
Thank you for your time and consideration.
Best regards,
Myoungjun Kim