Re: WIP: multivariate statistics / proof of concept
tv@fuzzy.cz
From: "Tomas Vondra" <tv@fuzzy.cz>
To: "David Rowley" <dgrowleyml@gmail.com>
Cc: "Tomas Vondra" <tv@fuzzy.cz>,
"PostgreSQL-development" <pgsql-hackers@postgresql.org>
Date: 2014-10-29T11:21:08Z
Lists: pgsql-hackers
Dne 29 Říjen 2014, 10:41, David Rowley napsal(a): > > I've not really gotten around to looking at the patch yet, but I'm also > wondering if it would be simple include allowing functional statistics > too. > The pg_mv_statistic name seems to indicate multi columns, but how about > stats on date(datetime_column), or perhaps any non-volatile function. This > would help to solve the problem highlighted here > http://www.postgresql.org/message-id/CAApHDvp2vH=7O-gp-zAf7aWy+A-WHWVg7h3Vc6=5pf9Uf34DhQ@mail.gmail.com > . Without giving it too much thought, perhaps any expression that can be > indexed should be allowed to have stats? Would that be really difficult to > implement in comparison to what you've already done with the patch so far? I don't know, but it seems mostly orthogonal to what the patch aims to do. If we add collecting statistics on expressions (on a single column), then I'd expect it to be reasonably simple to add this to the multi-column case. There are features like join stats or range type stats, that are probably more directly related to the patch (but out of scope for the initial version). > I'm quite interested in reviewing your work on this, but it appears that > some of your changes are not C89: > > src\backend\commands\analyze.c(3774): error C2057: expected constant > expression [D:\Postgres\a\postgres.vcxproj] > src\backend\commands\analyze.c(3774): error C2466: cannot allocate an > array of constant size 0 [D:\Postgres\a\postgres.vcxproj] > src\backend\commands\analyze.c(3774): error C2133: 'indexes' : unknown > size [D:\Postgres\a\postgres.vcxproj] > src\backend\commands\analyze.c(4302): error C2057: expected constant > expression [D:\Postgres\a\postgres.vcxproj] > src\backend\commands\analyze.c(4302): error C2466: cannot allocate an > array of constant size 0 [D:\Postgres\a\postgres.vcxproj] > src\backend\commands\analyze.c(4302): error C2133: 'ndistincts' : unknown > size [D:\Postgres\a\postgres.vcxproj] > src\backend\commands\analyze.c(4775): error C2057: expected constant > expression [D:\Postgres\a\postgres.vcxproj] > src\backend\commands\analyze.c(4775): error C2466: cannot allocate an > array of constant size 0 [D:\Postgres\a\postgres.vcxproj] > src\backend\commands\analyze.c(4775): error C2133: 'keys' : unknown size > [D:\Postgres\a\postgres.vcxproj] > > The compiler I'm using is a bit too stupid to understand the C99 syntax. > > I guess you'd need to palloc() these arrays instead in order to comply > with > the project standards. > > http://www.postgresql.org/docs/devel/static/install-requirements.html > > I'm going to sign myself up to review this, so probably my first feedback > would be the compiling problem. I'll look into that. The thing is I don't have access to MSVC, so it's a bit difficult to spot / fix those issues :-( regards Tomas
Commits
-
Collect and use multi-column dependency stats
- 2686ee1b7ccf 10.0 landed
-
Implement SortSupport for macaddr data type
- f90d23d0c518 10.0 cited
-
Implement multivariate n-distinct coefficients
- 7b504eb282ca 10.0 landed
-
Generate fmgr prototypes automatically
- 352a24a1f9d6 10.0 cited