On 7/5/17 12:04 PM, crimaniak wrote:
Hi all!

After some hard time with debugging, I found ResultRange returned by query() and Prepared::query() of mysql-native package can't be combined with map() because after map() it becomes empty resultset.

[snip]
As you see simple each() and foreach() works, but all examples with map() involved always empty. Can anybody explain such strange behavior?


Because of the temporary copy likely inside map closes the connection.

See the bug I reported: https://github.com/mysql-d/mysql-native/issues/117

I work around this in my code by moving the temporary copy. But I'm sorry to say you likely will not be able to fix map.

I think Nick's comment is interesting, "Seems that using struct dtors without refcounting should in general be regarded as a code smell?"

It's a good question. I've also always added ref counting when wanting to "auto close" a struct's resources. In fact, I can't really think of a good use of destructors for structs that isn't for reference counting itself.

-Steve

Reply via email to