maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #09654
GSoC 2016: Can anybody help me with a minor technical problem?
Hi everyone,
I've just posted it in my blog here
<http://gsocmariadbshagalla.blogspot.ru/> :
Finially I finished my project on recursive CTE, so I can resume working on
my project of GSOC 2016.
As I said in my previous post, I decided to start with building items
clones (items are used to build different kinds of expressions in MySQL).
Items are typical tree structures. If I just copy a node in the item
structure, pointers to the subtrees won't be right. Fortunately this
pointers can be fixed in the method Item_func_or_sum::build_clone. To copy
nodes we use copy constructor. As we don't know the type of the node in
general the copy constructor should be virtual. I called it get_copy. It
should be implemented for each terminal class of items. There are dozens of
such classes.
How they could be caught?
I used the following trick.
My get_copy for the base class Item is 'pseudo-abstract':
Item *tem::get_copy(...) { dbug_print_item(this); DBUG_ASSERT(0); return 0;
}
Here dbug_print_item(this) helps me to understand for which class get_copy
is missed.
If I call now method build_clone, for example in JOIN::optimize_inner(), to
build a clone for the WHERE condition, and launch tests, it'll be easy for
me to understand for which classes lack implementations of get_copy.
Here I've faced some minor problem: how to skip the queries that are
excuted by mtr before it starts running the tests.
Anybody knows?
(Now I have a workaround: call build_clone() conditinally and manually
trigger the condition. Of course it's not nice.)
Best wishes,
Galina Shalygina.
Follow ups