示例#1
0
 function submit_script_for_propagation($script_sql_code, $script_description, $database_role, $deployment_environments, $default_schema, $auth_user, $credentials)
 {
     $script_sql_code = trim($script_sql_code);
     if (empty($database_role)) {
         throw new Exception("Got empty database role");
     }
     if (!in_array($database_role, $this->get_database_role_ids())) {
         throw new Exception("Unknown database role: " . $database_role);
     }
     $queries = parse_script_queries($script_sql_code);
     if (empty($queries)) {
         throw new Exception("No queries found in script");
     }
     $script_description = trim($script_description);
     if (empty($script_description)) {
         throw new Exception("Description is mandatory");
     }
     $propagate_script_id = $this->get_database()->insert("propagate_script", array("submitted_by" => $auth_user, "database_role_id" => $database_role, "default_schema" => $default_schema, "sql_code" => $script_sql_code, "description" => trim($script_description)));
     $this->get_database()->query("\n            update\n                propagate_script\n            set\n                checksum = " . $this->get_database()->quote(checksum_query($script_sql_code)) . "\n            where\n                propagate_script_id = " . $this->get_database()->quote($propagate_script_id) . "\n        ");
     foreach ($queries as $query) {
         $this->get_database()->insert("propagate_script_query", array("propagate_script_id" => $propagate_script_id, "sql_code" => $query));
     }
     $this->submit_script_for_propagation_on_environments($propagate_script_id, $this->get_database_role($database_role), $deployment_environments, $default_schema, $auth_user, $credentials, false);
     return $propagate_script_id;
 }
示例#2
0
 public function testParseScriptQueriesWithQuotedDelimiterAndEscapedQuotes()
 {
     $script = "select 1; select 2;  select '', 'it''s', 'another \\'escaped;\\' text', 'try;this'; select 4";
     $queries = parse_script_queries($script);
     $this->assertEquals(4, count($queries));
     $this->assertEquals("select '', 'it''s', 'another \\'escaped;\\' text', 'try;this'", $queries[2]);
 }