Thin mode only: "ORA-00979: not a GROUP BY expression"
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 45/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Área
- backend-api-design, databases
Línea de trabajo
Comienza con query.py y reproduce la consulta CASE WHEN, GROUP BY, bind-variable y COUNT(DISTINCT) en Thin mode; después compárala con Thick mode. Sigue la ruta de ejecución de Thin a través de src/oracledb/impl/thin/cursor.pyx, protocol.pyx y messages.pyx; el trabajo estará terminado cuando la consulta funcione en Thin mode sin ORA-00979 y coincida con el comportamiento de Thick mode.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
- What versions are you using?
DB version: 19.3.0
platform.platform: macOS-14.6.1-arm64-arm-64bit
(but same on platform.platform: Linux-5.15.0-1057-aws-x86_64-with-glibc2.35)
sys.maxsize > 2**32: True
platform.python_version: 3.11.7
oracledb.__version__: 2.5.0
- Is it an error or a hang or a crash?
Error.
- What error(s) or behavior you are seeing?
I am seeing the error "ORA-00979: not a GROUP BY expression" when in thin mode, but the same program works in Thick mode.
Seems to be triggered by the interaction of 1) Thin mode 2) CASE WHEN in GROUP BY 3) Bind variables 4) COUNT(DISTINCT).
To reproduce save the script in (7) to the file query.py and run:
python query.py
Traceback (most recent call last):
File "query.py", line 20, in <module>
for r in cursor.execute(sql, params):
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "venv/lib/python3.11/site-packages/oracledb/cursor.py", line 710, in execute
impl.execute(self)
File "src/oracledb/impl/thin/cursor.pyx", line 196, in oracledb.thin_impl.ThinCursorImpl.execute
File "src/oracledb/impl/thin/protocol.pyx", line 440, in oracledb.thin_impl.Protocol._process_single_message
File "src/oracledb/impl/thin/protocol.pyx", line 441, in oracledb.thin_impl.Protocol._process_single_message
File "src/oracledb/impl/thin/protocol.pyx", line 433, in oracledb.thin_impl.Protocol._process_message
File "src/oracledb/impl/thin/messages.pyx", line 74, in oracledb.thin_impl.Message._check_and_raise_exception
oracledb.exceptions.DatabaseError: ORA-00979: not a GROUP BY expression
Help: https://docs.oracle.com/error-help/db/ora-00979/
- Does your application call init_oracle_client()?
No. Thin mode.
The error does not trigger in Thick mode.
- Include a runnable Python script that shows the problem.
sql = """
SELECT
CASE WHEN "DUAL"."DUMMY" IS NOT NULL THEN :arg0 ELSE NULL END,
COUNT(DISTINCT "DUAL"."DUMMY")
FROM "DUAL"
GROUP BY CASE WHEN "DUAL"."DUMMY" IS NOT NULL THEN :arg0 ELSE NULL END
"""
params = {":arg0": "arg0"}
import oracledb
un = "user"
pw = "pass"
dsn = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SID=ORCLCDB)))"
# Failure only in Thin mode. The program runs fine in Thick mode.
# oracledb.init_oracle_client()
with oracledb.connect(user=un, password=pw, dsn=dsn) as connection:
with connection.cursor() as cursor:
for r in cursor.execute(sql, params):
print(r)
- Lenguaje dominante
- Python
- Estrellas
- 451
- Forks
- 118
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de oracle/python-oracledb
-
Dificultad 4/5 3-5 días Aptitud para principiantes 52/100
oracle/python-oracledb#610 ·
-
fetch_df_batches() segfaults with fetch_decimals=True and repeated NUMBER values across batchesAbiertobug
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
oracle/python-oracledb#608 · 2 comentarios ·
-
bug
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
oracle/python-oracledb#607 · 3 comentarios ·
-
bug
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
oracle/python-oracledb#592 · 6 comentarios · 1 reacción ·
-
enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
oracle/python-oracledb#564 ·
Todos los issues de oracle/python-oracledb
Issues similares
-
correction metadata
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
acl-org/acl-anthology#10104 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug status/needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
prowler-cloud/prowler#12885 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Bug in GaussianTailProbabilityCalibrator: running_statistics=False still uses a windowed varianceAbiertobug good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
selimfirat/pysad#107 ·
Los mantenedores suelen responder en 1 día
-
bug ci-failure high priority
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
vllm-project/vllm-omni#8194 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día