[Bug] GPORCA crashes the coordinator with dependencies extended statistics
Les mainteneurs répondent en général sous 3 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 30/100
Piste de recherche
Start by running the reproduction SQL with optimizer = on to confirm the SIGSEGV and capture a backtrace. The payload points to CExtendedStatsProcessor.cpp, where colid_to_attno_mapping->Find(&colid) is dereferenced without a null check around lines 279 and 355/365, while the check near line 431 does test for null. Done means the query returns one row (NULL | NULL | f) with optimizer on and the crash no longer occurs, with a regression test added.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Apache Cloudberry version
No response
What happened
Reproduce:
CREATE TABLE t1 (c0 name, c1 numeric, c2 boolean) DISTRIBUTED BY (c2);
INSERT INTO t1 VALUES ('a', 0.9, false), (NULL, NULL, false), ('', 0.1, false), ('1', 0.7, true), ('b', 0.5, NULL), ('', NULL, NULL), ('c', NULL, NULL);
CREATE STATISTICS s1 ON c0, c2 FROM t1;
CREATE STATISTICS s2 ON c1, c2 FROM t1;
ANALYZE t1;
SET optimizer = on;
SELECT * FROM (SELECT c0 AS a, c1 AS b, c2 AS c FROM t1 WHERE c2 IS FALSE) AS r WHERE r.a IS NULL AND r.b IS NULL AND r.c = FALSE;
-- server closed the connection unexpectedly
Expected: one row, NULL | NULL | f. That's what you get with optimizer = off, or with optimizer = on after dropping s1 and s2.
Actual: the coordinator backend crashes, and all other sessions are reset while the cluster recovers:
PANIC: Unexpected internal error: Master process received signal SIGSEGV
server process (PID ...) was terminated by signal 11: Segmentation fault
Stack (top frames):
gpnaucrates::CFilterStatsProcessor::MakeHistHashMapConjFilter
gpnaucrates::CFilterStatsProcessor::MakeStatsFilter
gpnaucrates::CFilterStatsProcessor::MakeStatsFilterForScalarExpr
gpopt::CLogicalSelect::PstatsDerive
gpopt::CExpressionHandle::DeriveRootStats
...
gpopt::CEngine::FinalizeExploration
Possible cause: MakeHistHashMapConjFilter calls CExtendedStatsProcessor::ApplyCorrelatedStatsToScaleFactorFilterCalculation. In that function, the result of colid_to_attno_mapping->Find(&colid) is dereferenced
without a null check (CExtendedStatsProcessor.cpp, around lines 279 and 355/365), while another call site (around line 431) does check for null. The filter here sits above a subquery and spans columns from two
different dependency statistics objects, which may produce a column ID with no mapping. I haven't confirmed this in a debugger.
What you think should happen instead
No response
How to reproduce
CREATE TABLE t1 (c0 name, c1 numeric, c2 boolean) DISTRIBUTED BY (c2);
INSERT INTO t1 VALUES ('a', 0.9, false), (NULL, NULL, false), ('', 0.1, false), ('1', 0.7, true), ('b', 0.5, NULL), ('', NULL, NULL), ('c', NULL, NULL);
CREATE STATISTICS s1 ON c0, c2 FROM t1;
CREATE STATISTICS s2 ON c1, c2 FROM t1;
ANALYZE t1;
SET optimizer = on;
SELECT * FROM (SELECT c0 AS a, c1 AS b, c2 AS c FROM t1 WHERE c2 IS FALSE) AS r WHERE r.a IS NULL AND r.b IS NULL AND r.c = FALSE;
-- server closed the connection unexpectedly
Operating System
any
Anything else
No response
Are you willing to submit PR?
- Yes, I am willing to submit a PR!
Code of Conduct
- I agree to follow this project's Code of Conduct.
- Langage dominant
- C
- Étoiles
- 1.4k
- Forks
- 265
- Merge moyen
- 3 j 22 h
- PR mergées (30 j)
- 82
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
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 apache/cloudberry
-
[Bug] Expand fails to recognize user-defined tablespacesPeut-être pris @nix-oss l’a pris il y a 78 jours. Ouvertetype: Bug
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
apache/cloudberry#1885 · 2 réactions ·
Les mainteneurs répondent en général sous 3 jours
-
gpexpand first stage fails: 'SyncPackages' object has no attribute 'ret' (extension sync never runs; regression)Peut-être pris @talmacschen-arch l’a pris il y a 139 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 86/100
apache/cloudberry#1825 ·
Les mainteneurs répondent en général sous 3 jours
-
type: Bug
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
apache/cloudberry#2235 ·
Les mainteneurs répondent en général sous 3 jours
-
Difficulté 3/5 Une demi-journée Accessibilité débutants 30/100
apache/cloudberry#2224 ·
Les mainteneurs répondent en général sous 3 jours
-
[Bug] GPORCA: “could not find MotionState” for correlated EXISTS with LIMIT and a scalar subqueryPeut-être pris @Alena0704 l’a pris il y a 6 jours. Ouvertetype: Bug
apache/cloudberry#2221 · 1 personne assignée ·
Les mainteneurs répondent en général sous 3 jours
Toutes les issues de apache/cloudberry
Issues similaires
-
[compiler-rt] Rtsan-aarch64-NoInstTest: error: no such file or directory: 'NOTFOUND' (libatomic)Ouvertebuild-problem compiler-rt:rtsan platform:linux
Difficulté 2/5 1-3 heures Accessibilité débutants 63/100
llvm/llvm-project#239039 ·
Les mainteneurs répondent en général sous 1 jour
-
component:obi contribfest go test
Difficulté 2/5 Moins d'une heure Accessibilité débutants 83/100
open-telemetry/opentelemetry-ebpf-instrumentation#4143 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
opcache: smm_shared_globals left pointing to a dead stack frame when there is no SHM backendOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
Bug :bug:
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
sonic-net/sonic-buildimage#30541 ·
Les mainteneurs répondent en général sous 1 jour