@@ -84,7 +84,7 @@ function Query(conn::Connection, sql::String; streaming::Bool=false, kwargs...)
84
84
result = MySQL. Result (MySQL. API. mysql_use_result (conn. ptr))
85
85
else
86
86
resulttype = :default
87
- result = result = MySQL. Result (MySQL. API. mysql_store_result (conn. ptr))
87
+ result = MySQL. Result (MySQL. API. mysql_store_result (conn. ptr))
88
88
end
89
89
90
90
if result. ptr != C_NULL
@@ -115,7 +115,7 @@ Tables.rows(q::Query) = q
115
115
Tables. schema (q:: Query{hasresult, names, T} ) where {hasresult, names, T} = Tables. Schema (names, T)
116
116
117
117
Base. length (q:: Query ) = q. ptr == C_NULL ? 0 : q. nrows
118
- Base. eltype (q:: Query{hasresult, names, types} ) where {hasresult, names, types} = NamedTuple{names, types }
118
+ Base. eltype (q:: Query{hasresult, names, types} ) where {hasresult, names, types} = NamedTuple{names}
119
119
120
120
cast (str, :: Type{Union{Missing, T}} ) where {T} = cast (str, T)
121
121
cast (str, :: Type{API.Bit} ) = API. Bit (isempty (str) ? 0 : UInt64 (str[1 ]))
@@ -131,19 +131,10 @@ function getvalue(ptr, col, ::Type{T}) where {T}
131
131
return deref == C_NULL ? missing : cast (unsafe_string (deref), T)
132
132
end
133
133
134
- function generate_namedtuple (:: Type{NamedTuple{names, types}} , q) where {names, types}
135
- if @generated
136
- vals = Tuple (:(getvalue (q. ptr, $ i, $ (fieldtype (types, i)))) for i = 1 : fieldcount (types))
137
- return :(NamedTuple {names, types} (($ (vals... ),)))
138
- else
139
- return NamedTuple {names, types} (Tuple (getvalue (q. ptr, i, fieldtype (types, i)) for i = 1 : fieldcount (types)))
140
- end
141
- end
142
-
143
134
function Base. iterate (q:: Query{resulttype, names, types} , st= 1 ) where {resulttype, names, types}
144
135
st == 1 && resulttype == :none && return (num_rows_affected= Int (q. result. ptr),), 2
145
136
q. ptr == C_NULL && return nothing
146
- nt = generate_namedtuple ( NamedTuple{names, types}, q )
137
+ nt = NamedTuple {names} ([ getvalue (q . ptr, i, fieldtype ( types, i)) for i in 1 : fieldcount (types)] )
147
138
q. ptr = API. mysql_fetch_row (q. result. ptr)
148
139
return nt, st + 1
149
140
end
0 commit comments