[Maria-developers] Progress report for MDEV-12326

2020-06-28 Thread Mohammed Hammaad Mateen
Greetings,
Hope you are safe and doing great,

This post describes the things I've done during 22-28 June for
Coding phase-1 under the mentor-ship of Sergei Golubchik and Oleksandr
Byelkin for GSoC-20 to implement MDEV-12326. The tasks taken up for this
week was to work towards validating the fields of the return list,
requested by the client when it uses *multi-table DELETERETURNING *or*
multi-table UPDATERETURNING*. If an invalid column name is requested in
the return list then it should result in displaying:

*ERROR 1054 (42S22): Unknown column '' in 'field list' *.

Things I learnt while implementing this was, firstly that
*setup_fields* and *setup_wild* functions validate the *returning_item_list*
i.e. column names, expressions, etc. in *RETURNING* statement and
understood that validation is done implicitly. Moreover,
*setup_returning_fields* method could also be used interchangeably.
Secondly, if we have to completely run a .test file that has many failing
test cases then we should provide --force option twice, as in*:*


*./mtr  --force --force.   *
 I've also written and recorded the result for the above usecase,
for *multi-table DELETE RETURNING *and will also do the same for
*multi-table
UPDATE RETURNING v*ery soon.

  All in all coding phase-1 was really informative and I would like to
thank *MariaDB Foundation* for having me. All the code is uploaded up to
date in these remote repositories, please feel free to comment.

MULTI-TABLE UPDATE RETURNING:
https://github.com/MariaDB/server/compare/10.5...MohammedHMateen:MDEV-12326-multi-update-returning?expand=1

MULTI-TABLE DELETE RETURNING:
https://github.com/MariaDB/server/compare/10.5...MohammedHMateen:MDEV-12326-multi-delete-returning?expand=1

Thank you

Regards,
Mohammed Hammaad Mateen
___
Mailing list: https://launchpad.net/~maria-developers
Post to : maria-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp


[Maria-developers] Progress report for MDEV-12326

2020-06-21 Thread Mohammed Hammaad Mateen
Greetings,
Hope you are safe and doing great,

This post describes the things I've done during 15-21 June under the
mentor-ship of Sergei Golubchik and Oleksandr Byelkin for GSoC-20 to
implement MDEV-12326. The tasks taken up for this week was to work towards
extending the parser for multi-table DELETERETURNING and multi-table
UPDATERETURNING, side-by-side, thereby changing the sql_yacc.yy file,
for incorporating opt_returning rule in respective query format.

  I've also updated the test suite for multi-table UPDATE RETURNING
and  extended the parser by adding select_result parameter in multi-update
and multi-delete functions, so as to enable returning a result set
possible, whenever we query with RETURNING clause.

  All the code is uploaded up to date in these remote repositories, please
feel free to comment.

MULTI-TABLE UPDATE RETURNING:
https://github.com/MariaDB/server/compare/10.5...MohammedHMateen:MDEV-12326-multi-update-returning?expand=1

MULTI-TABLE DELETE RETURNING:
https://github.com/MariaDB/server/compare/10.5...MohammedHMateen:MDEV-12326-multi-delete-returning?expand=1


Thank you

Regards,
Mohammed Hammaad Mateen
___
Mailing list: https://launchpad.net/~maria-developers
Post to : maria-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp


[Maria-developers] Progress report for MDEV-12326

2020-06-14 Thread Mohammed Hammaad Mateen
Greetings,
Hope you are safe and doing great,

This post describes the things I've done during 8-14 June under the
mentor-ship of Sergei Golubchik and Oleksandr Byelkin for GSoC-20 to
implement MDEV-12326.

