/** * Parses DELETE FROM command. * * @param database database * @param command DELETE FROM command * */ public static function parse($database, $command) { if (preg_match(self::PATTERN_DELETE_FROM, $command, $matches) > 0) { $line = $command; $table_name = $matches[1]; $where_clause = $matches[2]; $table_name = sql_parser::get_schema_name($table_name, $database) . '.' . sql_parser::get_object_name($table_name); $schema = $database->get_schema(sql_parser::get_schema_name($table_name, $database)); if ($schema == null) { throw new exception("Failed to find schema for data delete: " . sql_parser::get_schema_name($table_name, $database)); } $table = $schema->get_table(sql_parser::get_object_name($table_name)); if ($table == null) { throw new exception("Failed to find table for data delete: " . $table_name); } pgsql8_table::delete_data_row($table, $where_clause); } else { throw new exception("Cannot parse command: " . $command); } }