Opened 9 years ago
Last modified 9 years ago
#26506 new New feature
Implement support for TABLESAMPLE
Reported by: | Nick Pope | Owned by: | nobody |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | dev |
Severity: | Normal | Keywords: | tablesample |
Cc: | pembo13@… | Triage Stage: | Accepted |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Pull Requests: | How to create a pull request | ||
Description ¶
PostgreSQL 9.5 added support for the TABLESAMPLE
feature from the SQL:2003 standard. It would be useful to add support for this to Django.
For PostgreSQL it would also be good to support the custom tsm_system_rows
and tsm_system_time
extensions to provide SYSTEM_ROWS
and SYSTEM_TIME
in addition to BERNOULLI
and SYSTEM
defined in the standard.
Note that TABLESAMPLE
can also be used to update or delete only a sample of rows.
I suggest adding .tablesample(method, value[, seed])
to QuerySet
where:
method
is one ofbernoulli
,system
,rows
ortime
,value
is the percentage, count or time argument to pass,seed
is the value to use for theREPEATABLE
option.
Note that seed
should not be allowed with rows
or time
methods -- see links to extension documentation below.
Minimum versions for supported databases:
- PostgreSQL 9.5
- Microsoft SQL Server 2005 -- only supports
system
(percent) androws
(count)
References:
- http://www.neilconway.org/talks/hacking/ottawa/sql_standard.pdf
- https://wiki.postgresql.org/wiki/TABLESAMPLE_Implementation
- http://blog.2ndquadrant.com/tablesample-in-postgresql-9-5-2/
- http://www.depesz.com/2015/05/23/waiting-for-9-5-tablesample-sql-standard-and-extensible/
- http://www.postgresql.org/docs/9.5/static/tsm-system-time.html
- http://www.postgresql.org/docs/9.5/static/tsm-system-rows.html
- https://msdn.microsoft.com/en-us/library/ms189108(v=sql.105).aspx
According to the ticket's flags, the next step(s) to move this issue forward are:
- To provide a patch by sending a pull request. Claim the ticket when you start working so that someone else doesn't duplicate effort. Before sending a pull request, review your work against the patch review checklist. Check the "Has patch" flag on the ticket after sending a pull request and include a link to the pull request in the ticket comment when making that update. The usual format is:
[https://github.com/django/django/pull/#### PR]
.
Change History (2)
comment:1 by , 9 years ago
Triage Stage: | Unreviewed → Accepted |
---|
comment:2 by , 9 years ago
Cc: | added |
---|
Before doing any coding, please create a thread on the DevelopersMailingList to get feedback on the proposed APIs and add a link to it in this ticket.