The tasks taken up for this week was to work towards extending the parser
for multi-table DELETERETURNING by changing the sql_yacc.yy file, for
incorporating opt_returning rule in multi-delete query format. The
RETURNING_SYM in opt_returning rule incorporates the RETURNING keyword and
works completely fine with  but for some reason it fails and
crashes the server for RETURNING * . I'll try to run it in a debugger and
will try to fix it soon. Meanwhile, I'll also be pushing the code on this
branch (https://github.com/MariaDB/server/pull/1590/commits).

Thank you

Regards,
Mohammed Hammaad Mateen
___
Mailing list: https://launchpad.net/~maria-developers
Post to : maria-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp


[Maria-developers] Progress report week 5

2020-06-10 Thread Mohammed Hammaad Mateen
Greetings,
Hope you are safe and doing great,

This post describes the things I've done during 1-7 June under the
mentor-ship of Sergei Golubchik and Oleksandr Byelkin for GSoC-20. The
tasks taken up for this week Greetings mentors, I've realized that to
extend the parser for multi delete, I should be changing the sql_yacc.yy
file, for incorporating opt_returning rule in multi-delete. opt_returning
rule works completely fine with single table delete, but to tweak it to
adapt for multi-delete, required me to learn some bison grammar syntax and
semantics and that took me a couple of days.

Moreover everytime I made changes to the grammar, the server used to crash
rendering all changes invalid. I'll try to push the code that was
triggering crashes, shortly.

Thank you

Regards,
Mohammed Hammaad Mateen
___
Mailing list: https://launchpad.net/~maria-developers
Post to : maria-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp


[Maria-developers] Progress Report - Week 3

2020-05-25 Thread Mohammed Hammaad Mateen
Greetings,
Hope you are safe and doing great,

This post describes the things I've done in my third week [ 18-24 May ] of
Community Bonding Period under the mentor-ship of Sergei Golubchik and
Oleksandr Byelkin for GSoC-20. The tasks taken up for this week was to
study and analyze:

*INSERT RETURNING:*
• *TableList* consists of 1 table instance to use, where each instance is a
structure consisting of db argument, table name argument, alias argument
and lock type argument. *Referenced this from the table.h file.*
• In *sql_parse.cc* <http://sql_parse.cc> under *case SQLCOM_INSERT*:
   we do a DBUG_ASSERT where first_table == all_table && first_table!=0 //
we check if only 1 table is used and the table used is already created.
• if lex-> has_returning() we increment the system status var by 1 and
perform analyze.. insert.. returning.
• we compute result by mysql_insert function by passing the following
arguments.
- Thread Handler thd
- all table instances
- list of all the fields used
- the values we want to insert
- the list of update feilds
- and update value list
- duplicate flag
- ignore
- result of select
• if Inserting fails due to some reason we equate result to
send_explain(thd)
• we also update the MYSQL_INSERT_DONE with result of insert and the the
row count.

*INSERT.. SELECT.. RETURNING:*
• We fix the lock on first table.
• lock other tables until command is written to the binary log.
• the procedure is same as discussed earlier with respect to insert
returning.
• To switch to the second table we traverse from first_table to (->)
next_local and we compute select result with the help of select insert
function.
• we can now unlock the tables and we also need to check if something
changed after unlocking, of that happens we should invalidate the table
from the query cache using query_cache_invalidate3 function.
• Manual cleaning of select result obtained from select insert must be done.

Regards,
Mohammed Hammaad Mateen
___
Mailing list: https://launchpad.net/~maria-developers
Post to : maria-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp


[Maria-developers] Progress report - Week 2

2020-05-18 Thread Mohammed Hammaad Mateen
Greetings,
Hope you are safe and doing great,

This post describes the things I've done in my second week [ 11-17 May ] of
Community Bonding Period under the mentor-ship of Sergei Golubchik and
Oleksandr Byelkin for GSoC-20. Tasks done this week were mostly the
continuation of the leftover tasks from the previous week and some related
study.

Things I've done include:

1:* I was caught up in analysing how was  DELETE  RETURNING
implemented, which led me to read from:*

• *sp_head.cc* : this made me understand that sp actually meant stored
procedures but there is another called PS which I'm yet to figure out.

• *sql_parse.cc* : from here I understood that delete return as actually {
Analyse->Delete->Return } and all the logic for returning is executed
if(lex->has_returning()).

2: Though I've raised the pull request, *MDEV-14558* is not yet completely
tested as it does not include tests for *mysql \s*, moreover, I'm facing
problems to escape the backslash inorder to write a test-case for *mysql \s*
.

Regards,
Mohammed Hammaad Mateen
___
Mailing list: https://launchpad.net/~maria-developers
Post to : maria-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp


[Maria-developers] Progress Report - Week 1

2020-05-10 Thread Mohammed Hammaad Mateen
Greetings,
Hope you are safe and doing great,

This post describes the things I've done in my first week [ 4-10 May ] of
Community Bonding Period under the mentor-ship of Sergei Golubchik and
Oleksandr Byelkin for GSoC-20 and I must acknowledge that it was really an
interactive experience and at the same time informative as well.

Things I've done include:
1: *Raising my first ever pull request for MariaDB under MDEV-14558 *:
Learnt about *strnxmov*, a function of C++ which I had never used earlier.
I also came across the procedure of testing my implemented code. Wrote some
test cases for the same and generated their corresponding results.
2:* Understand the working of the functions under multi_delete*: Ran it in
the debugger and tried to familiarize myself with the internals of how
Multiple Table Delete actually works.

Things to-do:
1: Though I've raised the pull request, MDEV-14558 is not completed tested
as it does not include tests for *mysql \s*, moreover, test cases have to
be refactored.
2: Learn more about the working of *multi_delete* so as to develop a parser
for  Multiple Table Delete Returning.
3: Write some test cases for Multiple Table Delete Returning before hand.

Regards,
Mohammed Hammaad Mateen
___
Mailing list: https://launchpad.net/~maria-developers
Post to : maria-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp