← Back to team overview

maria-developers team mailing list archive

CREATE OR REPLACE DATABASE algorithm

 

Hi Alexander and all,

Following are the steps that I am following for implementing "CREATE OR
REPLACE" for DATABASE

"..." signifies, there exists one or more lines of code in that block of
the function.

mysql_create_db(...)
  ...
  ...
  if(db exists) {
    if(create_or_replace) {
      if(DROP_ACL access not granted) {
        // Error 1
        DBUG_RETURN(-1)
      }

      if(mysql_rm_db(...) unsuccessful) {
        // Error 2
        DBUG_RETURN(-1)
      }

      Reset m_status from diagnostics cause it is changed by mysql_rm_db.
      Proceed with normal create db.
    }
    else if(if not exists) {
      ...
    }
    else
      ...
  }
  ...
  ...
}

Is the above algorithm correct? Also, I am not yet sure which errors should
be displayed at both the places "Error 1" and "Error 2".

I have written and tested the above code. It is working fine. Testing
involves running all the existing test cases and executing "CREATE OR
REPLACE DATABASE" command on the console manually. "IF NOT EXISTS" gives
error if used with "CREATE OR REPLACE".

Any other test cases I need to consider?

Thanks,
Sriram

Follow ups