embulk-input-athena 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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
- }