logstash-integration-jdbc 5.2.0 → 5.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a41fe10947372ac69f9db7a66dd1c285000f27bba0cb77ef7ec62629821fa5b3
4
- data.tar.gz: 74b411ebe9f448259da6751def456535bf6819f84c80027a629354140fc5c779
3
+ metadata.gz: 5826d365fd1f0f71ef3562e40e51d68b9bf76585bbd536eb5868a56c5bb6aacb
4
+ data.tar.gz: 5ae08858db8043a0840d7a8578eae295e99b6a1da4ca3ec9239ee0730298188e
5
5
  SHA512:
6
- metadata.gz: '029c86dfb0a4099979c77443c79edc7ebfb1cc3572d54c43c9864642aa018892cede9e749685846ad3451defabb1cea1cc770f3c4062afaa06690a67c0a1d498'
7
- data.tar.gz: 3c60fa57ef6c77bee21be8c3eac9b12c5f32af0b9fa7b4874dd8503ce6926b87ff139a2293a2276156df0ae6ec20ce238ed467ee803bc510452ab2d732d090a7
6
+ metadata.gz: 685637b889432ff5378e6c9873a90b183a90337a011d9719c17b6928721fbef01e393b111f35d2d4d19e7a8bc62eeffd98d93964e46494f486b93f7a9b45bff3
7
+ data.tar.gz: 30f804b0e420b7485da98805e80902ae2d8b33417256938706ba79f0f20fe62d8da2bec9a6c716e50a30f3455f0cb86f6757eef9811e631685f3e620c8c6a604
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## 5.2.1
2
+ - Refactor: isolate paginated normal statement algorithm in a separate handler [#101](https://github.com/logstash-plugins/logstash-integration-jdbc/pull/101)
3
+
1
4
  ## 5.2.0
2
5
  - Added `jdbc_paging_mode` option to choose if use `explicit` pagination in statements and avoid the initial count
3
6
  query or use `auto` to delegate to the underlying library [#95](https://github.com/logstash-plugins/logstash-integration-jdbc/pull/95)
@@ -214,7 +214,7 @@ module LogStash module PluginMixins module Jdbc
214
214
  open_jdbc_connection
215
215
  sql_last_value = @use_column_value ? @value_tracker.value : Time.now.utc
216
216
  @tracking_column_warning_sent = false
217
- @statement_handler.perform_query(@database, @value_tracker.value, @jdbc_paging_enabled, @jdbc_page_size) do |row|
217
+ @statement_handler.perform_query(@database, @value_tracker.value) do |row|
218
218
  sql_last_value = get_column_value(row) if @use_column_value
219
219
  yield extract_values_from(row)
220
220
  end
@@ -6,8 +6,12 @@ module LogStash module PluginMixins module Jdbc
6
6
  if plugin.use_prepared_statements
7
7
  klass = PreparedStatementHandler
8
8
  else
9
- if plugin.jdbc_paging_enabled && plugin.jdbc_paging_mode == "explicit"
10
- klass = ExplicitPagingModeStatementHandler
9
+ if plugin.jdbc_paging_enabled
10
+ if plugin.jdbc_paging_mode == "explicit"
11
+ klass = ExplicitPagingModeStatementHandler
12
+ else
13
+ klass = PagedNormalStatementHandler
14
+ end
11
15
  else
12
16
  klass = NormalStatementHandler
13
17
  end
@@ -33,24 +37,14 @@ module LogStash module PluginMixins module Jdbc
33
37
  end
34
38
 
35
39
  class NormalStatementHandler < StatementHandler
36
- # Performs the query, respecting our pagination settings, yielding once per row of data
40
+ # Performs the query, yielding once per row of data
37
41
  # @param db [Sequel::Database]
38
42
  # @param sql_last_value [Integer|DateTime|Time]
39
- # @param jdbc_paging_enabled [Boolean]
40
- # @param jdbc_page_size [Integer]
41
43
  # @yieldparam row [Hash{Symbol=>Object}]
42
- def perform_query(db, sql_last_value, jdbc_paging_enabled, jdbc_page_size)
44
+ def perform_query(db, sql_last_value)
43
45
  query = build_query(db, sql_last_value)
44
- if jdbc_paging_enabled
45
- query.each_page(jdbc_page_size) do |paged_dataset|
46
- paged_dataset.each do |row|
47
- yield row
48
- end
49
- end
50
- else
51
- query.each do |row|
52
- yield row
53
- end
46
+ query.each do |row|
47
+ yield row
54
48
  end
55
49
  end
56
50
 
@@ -77,14 +71,34 @@ module LogStash module PluginMixins module Jdbc
77
71
  end
78
72
  end
79
73
 
80
- class ExplicitPagingModeStatementHandler < NormalStatementHandler
74
+ class PagedNormalStatementHandler < NormalStatementHandler
75
+ attr_reader :jdbc_page_size
76
+
77
+ # Performs the query, respecting our pagination settings, yielding once per row of data
78
+ # @param db [Sequel::Database]
79
+ # @param sql_last_value [Integer|DateTime|Time]
80
+ # @yieldparam row [Hash{Symbol=>Object}]
81
+ def perform_query(db, sql_last_value)
82
+ query = build_query(db, sql_last_value)
83
+ query.each_page(@jdbc_page_size) do |paged_dataset|
84
+ paged_dataset.each do |row|
85
+ yield row
86
+ end
87
+ end
88
+ end
89
+
90
+ def post_init(plugin)
91
+ super(plugin)
92
+ @jdbc_page_size = plugin.jdbc_page_size
93
+ end
94
+ end
95
+
96
+ class ExplicitPagingModeStatementHandler < PagedNormalStatementHandler
81
97
  # Performs the query, respecting our pagination settings, yielding once per row of data
82
98
  # @param db [Sequel::Database]
83
99
  # @param sql_last_value [Integer|DateTime|Time]
84
- # @param jdbc_paging_enabled [Boolean]
85
- # @param jdbc_page_size [Integer]
86
100
  # @yieldparam row [Hash{Symbol=>Object}]
87
- def perform_query(db, sql_last_value, jdbc_paging_enabled, jdbc_page_size)
101
+ def perform_query(db, sql_last_value)
88
102
  query = build_query(db, sql_last_value)
89
103
  offset = 0
90
104
  loop do
@@ -106,7 +120,7 @@ module LogStash module PluginMixins module Jdbc
106
120
  # @param db [Sequel::Database]
107
121
  # @param sql_last_value [Integet|DateTime|Time]
108
122
  # @yieldparam row [Hash{Symbol=>Object}]
109
- def perform_query(db, sql_last_value, jdbc_paging_enabled, jdbc_page_size)
123
+ def perform_query(db, sql_last_value)
110
124
  query = build_query(db, sql_last_value)
111
125
  query.each do |row|
112
126
  yield row
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'logstash-integration-jdbc'
3
- s.version = '5.2.0'
3
+ s.version = '5.2.1'
4
4
  s.licenses = ['Apache License (2.0)']
5
5
  s.summary = "Integration with JDBC - input and filter plugins"
6
6
  s.description = "This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-integration-jdbc
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.2.0
4
+ version: 5.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic