SQLSelect — UNION storage/rendering broken
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 55/100
Direzione di ricerca
Inizia in src/ClassModules/SQLSelect.cls ed esamina Union, UnionString, aUnion e l’ordine finale di generazione SQL. Riproduci il problema con due SELECT seguite da OrderBy, quindi verifica che le unioni vengano inizializzate, che tutte le unioni vengano generate e che le clausole UNION compaiano prima di ORDER BY.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
SQLSelect: fix UNION storage/rendering and clause order
- Component:
src/ClassModules/SQLSelect.cls
Problems
- Stores the class identifier instead of the instance in
Union. - Name mismatch between
sUnionandaUnion; union array not initialized. UnionStringbuilds only one union; ORDER BY placed before UNION in final SQL.
Snippet (actual)
Public Sub Union(oSelect As SQLSelect, Optional sType = "")
Dim UnionArray() As Variant
UnionArray = Array(SQLSelect, sType) ' uses class name, not instance
' ...
End Sub
Private Function UnionString()
Dim NewSelect As iSQLQuery
aUnion = UnionArray(0)
Set NewSelect = aUnion(0)
UnionString = " UNION " & NewSelect.toString()
End Function
Expected (conceptual)
' Store (oSelect, sType)
aUnion = ArrayPush(aUnion, Array(oSelect, sType))
' Build all unions and place before ORDER BY
Function UnionString() As String
Dim i As Long, s As String
For i = 0 To UBound(aUnion)
Dim it As Variant: it = aUnion(i)
Dim q As iSQLQuery: Set q = it(0)
Dim t As String: t = it(1)
s = s & " UNION " & IIf(t <> "", t & " ", "") & q.toString()
Next i
UnionString = s
End Function
Steps to Reproduce
- Create two selects; call
First.Union Secondand thenOrderBy.
Actual
- UNION omitted/malformed;
ORDER BYrendered without merging unions.
Proposed Fix
- Store
(oSelect, sType); iterate unions; emit beforeOrderByString; initializeaUnion.
- Lingua principale
- VBA
- Stelle
- 90
- Fork
- 18
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Beakerboy/VBA-SQL-Library
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 55/100
Beakerboy/VBA-SQL-Library#68 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 55/100
Beakerboy/VBA-SQL-Library#67 ·
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 52/100
Beakerboy/VBA-SQL-Library#66 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 55/100
Beakerboy/VBA-SQL-Library#65 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 55/100
Beakerboy/VBA-SQL-Library#64 ·
Tutte le issue di Beakerboy/VBA-SQL-Library
Issue simili
-
company delete fails with 500 on any company that has activity (cost events, inbox dismissals)Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
paperclipai/paperclip#14982 ·
I maintainer di solito rispondono entro 1 giorno
-
component:sight
Difficoltà 2/5 1-3 ore Idoneità per principianti 92/100
agentic-os-org/ANOLISA#4103 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
blinklabs-io/dingo#4937 ·
I maintainer di solito rispondono entro 1 giorno
-
A-io-database bug needs triage python
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
I maintainer di solito rispondono entro 1 giorno
-
A broken shared database makes workspace updates silently drop the repo's saved exclude patternsApertabug good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
repowise-dev/repowise#2947 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno