Aliasing Left Side of Join Breaks Derivation
Los mantenedores suelen responder en 3 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 45/100
Línea de trabajo
Start with the PRQL input and expected-versus-actual BigQuery SQL in the issue; trace how an aliased derived relation is represented through join compilation, then find the related tests. Reproduce the missing profit derivation and use the expected SQL as the completion criterion. The issue names no source files or tests, so locating the relevant compiler path will take project familiarity.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
What happened?
Aliasing the left side of a join magically erases any derivations in that left side.
Without alias (seems to work):
prql target:sql.bigquery
from sales
derive {profit = sell_price - buy_price}
join side:left details (this.item_id == that.item_id)
select !{details.item_id}
With alias (doesn't work):
prql target:sql.bigquery
sales_with_profit = (
from sales
derive {profit = sell_price - buy_price}
)
join side:left details (this.item_id == that.item_id)
select !{details.item_id}
With the aliasing, the "profit" derivation completely disappears. That should not happen.
PRQL input
prql target:sql.bigquery
sales_with_profit = (
from sales
derive {profit = sell_price - buy_price}
)
join side:left details (this.item_id == that.item_id)
select !{details.item_id}
SQL output
WITH table_0 AS (
SELECT
*
FROM
sales
)
SELECT
table_0.*,
details.*
EXCEPT
(item_id)
FROM
table_0
LEFT JOIN details ON table_0.item_id = details.item_id
-- Generated by PRQL compiler version:0.11.2 (https://prql-lang.org/)
Expected SQL output
WITH table_0 AS (
SELECT
*,
sell_price - buy_price AS profit
FROM
sales
)
SELECT
table_0.*
EXCEPT
(profit),
details.*
EXCEPT
(item_id),
table_0.profit
FROM
table_0
LEFT JOIN details ON table_0.item_id = details.item_id
MVCE confirmation
- Minimal example
- New issue
Anything else?
No response
- Lenguaje dominante
- Rust
- Estrellas
- 10.9k
- Forks
- 261
- Merge medio
- 3 d 21 h
- PR fusionados (30 d)
- 84
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
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 PRQL/prql
-
Underscore does not work as expectedPosiblemente ocupada @prql-bot la tomó hace 2 días. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
PRQL/prql#6518 · 1 comentario ·
Los mantenedores suelen responder en 3 días
-
prqlc Debug Report HTML Does Not Escape Source File Name, Enabling Stored XSS via PRQLC_DEBUG_LOGAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
PRQL/prql#6502 · 1 comentario ·
Los mantenedores suelen responder en 3 días
-
Add `.prql` to linguistAbiertofriendliness integrations
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
PRQL/prql#1636 · 2 comentarios · 2 reacciones ·
Los mantenedores suelen responder en 3 días
-
Dificultad 4/5 1-2 días Aptitud para principiantes 12/100
PRQL/prql#6517 · 1 comentario ·
Los mantenedores suelen responder en 3 días
-
review-runs-tracking: 2026-11Abiertoreview-runs-tracking
Dificultad 3/5 Medio día Aptitud para principiantes 5/100
PRQL/prql#6513 · 1 comentario ·
Los mantenedores suelen responder en 3 días
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 79/100
qingjian-team/qingjian#901 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
longbridge/gpui-kit#3795 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 2 días
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
Los mantenedores suelen responder en 1 día