lib/logstash/inputs/jdbc.rb in logstash-input-jdbc-3.1.0 vs lib/logstash/inputs/jdbc.rb in logstash-input-jdbc-4.0.0
- old
+ new
@@ -158,30 +158,10 @@
config :record_last_run, :validate => :boolean, :default => true
# Whether to force the lowercasing of identifier fields
config :lowercase_column_names, :validate => :boolean, :default => true
- # The character encoding of all columns, leave empty if the columns are already properly UTF-8
- # encoded. Specific columns charsets using :columns_charset can override this setting.
- config :charset, :validate => :string
-
- # The character encoding for specific columns. This option will override the `:charset` option
- # for the specified columns.
- #
- # Example:
- # [source,ruby]
- # ----------------------------------
- # input {
- # jdbc {
- # ...
- # columns_charset => { "column0" => "ISO-8859-1" }
- # ...
- # }
- # }
- # this will only convert column0 that has ISO-8859-1 as an original encoding.
- config :columns_charset, :validate => :hash, :default => {}
-
public
def register
require "rufus/scheduler"
prepare_jdbc_connection
@@ -191,12 +171,10 @@
if @tracking_column.nil?
raise(LogStash::ConfigurationError, "Must set :tracking_column if :use_column_value is true.")
end
end
- @enable_encoding = !@charset.nil? || !@columns_charset.empty?
-
# load sql_last_value from file if exists
if @clean_run && File.exist?(@last_run_metadata_path)
File.delete(@last_run_metadata_path)
elsif File.exist?(@last_run_metadata_path)
@sql_last_value = YAML.load(File.read(@last_run_metadata_path))
@@ -205,24 +183,10 @@
unless @statement.nil? ^ @statement_filepath.nil?
raise(LogStash::ConfigurationError, "Must set either :statement or :statement_filepath. Only one may be set at a time.")
end
@statement = File.read(@statement_filepath) if @statement_filepath
-
- if (@jdbc_password_filepath and @jdbc_password)
- raise(LogStash::ConfigurationError, "Only one of :jdbc_password, :jdbc_password_filepath may be set at a time.")
- end
-
- @jdbc_password = File.read(@jdbc_password_filepath).strip if @jdbc_password_filepath
-
- if enable_encoding?
- @converters = {}
- @columns_charset.each do |column_name, encoding|
- @converters[encoding] = LogStash::Util::Charset.new(encoding)
- end
- @converters[@charset] = LogStash::Util::Charset.new(@charset) if @charset
- end
end # def register
def run(queue)
if @schedule
@scheduler = Rufus::Scheduler.new(:max_work_threads => 1)
@@ -248,14 +212,10 @@
def execute_query(queue)
# update default parameters
@parameters['sql_last_value'] = @sql_last_value
execute_statement(@statement, @parameters) do |row|
- if enable_encoding?
- ## do the necessary conversions to string elements
- row = Hash[row.map { |k, v| [k.to_s, convert(k, v)] }]
- end
event = LogStash::Event.new(row)
decorate(event)
queue << event
end
end
@@ -264,26 +224,6 @@
if @record_last_run
File.write(@last_run_metadata_path, YAML.dump(@sql_last_value))
end
end
- private
-
- def enable_encoding?
- @enable_encoding
- end
-
- # make sure the encoding is uniform over fields
- def convert(column_name, value)
- return value unless value.is_a?(String)
- column_charset = @columns_charset[column_name]
- if column_charset
- converter = @converters[column_charset]
- converter.convert(value)
- elsif @charset
- converter = @converters[@charset]
- converter.convert(value)
- else
- value
- end
- end
end # class LogStash::Inputs::Jdbc