16
16
#include "grtdb/diff_dbobjectmatch.h"
18
18
#include "grtsqlparser/sql_facade.h"
19
#include "grti/sqlgenerator.h"
19
#include "interfaces/sqlgenerator.h"
20
20
#include "db.mysql/backend/db_mysql_public_interface.h"
22
#include "db.mysql/src/module_db_mysql_shared_code.h"
23
22
#include "grtdb/charset_utils.h"
24
23
#include "grtdb/db_object_helpers.h"
101
100
if(grt::StringRef::can_wrap(default_engine))
102
101
default_engine_name = grt::StringRef::cast_from(default_engine);
104
left_cat_copy= db_mysql_CatalogRef::cast_from(grt::copy_object(manager_->get_grt(), left_cat));
103
left_cat_copy= db_mysql_CatalogRef::cast_from(grt::copy_object(left_cat));
105
104
bec::CatalogHelper::apply_defaults(left_cat_copy, default_engine_name);
107
106
if(!right.is_valid())
115
114
right_cat= db_mysql_CatalogRef::cast_from(right);
118
right_cat_copy= db_mysql_CatalogRef::cast_from(grt::copy_object(manager_->get_grt(), right_cat));
117
right_cat_copy= db_mysql_CatalogRef::cast_from(grt::copy_object(right_cat));
119
118
bec::CatalogHelper::apply_defaults(right_cat_copy, default_engine_name);
121
120
CatalogMap left_catalog_map;
132
131
bec::apply_user_datatypes(left_cat_copy, rdbms);
135
grt::DbObjectMatchAlterOmf omf;
136
omf.dontdiff_mask = 3;
137
grt::NormalizedComparer normalizer(manager_->get_grt());
138
normalizer.init_omf(&omf);
139
boost::shared_ptr<DiffChange> alter_change= diff_make(left_cat_copy, right_cat_copy, &omf);
141
SQLGeneratorInterfaceWrapper *diffsql_module=
142
manager_->get_grt()->get_module_wrapper<SQLGeneratorInterfaceWrapper>("DbMySQL");
144
if(diffsql_module == NULL)
145
throw DbMySQLDiffReportingException("error loading module MySQLModuleDbMySQL");
134
SQLGeneratorInterfaceImpl *diffsql_module= dynamic_cast<SQLGeneratorInterfaceImpl*>(manager_->get_grt()->get_module("DbMySQL"));
136
if (diffsql_module == NULL)
137
throw DbMySQLDiffReportingException("error loading module DbMySQL");
147
139
std::string tpath;
148
140
tpath.append("modules").append(G_DIR_SEPARATOR_S).append("data").append(G_DIR_SEPARATOR_S).append("db_mysql_catalog_reporting")
149
141
.append(G_DIR_SEPARATOR_S).append("Basic_Text.tpl").append(G_DIR_SEPARATOR_S).append("basic_text_report.txt.tpl");
151
143
grt::DictRef options(manager_->get_grt());
144
options.set("OMFDontDiffMask", grt::IntegerRef(3));
152
145
options.set("UseFilteredLists", grt::IntegerRef(0));
153
146
options.set("KeepOrder", grt::IntegerRef(1));
154
147
options.set("TemplateFile",
155
148
grt::StringRef(manager_->get_data_file_path(tpath).c_str()));
158
sprintf(buf1, "%p", alter_change.get());
161
// alter_change->dump_log(0);
163
150
grt::StringRef output_string(
164
diffsql_module->generateReport(left_cat_copy, options, std::string(buf1)));
151
diffsql_module->generateReportForDifferences(left_cat_copy, right_cat_copy, options));
166
return std::string(output_string.c_str());
153
return *output_string;