From: | Aleksander Alekseev <a(dot)alekseev(at)postgrespro(dot)ru> |
---|---|
To: | Piotr Stefaniak <postgres(at)piotr-stefaniak(dot)me> |
Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Two division by 0 errors in optimizer/plan/planner.c and optimizer/path/costsize.c |
Date: | 2016-03-28 09:33:52 |
Message-ID: | 20160328123352.06c770e8@fujitsu |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hello, Piotr.
Thanks for report. But I'm having some difficulties reproducing issues
you described.
I compiled PostgreSQL from master branch on FreeBSD 10.2 using this
command:
```
CC=/usr/local/bin/gcc49 CFLAGS="-O0 -g" \
./configure --enable-cassert --enable-debug \
--prefix=/home/eax/postgresql-install \
&& gmake clean && gmake -j2 -s
```
Then I run reinit.sh:
```
#!/usr/bin/env bash
P=~/postgresql-install
pkill -9 postgres
make install
rm -rf $P/data
$P/bin/initdb -D $P/data
echo "max_prepared_transactions = 100" >> $P/data/postgresql.conf
echo "wal_level = hot_standby" >> $P/data/postgresql.conf
echo "wal_keep_segments = 128" >> $P/data/postgresql.conf
echo "max_connections = 10" >> $P/data/postgresql.conf
echo "listen_addresses = '*'" >> $P/data/postgresql.conf
echo '' > $P/data/logfile
echo "host all all 0.0.0.0/0 trust" >> $P/data/pg_hba.conf
echo "host replication all 0.0.0.0/0 trust" >> $P/data/pg_hba.conf
echo "local replication all trust" >> $P/data/pg_hba.conf
$P/bin/pg_ctl -w -D $P/data -l $P/data/logfile start
$P/bin/createdb `whoami`
$P/bin/psql -c "create table test(k int primary key, v text);"
```
..., connected to PostgreSQL using psql, in second terminal I attached
to the backend process using gdb710 and input `c`. Now in psql:
```
eax=# create table tt5(x int);
CREATE TABLE
eax=# create table b_star(x int);
CREATE TABLE
eax=# insert into b_star values (1), (2), (3);
INSERT 0 3
eax=# insert into tt5 values (2), (3), (4), (5);
INSERT 0 4
eax=# select 1
eax-# from public.tt5 as subq_0
eax-# where EXISTS (
eax(# select 1
eax(# from public.b_star as ref_0
eax(# where false
eax(# );
?column?
----------
(0 rows)
eax=# select 1
eax-# from unnest('{}'::boolean[]) a (x)
eax-# left join (
eax(# select *
eax(# from unnest('{}'::boolean[])
eax(# where false
eax(# ) b (x) on a.x = b.x;
?column?
----------
(0 rows)
```
Everything seems to work, no stacktraces in gdb.
Could you please provide more concrete steps to reproduce these
issues i.e, OS and compiler version, compilation flags (or package
version), cluster config, database schema, etc? These steps are required
at least to make sure that fixed code really fixes a problem. Also it
would be a good idea to include these steps to regression tests.
--
Best regards,
Aleksander Alekseev
http://eax.me/
From | Date | Subject | |
---|---|---|---|
Next Message | Magnus Hagander | 2016-03-28 09:35:57 | Re: backup tools ought to ensure created backups are durable |
Previous Message | Dilip Kumar | 2016-03-28 09:32:54 | Re: Relation extension scalability |