embulk-input-athena 0.1.0 → 0.1.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.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/build.gradle +7 -3
  4. data/src/main/java/org/embulk/input/athena/AthenaInputConnection.java +1 -0
  5. metadata +4 -28
  6. data/src/main/java/org/embulk/input/jdbc/AbstractJdbcInputPlugin.java +0 -674
  7. data/src/main/java/org/embulk/input/jdbc/JdbcColumn.java +0 -58
  8. data/src/main/java/org/embulk/input/jdbc/JdbcColumnOption.java +0 -31
  9. data/src/main/java/org/embulk/input/jdbc/JdbcInputConnection.java +0 -397
  10. data/src/main/java/org/embulk/input/jdbc/JdbcLiteral.java +0 -38
  11. data/src/main/java/org/embulk/input/jdbc/JdbcSchema.java +0 -55
  12. data/src/main/java/org/embulk/input/jdbc/Ssl.java +0 -37
  13. data/src/main/java/org/embulk/input/jdbc/ToString.java +0 -54
  14. data/src/main/java/org/embulk/input/jdbc/ToStringMap.java +0 -35
  15. data/src/main/java/org/embulk/input/jdbc/getter/AbstractColumnGetter.java +0 -105
  16. data/src/main/java/org/embulk/input/jdbc/getter/AbstractIncrementalHandler.java +0 -45
  17. data/src/main/java/org/embulk/input/jdbc/getter/AbstractTimestampColumnGetter.java +0 -38
  18. data/src/main/java/org/embulk/input/jdbc/getter/BigDecimalColumnGetter.java +0 -59
  19. data/src/main/java/org/embulk/input/jdbc/getter/BooleanColumnGetter.java +0 -56
  20. data/src/main/java/org/embulk/input/jdbc/getter/ColumnGetter.java +0 -21
  21. data/src/main/java/org/embulk/input/jdbc/getter/ColumnGetterFactory.java +0 -207
  22. data/src/main/java/org/embulk/input/jdbc/getter/DateColumnGetter.java +0 -37
  23. data/src/main/java/org/embulk/input/jdbc/getter/DoubleColumnGetter.java +0 -66
  24. data/src/main/java/org/embulk/input/jdbc/getter/FloatColumnGetter.java +0 -66
  25. data/src/main/java/org/embulk/input/jdbc/getter/JsonColumnGetter.java +0 -57
  26. data/src/main/java/org/embulk/input/jdbc/getter/LongColumnGetter.java +0 -70
  27. data/src/main/java/org/embulk/input/jdbc/getter/StringColumnGetter.java +0 -96
  28. data/src/main/java/org/embulk/input/jdbc/getter/TimeColumnGetter.java +0 -37
  29. data/src/main/java/org/embulk/input/jdbc/getter/TimestampColumnGetter.java +0 -36
  30. data/src/main/java/org/embulk/input/jdbc/getter/TimestampWithTimeZoneIncrementalHandler.java +0 -83
  31. data/src/main/java/org/embulk/input/jdbc/getter/TimestampWithoutTimeZoneIncrementalHandler.java +0 -75
@@ -1,56 +0,0 @@
1
- package org.embulk.input.jdbc.getter;
2
-
3
- import java.sql.ResultSet;
4
- import java.sql.SQLException;
5
- import org.embulk.spi.Column;
6
- import org.embulk.spi.PageBuilder;
7
- import org.embulk.spi.type.Type;
8
- import org.embulk.spi.type.Types;
9
-
10
- public class BooleanColumnGetter
11
- extends AbstractColumnGetter
12
- {
13
- protected boolean value;
14
-
15
- public BooleanColumnGetter(PageBuilder to, Type toType)
16
- {
17
- super(to, toType);
18
- }
19
-
20
- @Override
21
- protected void fetch(ResultSet from, int fromIndex) throws SQLException
22
- {
23
- value = from.getBoolean(fromIndex);
24
- }
25
-
26
- @Override
27
- protected Type getDefaultToType()
28
- {
29
- return Types.BOOLEAN;
30
- }
31
-
32
- @Override
33
- public void booleanColumn(Column column)
34
- {
35
- to.setBoolean(column, value);
36
- }
37
-
38
- @Override
39
- public void longColumn(Column column)
40
- {
41
- to.setLong(column, value ? 1L : 0L);
42
- }
43
-
44
- @Override
45
- public void doubleColumn(Column column)
46
- {
47
- to.setDouble(column, value ? 1.0 : 0.0);
48
- }
49
-
50
- @Override
51
- public void stringColumn(Column column)
52
- {
53
- to.setString(column, Boolean.toString(value));
54
- }
55
-
56
- }
@@ -1,21 +0,0 @@
1
- package org.embulk.input.jdbc.getter;
2
-
3
- import java.sql.ResultSet;
4
- import java.sql.SQLException;
5
- import java.sql.PreparedStatement;
6
- import com.fasterxml.jackson.databind.JsonNode;
7
- import org.embulk.spi.Column;
8
- import org.embulk.spi.type.Type;
9
-
10
- public interface ColumnGetter
11
- {
12
- public void getAndSet(ResultSet from, int fromIndex,
13
- Column toColumn) throws SQLException;
14
-
15
- public Type getToType();
16
-
17
- public JsonNode encodeToJson();
18
-
19
- public void decodeFromJsonTo(PreparedStatement toStatement, int toIndex, JsonNode fromValue)
20
- throws SQLException;
21
- }
@@ -1,207 +0,0 @@
1
- package org.embulk.input.jdbc.getter;
2
-
3
- import java.lang.reflect.Field;
4
- import java.sql.Types;
5
- import java.util.HashMap;
6
- import java.util.Map;
7
-
8
- import com.google.common.base.Optional;
9
- import org.embulk.config.ConfigException;
10
- import org.embulk.config.ConfigSource;
11
- import org.embulk.config.Task;
12
- import org.embulk.input.jdbc.AbstractJdbcInputPlugin.PluginTask;
13
- import org.embulk.input.jdbc.JdbcColumn;
14
- import org.embulk.input.jdbc.JdbcColumnOption;
15
- import org.embulk.input.jdbc.JdbcInputConnection;
16
- import org.embulk.spi.Exec;
17
- import org.embulk.spi.PageBuilder;
18
- import org.embulk.spi.time.TimestampFormatter;
19
- import org.embulk.spi.type.TimestampType;
20
- import org.embulk.spi.type.Type;
21
- import org.joda.time.DateTimeZone;
22
-
23
- import static java.util.Locale.ENGLISH;
24
-
25
- public class ColumnGetterFactory
26
- {
27
- protected final PageBuilder to;
28
- private final DateTimeZone defaultTimeZone;
29
- private final Map<Integer, String> jdbcTypes = getAllJDBCTypes();
30
-
31
- public ColumnGetterFactory(PageBuilder to, DateTimeZone defaultTimeZone)
32
- {
33
- this.to = to;
34
- this.defaultTimeZone = defaultTimeZone;
35
- }
36
-
37
- public ColumnGetter newColumnGetter(JdbcInputConnection con, PluginTask task, JdbcColumn column, JdbcColumnOption option)
38
- {
39
- return newColumnGetter(con, task, column, option, option.getValueType());
40
- }
41
-
42
- private ColumnGetter newColumnGetter(JdbcInputConnection con, PluginTask task, JdbcColumn column, JdbcColumnOption option, String valueType)
43
- {
44
- Type toType = getToType(option);
45
- switch(valueType) {
46
- case "coalesce":
47
- // resolve actual valueType using sqlTypeToValueType() method and retry.
48
- return newColumnGetter(con, task, column, option, sqlTypeToValueType(column, column.getSqlType()));
49
- case "long":
50
- return new LongColumnGetter(to, toType);
51
- case "float":
52
- return new FloatColumnGetter(to, toType);
53
- case "double":
54
- return new DoubleColumnGetter(to, toType);
55
- case "boolean":
56
- return new BooleanColumnGetter(to, toType);
57
- case "string":
58
- return new StringColumnGetter(to, toType);
59
- case "json":
60
- return new JsonColumnGetter(to, toType);
61
- case "date":
62
- return new DateColumnGetter(to, toType, newTimestampFormatter(option, DateColumnGetter.DEFAULT_FORMAT));
63
- case "time":
64
- return new TimeColumnGetter(to, toType, newTimestampFormatter(option, DateColumnGetter.DEFAULT_FORMAT));
65
- case "timestamp":
66
- return new TimestampColumnGetter(to, toType, newTimestampFormatter(option, DateColumnGetter.DEFAULT_FORMAT));
67
- case "decimal":
68
- return new BigDecimalColumnGetter(to, toType);
69
- default:
70
- throw new ConfigException(String.format(ENGLISH,
71
- "Unknown value_type '%s' for column '%s'", option.getValueType(), column.getName()));
72
- }
73
- }
74
-
75
- protected Map<Integer,String> getAllJDBCTypes() {
76
- Map<Integer,String> map = new HashMap<Integer, String>();
77
- for(Field f: Types.class.getFields()){
78
- try {
79
- map.put((Integer) f.get(null), f.getName());
80
- } catch(IllegalAccessException iea){
81
- }
82
- }
83
- return map;
84
- }
85
-
86
- public String getJdbcType(int sqlType)
87
- {
88
- return jdbcTypes.get(sqlType);
89
- }
90
-
91
-
92
- protected String sqlTypeToValueType(JdbcColumn column, int sqlType)
93
- {
94
- switch(sqlType) {
95
- // getLong
96
- case Types.TINYINT:
97
- case Types.SMALLINT:
98
- case Types.INTEGER:
99
- case Types.BIGINT:
100
- return "long";
101
-
102
- // getFloat
103
- case Types.FLOAT:
104
- case Types.REAL:
105
- return "float";
106
-
107
- // getDouble
108
- case Types.DOUBLE:
109
- return "double";
110
-
111
- // getBool
112
- case Types.BOOLEAN:
113
- case Types.BIT: // JDBC BIT is boolean, unlike SQL-92
114
- return "boolean";
115
-
116
- // getString, Clob
117
- case Types.CHAR:
118
- case Types.VARCHAR:
119
- case Types.LONGVARCHAR:
120
- case Types.CLOB:
121
- case Types.NCHAR:
122
- case Types.NVARCHAR:
123
- case Types.LONGNVARCHAR:
124
- return "string";
125
-
126
- // TODO
127
- //// getBytes Blob
128
- //case Types.BINARY:
129
- //case Types.VARBINARY:
130
- //case Types.LONGVARBINARY:
131
- //case Types.BLOB:
132
- // return new BytesColumnGetter();
133
-
134
- // getDate
135
- case Types.DATE:
136
- return "date";
137
-
138
- // getTime
139
- case Types.TIME:
140
- return "time";
141
-
142
- // getTimestamp
143
- case Types.TIMESTAMP:
144
- return "timestamp";
145
-
146
- // TODO
147
- //// Null
148
- //case Types.NULL:
149
- // return new NullColumnGetter();
150
-
151
- // getBigDecimal
152
- case Types.NUMERIC:
153
- case Types.DECIMAL:
154
- return "decimal";
155
-
156
- // others
157
- case Types.ARRAY: // array
158
- case Types.STRUCT: // map
159
- case Types.REF:
160
- case Types.DATALINK:
161
- case Types.SQLXML: // XML
162
- case Types.ROWID:
163
- case Types.DISTINCT:
164
- case Types.JAVA_OBJECT:
165
- case Types.OTHER:
166
- default:
167
- throw unsupportedOperationException(column);
168
- }
169
- }
170
-
171
- protected Type getToType(JdbcColumnOption option)
172
- {
173
- if (!option.getType().isPresent()) {
174
- return null;
175
- }
176
- Type toType = option.getType().get();
177
- if (toType instanceof TimestampType && option.getTimestampFormat().isPresent()) {
178
- toType = ((TimestampType)toType).withFormat(option.getTimestampFormat().get().getFormat());
179
- }
180
- return toType;
181
- }
182
-
183
- private static interface FormatterIntlTask extends Task, TimestampFormatter.Task {}
184
- private static interface FormatterIntlColumnOption extends Task, TimestampFormatter.TimestampColumnOption {}
185
-
186
- private TimestampFormatter newTimestampFormatter(JdbcColumnOption option, String defaultTimestampFormat)
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));
195
- return new TimestampFormatter(
196
- Exec.newConfigSource().loadConfig(FormatterIntlTask.class),
197
- Optional.fromNullable(configSource.loadConfig(FormatterIntlColumnOption.class)));
198
- }
199
-
200
- private static UnsupportedOperationException unsupportedOperationException(JdbcColumn column)
201
- {
202
- throw new UnsupportedOperationException(
203
- String.format(ENGLISH,
204
- "Unsupported type %s (sqlType=%d) of '%s' column. Please add '%s: {value_type: string}' to 'column_options: {...}' option to convert the values to strings, or exclude the column from 'select:' option",
205
- column.getTypeName(), column.getSqlType(), column.getName(), column.getName()));
206
- }
207
- }
@@ -1,37 +0,0 @@
1
- package org.embulk.input.jdbc.getter;
2
-
3
- import java.sql.Date;
4
- import java.sql.ResultSet;
5
- import java.sql.SQLException;
6
- import org.embulk.spi.PageBuilder;
7
- import org.embulk.spi.time.Timestamp;
8
- import org.embulk.spi.time.TimestampFormatter;
9
- import org.embulk.spi.type.Type;
10
- import org.embulk.spi.type.Types;
11
-
12
- public class DateColumnGetter
13
- extends AbstractTimestampColumnGetter
14
- {
15
- static final String DEFAULT_FORMAT = "%Y-%m-%d";
16
-
17
- public DateColumnGetter(PageBuilder to, Type toType, TimestampFormatter timestampFormatter)
18
- {
19
- super(to, toType, timestampFormatter);
20
- }
21
-
22
- @Override
23
- protected void fetch(ResultSet from, int fromIndex) throws SQLException
24
- {
25
- Date date = from.getDate(fromIndex);
26
- if (date != null) {
27
- value = Timestamp.ofEpochMilli(date.getTime());
28
- }
29
- }
30
-
31
- @Override
32
- protected Type getDefaultToType()
33
- {
34
- return Types.TIMESTAMP.withFormat(DEFAULT_FORMAT);
35
- }
36
-
37
- }
@@ -1,66 +0,0 @@
1
- package org.embulk.input.jdbc.getter;
2
-
3
- import java.math.RoundingMode;
4
- import java.sql.ResultSet;
5
- import java.sql.SQLException;
6
- import org.embulk.spi.Column;
7
- import org.embulk.spi.PageBuilder;
8
- import org.embulk.spi.type.Type;
9
- import org.embulk.spi.type.Types;
10
- import com.google.common.math.DoubleMath;
11
-
12
- public class DoubleColumnGetter
13
- extends AbstractColumnGetter
14
- {
15
- protected double value;
16
-
17
- public DoubleColumnGetter(PageBuilder to, Type toType)
18
- {
19
- super(to, toType);
20
- }
21
-
22
- @Override
23
- protected void fetch(ResultSet from, int fromIndex) throws SQLException
24
- {
25
- value = from.getDouble(fromIndex);
26
- }
27
-
28
- @Override
29
- protected Type getDefaultToType()
30
- {
31
- return Types.DOUBLE;
32
- }
33
-
34
- @Override
35
- public void booleanColumn(Column column)
36
- {
37
- to.setBoolean(column, value > 0.0);
38
- }
39
-
40
- @Override
41
- public void longColumn(Column column)
42
- {
43
- long l;
44
- try {
45
- // TODO configurable rounding mode
46
- l = DoubleMath.roundToLong(value, RoundingMode.HALF_UP);
47
- } catch (ArithmeticException e) {
48
- // NaN / Infinite / -Infinite
49
- super.longColumn(column);
50
- return;
51
- }
52
- to.setLong(column, l);
53
- }
54
-
55
- @Override
56
- public void doubleColumn(Column column)
57
- {
58
- to.setDouble(column, value);
59
- }
60
-
61
- @Override
62
- public void stringColumn(Column column)
63
- {
64
- to.setString(column, Double.toString(value));
65
- }
66
- }
@@ -1,66 +0,0 @@
1
- package org.embulk.input.jdbc.getter;
2
-
3
- import java.math.RoundingMode;
4
- import java.sql.ResultSet;
5
- import java.sql.SQLException;
6
- import org.embulk.spi.Column;
7
- import org.embulk.spi.PageBuilder;
8
- import org.embulk.spi.type.Type;
9
- import org.embulk.spi.type.Types;
10
- import com.google.common.math.DoubleMath;
11
-
12
- public class FloatColumnGetter
13
- extends AbstractColumnGetter
14
- {
15
- protected float value;
16
-
17
- public FloatColumnGetter(PageBuilder to, Type toType)
18
- {
19
- super(to, toType);
20
- }
21
-
22
- @Override
23
- protected void fetch(ResultSet from, int fromIndex) throws SQLException
24
- {
25
- value = from.getFloat(fromIndex);
26
- }
27
-
28
- @Override
29
- protected Type getDefaultToType()
30
- {
31
- return Types.DOUBLE;
32
- }
33
-
34
- @Override
35
- public void booleanColumn(Column column)
36
- {
37
- to.setBoolean(column, value > 0.0);
38
- }
39
-
40
- @Override
41
- public void longColumn(Column column)
42
- {
43
- long l;
44
- try {
45
- // TODO configurable rounding mode
46
- l = DoubleMath.roundToLong(value, RoundingMode.HALF_UP);
47
- } catch (ArithmeticException e) {
48
- // NaN / Infinite / -Infinite
49
- super.longColumn(column);
50
- return;
51
- }
52
- to.setLong(column, l);
53
- }
54
-
55
- @Override
56
- public void doubleColumn(Column column)
57
- {
58
- to.setDouble(column, value);
59
- }
60
-
61
- @Override
62
- public void stringColumn(Column column)
63
- {
64
- to.setString(column, Float.toString(value));
65
- }
66
- }