Oracle SAMPLE clause: FROM t SAMPLE(n) [SEED(m)] is a syntax error in oracle mode
Les mainteneurs répondent en général sous 1 jour
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 25/100
Piste de recherche
Start by reading the Oracle-mode grammar and the existing TABLESAMPLE grammar and tests; the issue identifies the PostgreSQL 19beta1 base and proposes mapping Oracle SAMPLE forms onto existing TABLESAMPLE behavior. Check open pull request #2897 for the current implementation direction. Done means the listed SAMPLE, SAMPLE BLOCK, SEED, and trailing-alias examples parse in oracle mode with the proposed mappings and regression coverage.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Description
Oracle applications sample tables with the SAMPLE clause of the FROM
list: SAMPLE (percentage) selects a random fraction of the rows,
SAMPLE BLOCK (percentage) a fraction of blocks, and SEED (seed_value)
makes the sample reproducible:
SELECT * FROM employees SAMPLE(10);
SELECT * FROM employees SAMPLE BLOCK(15) SEED(42);
SELECT * FROM employees SAMPLE(10) e WHERE e.deptno = 20;
In oracle mode every one of these is a syntax error today, because the
oracle grammar only knows PostgreSQL's TABLESAMPLE spelling:
SELECT * FROM dual SAMPLE(50);
-- ERROR: syntax error at or near "(" ... (SAMPLE parses as a table alias)
Migrated quality-check, backfill and reporting SQL therefore needs a manual
rewrite to TABLESAMPLE bernoulli/system, and the alias has to move to the
other side of the clause, since PostgreSQL's spelling puts the alias before
the sample while Oracle puts it after.
Expected behaviour
SAMPLE (n) [SEED (m)] (and SAMPLE BLOCK (n) [SEED (m)]) parse in oracle
mode, with the alias allowed after the clause per the Oracle spelling.
Actual behaviour
Syntax error; the word SAMPLE is taken for a table alias and the
parenthesized percentage fails to parse.
Proposal
Parse the clause as sugar over the existing TABLESAMPLE machinery, so no
new sampling code enters the executor:
SAMPLE (n)→TABLESAMPLE bernoulli (n)— the per-row selection
probability ofbernoullimatches Oracle's documented row-level sampling;SAMPLE BLOCK (n)→TABLESAMPLE system (n)— block-level sampling;SEED (m)→REPEATABLE (m).
SAMPLE and SEED would join TABLESAMPLE in the type_func_name keyword
class (they stop being usable as a bare column reference or table alias,
exactly the trade-off PostgreSQL made for TABLESAMPLE itself), and BLOCK
becomes an unreserved keyword, which stays usable as a name.
Environment
IvorySQL master @ 5aa044b341 (PostgreSQL 19beta1 base), cluster created
with initdb -m oracle.
- Langage dominant
- C
- Étoiles
- 1.1k
- Forks
- 232
- Merge moyen
- 2 j 3 h
- PR mergées (30 j)
- 8
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de IvorySQL/IvorySQL
-
PostgreSQL::Version rejects documented full psql version outputPeut-être pris @feitiansiyan l’a pris aujourd’hui. Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
IvorySQL/IvorySQL#2999 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
UTL_FILE.NEW_LINE silently ignores negative line countsPeut-être pris @X-LightYear l’a pris il y a 8 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 64/100
IvorySQL/IvorySQL#2634 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Character function regression assumes normal identifier case on default interchange clustersPeut-être pris @zhouxj52 l’a pris il y a 15 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
IvorySQL/IvorySQL#2470 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
xml2 no-libxslt expected files do not match PG/Oracle input scriptsPeut-être pris @zhouxj52 l’a pris il y a 15 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
IvorySQL/IvorySQL#2468 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Title: Build failure in DBMS_SCHEDULER due to incorrect placement of pg_noreturnPeut-être pris @darshan-s-44 l’a pris il y a 22 jours. Ouvertebug good first issue
Difficulté 1/5 Moins d'une heure Accessibilité débutants 75/100
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de IvorySQL/IvorySQL
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
arduino/ArduinoCore-megaavr#152 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
FujiNetWIFI/fujinet-firmware#2261 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
kivy/python-for-android#3405 · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
-
Nmap
Difficulté 1/5 Moins d'une heure Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 1 jour
-
`nuklear.h` shows old versionPeut-être pris @TomJGooding l’a pris aujourd’hui. Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 72/100
Immediate-Mode-UI/Nuklear#1004 ·