Good steps!
Yes on output the cols used in where need to match otherwise the server core 
will filter out those rows. So that aspect is clear.

Andrew McDonnell <b...@andrewmcdonnell.net> wrote:

>Hello all
>
>(Sorry this is a little muddled, I need to go to bed!)
>
>Using the code from basic.test I can get results with
>
>SELECT * FROM graph2 WHERE latch = 'breadth_first' AND origid = 1 AND weight = 
>1;
>
>that match
>
>SELECT * FROM graph WHERE latch = 2 AND origid = 1 AND weight = 1;
>
>(Here, graph2 is the same as graph but with a varchar latch)
>
>
>(BTW Arjen, I completely get your point about not maintaining backwards
>compatibility for int latch but I am finding it extremely useful to compare
>results when testing and also understand stuff in the debugger.  So I would
>like to leave the #ifdef code there as scaffolding until everything works and
>then remove it)
>
>
>However:
>
>SELECT * FROM graph2 WHERE latch = '2' AND origid = 1 AND weight
>
>I can see from the debug that the '2' is being parsed correctly to
>breadth_first and then index_read_idx() executing graph->search() with exact
>same arguments.
>However the query returns no results, despite graph->fetch_row() apparently
>working at.
>I can see fill_record() is only called once (not four times as when called
>when latch is a named string - notably, the 'breadth_first' result has
>fill_record() called by multi_range_read_next, which I dont see happening with
>latch='2')
>
>I suspect this is somehow key related: I populate the row with the string
>'breadth_first' but mysql is looking for a '2' on the first row returned?
>
>What I haven't worked out yet is how to get the original latch string from the
>query to put into the result in fill_record(), which might fix the above.
>It may be necessary to hack some additional state into the graph object to
>pass this key string through.
>
>
>Also, I can crash mysqld with an assertion by simply putting a bogus value in
>for latch, but the stacktrace is not in our code, which leaves me in a bit of
>a bind.
>
>Finally, if I go
>
>SELECT * FROM graph2 WHERE latch = 2 AND origid = 1 AND weight = 1;
>
>it never enters records_in_range() at all, even from a restart / cache reset
>so it seems to be not auto casting to a string in this case.
>
>I suspect I may be missing something with the keys still somewhere...
>
>
>
>anyway,
>enjoy
>
>(as previously noted, I wont have much time over next week)
>
>
>BTW, I am using NetBeans as a glorified text editor with code completion, and
>able to attach gdb to mysqld for graphical debugging, I can post instructions
>later if you are interested
>
>
>-- 
>
>
>https://launchpad.net/~andymc73
>http://blog.oldcomputerjunk.net
>Twitter: @andymc73
>GPG: http://www.andrewmcdonnell.net/gpg.html
>
>-- 
>Mailing list: https://launchpad.net/~oqgraph-dev
>Post to     : oqgraph-dev@lists.launchpad.net
>Unsubscribe : https://launchpad.net/~oqgraph-dev
>More help   : https://help.launchpad.net/ListHelp
-- 
Mailing list: https://launchpad.net/~oqgraph-dev
Post to     : oqgraph-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~oqgraph-dev
More help   : https://help.launchpad.net/ListHelp

Reply via email to