Beakerboy / Beakerboy/VBA-SQL-Library

SQLSelect — UNION storage/rendering broken

Open
#63 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
VBA
Stars
90
Forks
18
PR merge metrics
No merged PRs in 30d

Description

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 `sUnion` and `aUnion`; union array not initialized.
- `UnionString` builds only one union; ORDER BY placed before UNION in final SQL.

### Snippet (actual)
```vb
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)
```vb
' 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
1) Create two selects; call `First.Union Second` and then `OrderBy`.

### Actual
- UNION omitted/malformed; `ORDER BY` rendered without merging unions.

### Proposed Fix
- Store `(oSelect, sType)`; iterate unions; emit before `OrderByString`; initialize `aUnion`.

---

Contributor guide

No contributing guide indexed for this repository

Research direction

Start in src/ClassModules/SQLSelect.cls and inspect Union, UnionString, aUnion, and the final SQL rendering order. Reproduce the issue with two selects followed by OrderBy, then verify that unions are initialized, all unions are rendered, and UNION clauses appear before ORDER BY.

Written by the indexing model from the issue text.

Assessment

Tech stack
sql
Domain
database
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.