@@ -84,7 +84,7 @@ function Query(conn::Connection, sql::String; streaming::Bool=false, kwargs...)
8484 result = MySQL. Result (MySQL. API. mysql_use_result (conn. ptr))
8585 else
8686 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))
8888 end
8989
9090 if result. ptr != C_NULL
@@ -115,7 +115,7 @@ Tables.rows(q::Query) = q
115115Tables. schema (q:: Query{hasresult, names, T} ) where {hasresult, names, T} = Tables. Schema (names, T)
116116
117117Base. 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}
119119
120120cast (str, :: Type{Union{Missing, T}} ) where {T} = cast (str, T)
121121cast (str, :: Type{API.Bit} ) = API. Bit (isempty (str) ? 0 : UInt64 (str[1 ]))
@@ -131,19 +131,10 @@ function getvalue(ptr, col, ::Type{T}) where {T}
131131 return deref == C_NULL ? missing : cast (unsafe_string (deref), T)
132132end
133133
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-
143134function Base. iterate (q:: Query{resulttype, names, types} , st= 1 ) where {resulttype, names, types}
144135 st == 1 && resulttype == :none && return (num_rows_affected= Int (q. result. ptr),), 2
145136 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)] )
147138 q. ptr = API. mysql_fetch_row (q. result. ptr)
148139 return nt, st + 1
149140end
0 commit comments