Class: Flydata::SourceMysql::PluginSupport::AlterTableQueryHandler
- Inherits:
-
TableDdlQueryHandler
- Object
- BinlogRecordHandler
- BinlogQueryHandler
- DdlQueryHandler
- TableDdlQueryHandler
- Flydata::SourceMysql::PluginSupport::AlterTableQueryHandler
- Defined in:
- lib/flydata/source_mysql/plugin_support/alter_table_query_handler.rb
Constant Summary collapse
- PATTERN =
/^ALTER TABLE/i
Constants inherited from DdlQueryHandler
DdlQueryHandler::DDL_TABLE_QUERY
Constants included from PluginSupport::SyncRecordEmittable
PluginSupport::SyncRecordEmittable::RESPECT_ORDER, PluginSupport::SyncRecordEmittable::SEQ, PluginSupport::SyncRecordEmittable::SRC_POS, PluginSupport::SyncRecordEmittable::TABLE_NAME, PluginSupport::SyncRecordEmittable::TABLE_REV, PluginSupport::SyncRecordEmittable::TYPE, PluginSupport::SyncRecordEmittable::V
Instance Attribute Summary
Attributes included from PluginSupport::SyncRecordEmittable
Instance Method Summary collapse
-
#initialize(context) ⇒ AlterTableQueryHandler
constructor
A new instance of AlterTableQueryHandler.
- #pattern ⇒ Object
- #process(record) ⇒ Object
Methods inherited from DdlQueryHandler
#acceptable_db?, #emit_record, #table_info
Methods included from PluginSupport::SyncRecordEmittable
Constructor Details
#initialize(context) ⇒ AlterTableQueryHandler
Returns a new instance of AlterTableQueryHandler.
11 12 13 |
# File 'lib/flydata/source_mysql/plugin_support/alter_table_query_handler.rb', line 11 def initialize(context) super end |
Instance Method Details
#pattern ⇒ Object
15 16 17 |
# File 'lib/flydata/source_mysql/plugin_support/alter_table_query_handler.rb', line 15 def pattern PATTERN end |
#process(record) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/flydata/source_mysql/plugin_support/alter_table_query_handler.rb', line 19 def process(record) emit_record(:alter_table, record) do |opt| ret = nil begin result = Flydata::Parser::ParserProvider.parser(:mysql, :mysql_alter_table).new.parse(record["normalized_query"]) if result.nil? $log.error("Received unsupported alter table query. normalized query:'#{record['normalized_query']}', raw query: '#{record['query']}'") else ret = result.tree breaking_query = ret[:actions].any?{|action| !action.has_key?(:support_level) || action[:support_level] != :nonbreaking} opt[:increment_table_rev] = true if breaking_query end rescue => e msg = <<EOS Received unsupported alter table query. normalized query:'#{record['normalized_query']}', raw query: '#{record['query']}' Caused by error '#{e.to_s}' Stacktrace : #{e.backtrace.join("\n")} EOS $log.error(msg) end $log.info(ret.to_s + " at \"#{binlog_pos(record)}\"") # log all alter table events even if the table is not subject to sync. This is for troubleshooting purpose. ret end end |