embulk-input-jdbc 0.8.5 → 0.8.6
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 +4 -4
- data/README.md +1 -1
- data/classpath/embulk-input-jdbc-0.8.6.jar +0 -0
- data/src/main/java/org/embulk/input/jdbc/JdbcColumnOption.java +0 -5
- data/src/main/java/org/embulk/input/jdbc/getter/ColumnGetterFactory.java +16 -3
- data/src/main/java/org/embulk/input/jdbc/getter/TimestampWithTimeZoneIncrementalHandler.java +25 -10
- metadata +3 -3
- data/classpath/embulk-input-jdbc-0.8.5.jar +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 617c1a978aee468e9f849b9defa0ef3e44d53de5
|
4
|
+
data.tar.gz: 28a1d38053028001e4c2a80f2de513c05d2317c0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0e891c2884ed461185c87f2634b56d4fa12773c9c271fa53e10d3b0fbb5397c56e321a4111c68fdcec0b30d870f5d58b48afbb18a9632140115ea41fedd39adc
|
7
|
+
data.tar.gz: 3266593494c05a45ebb1a38ec79286f466d9457e23a8cfa5eb3b3ef86e0dead5bf5aa1773bc90767e3b2126a504a4d92e2844362da689bdba8e8439ed8359626
|
data/README.md
CHANGED
@@ -62,7 +62,7 @@ At the next execution, when `last_record: ` is also set, this plugin generates a
|
|
62
62
|
SELECT * FROM (
|
63
63
|
...original query is here...
|
64
64
|
)
|
65
|
-
WHERE
|
65
|
+
WHERE updated_at > '2017-01-01 00:32:12' OR (updated_at = '2017-01-01 00:32:12' AND id > 5291)
|
66
66
|
ORDER BY updated_at, id
|
67
67
|
```
|
68
68
|
|
Binary file
|
@@ -7,7 +7,6 @@ import org.embulk.config.Task;
|
|
7
7
|
import org.embulk.spi.time.TimestampFormat;
|
8
8
|
import org.embulk.spi.type.Type;
|
9
9
|
import org.joda.time.DateTimeZone;
|
10
|
-
import org.jruby.embed.ScriptingContainer;
|
11
10
|
|
12
11
|
import com.google.common.base.Optional;
|
13
12
|
|
@@ -29,8 +28,4 @@ public interface JdbcColumnOption
|
|
29
28
|
@Config("timezone")
|
30
29
|
@ConfigDefault("null")
|
31
30
|
public Optional<DateTimeZone> getTimeZone();
|
32
|
-
|
33
|
-
// required by TimestampFormatter
|
34
|
-
@ConfigInject
|
35
|
-
public ScriptingContainer getJRuby();
|
36
31
|
}
|
@@ -5,11 +5,15 @@ import java.sql.Types;
|
|
5
5
|
import java.util.HashMap;
|
6
6
|
import java.util.Map;
|
7
7
|
|
8
|
+
import com.google.common.base.Optional;
|
8
9
|
import org.embulk.config.ConfigException;
|
10
|
+
import org.embulk.config.ConfigSource;
|
11
|
+
import org.embulk.config.Task;
|
9
12
|
import org.embulk.input.jdbc.AbstractJdbcInputPlugin.PluginTask;
|
10
13
|
import org.embulk.input.jdbc.JdbcColumn;
|
11
14
|
import org.embulk.input.jdbc.JdbcColumnOption;
|
12
15
|
import org.embulk.input.jdbc.JdbcInputConnection;
|
16
|
+
import org.embulk.spi.Exec;
|
13
17
|
import org.embulk.spi.PageBuilder;
|
14
18
|
import org.embulk.spi.time.TimestampFormatter;
|
15
19
|
import org.embulk.spi.type.TimestampType;
|
@@ -176,12 +180,21 @@ public class ColumnGetterFactory
|
|
176
180
|
return toType;
|
177
181
|
}
|
178
182
|
|
183
|
+
private static interface FormatterIntlTask extends Task, TimestampFormatter.Task {}
|
184
|
+
private static interface FormatterIntlColumnOption extends Task, TimestampFormatter.TimestampColumnOption {}
|
185
|
+
|
179
186
|
private TimestampFormatter newTimestampFormatter(JdbcColumnOption option, String defaultTimestampFormat)
|
180
187
|
{
|
188
|
+
// TODO: Switch to a newer TimestampFormatter constructor after a reasonable interval.
|
189
|
+
// Traditional constructor is used here for compatibility.
|
190
|
+
final ConfigSource configSource = Exec.newConfigSource();
|
191
|
+
configSource.set("format", option.getTimestampFormat().isPresent()
|
192
|
+
? option.getTimestampFormat().get().getFormat()
|
193
|
+
: defaultTimestampFormat);
|
194
|
+
configSource.set("timezone", option.getTimeZone().or(this.defaultTimeZone));
|
181
195
|
return new TimestampFormatter(
|
182
|
-
|
183
|
-
|
184
|
-
option.getTimeZone().or(defaultTimeZone));
|
196
|
+
Exec.newConfigSource().loadConfig(FormatterIntlTask.class),
|
197
|
+
Optional.fromNullable(configSource.loadConfig(FormatterIntlColumnOption.class)));
|
185
198
|
}
|
186
199
|
|
187
200
|
private static UnsupportedOperationException unsupportedOperationException(JdbcColumn column)
|
data/src/main/java/org/embulk/input/jdbc/getter/TimestampWithTimeZoneIncrementalHandler.java
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
package org.embulk.input.jdbc.getter;
|
2
2
|
|
3
3
|
import com.fasterxml.jackson.databind.JsonNode;
|
4
|
+
import com.google.common.base.Optional;
|
4
5
|
import java.sql.PreparedStatement;
|
5
6
|
import java.sql.ResultSet;
|
6
7
|
import java.sql.SQLException;
|
7
8
|
import java.sql.Timestamp;
|
9
|
+
import org.embulk.config.ConfigSource;
|
10
|
+
import org.embulk.config.Task;
|
8
11
|
import org.embulk.spi.Column;
|
9
12
|
import org.embulk.spi.Exec;
|
10
|
-
import org.embulk.spi.time.TimestampFormatter.FormatterTask;
|
11
13
|
import org.embulk.spi.time.TimestampFormatter;
|
12
|
-
import org.embulk.spi.time.TimestampParser.ParserTask;
|
13
14
|
import org.embulk.spi.time.TimestampParser;
|
14
15
|
|
15
16
|
public class TimestampWithTimeZoneIncrementalHandler
|
@@ -40,25 +41,39 @@ public class TimestampWithTimeZoneIncrementalHandler
|
|
40
41
|
super.getAndSet(from, fromIndex, toColumn);
|
41
42
|
}
|
42
43
|
|
44
|
+
private static interface FormatterIntlTask extends Task, TimestampFormatter.Task {}
|
45
|
+
private static interface FormatterIntlColumnOption extends Task, TimestampFormatter.TimestampColumnOption {}
|
46
|
+
|
43
47
|
@Override
|
44
48
|
public JsonNode encodeToJson()
|
45
49
|
{
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
+
// TODO: Switch to a newer TimestampFormatter constructor after a reasonable interval.
|
51
|
+
// Traditional constructor is used here for compatibility.
|
52
|
+
final ConfigSource configSource = Exec.newConfigSource();
|
53
|
+
configSource.set("format", ISO_USEC_FORMAT);
|
54
|
+
configSource.set("timezone", "UTC");
|
55
|
+
TimestampFormatter formatter = new TimestampFormatter(
|
56
|
+
Exec.newConfigSource().loadConfig(FormatterIntlTask.class),
|
57
|
+
Optional.fromNullable(configSource.loadConfig(FormatterIntlColumnOption.class)));
|
50
58
|
String text = formatter.format(org.embulk.spi.time.Timestamp.ofEpochSecond(epochSecond, nano));
|
51
59
|
return jsonNodeFactory.textNode(text);
|
52
60
|
}
|
53
61
|
|
62
|
+
private static interface ParserIntlTask extends Task, TimestampParser.Task {}
|
63
|
+
private static interface ParserIntlColumnOption extends Task, TimestampParser.TimestampColumnOption {}
|
64
|
+
|
54
65
|
@Override
|
55
66
|
public void decodeFromJsonTo(PreparedStatement toStatement, int toIndex, JsonNode fromValue)
|
56
67
|
throws SQLException
|
57
68
|
{
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
69
|
+
// TODO: Switch to a newer TimestampParser constructor after a reasonable interval.
|
70
|
+
// Traditional constructor is used here for compatibility.
|
71
|
+
final ConfigSource configSource = Exec.newConfigSource();
|
72
|
+
configSource.set("format", ISO_USEC_PATTERN);
|
73
|
+
configSource.set("timezone", "UTC");
|
74
|
+
TimestampParser parser = new TimestampParser(
|
75
|
+
Exec.newConfigSource().loadConfig(ParserIntlTask.class),
|
76
|
+
configSource.loadConfig(ParserIntlColumnOption.class));
|
62
77
|
org.embulk.spi.time.Timestamp epoch = parser.parse(fromValue.asText());
|
63
78
|
|
64
79
|
Timestamp sqlTimestamp = new Timestamp(epoch.getEpochSecond() * 1000);
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: embulk-input-jdbc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sadayuki Furuhashi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-24 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Selects records from a table.
|
14
14
|
email:
|
@@ -19,7 +19,7 @@ extra_rdoc_files: []
|
|
19
19
|
files:
|
20
20
|
- README.md
|
21
21
|
- build.gradle
|
22
|
-
- classpath/embulk-input-jdbc-0.8.
|
22
|
+
- classpath/embulk-input-jdbc-0.8.6.jar
|
23
23
|
- lib/embulk/input/jdbc.rb
|
24
24
|
- src/main/java/org/embulk/input/JdbcInputPlugin.java
|
25
25
|
- src/main/java/org/embulk/input/jdbc/AbstractJdbcInputPlugin.java
|
Binary file
|