embulk-input-sqlserver 0.9.1 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2a28bc0a24889fb4b87c8ce28838c6ed3a85bad7
4
- data.tar.gz: 25afe54eb3dab0944c644fbc53fdf4325ee1a28d
3
+ metadata.gz: c16ee19779397cd99053ee70ba2f598f3a325bf8
4
+ data.tar.gz: c47ff7d2bd88a005e388155922ebf564061c9e00
5
5
  SHA512:
6
- metadata.gz: 4550243e5b325368420f04798f53281f18facf4f083088e14e8b5ac7c8fe502593ef2ff5cfc75e973e9f29dfd0817a2f2685d3a6c289070afb19e3afc0b511ba
7
- data.tar.gz: a00150591fd92378df2ef32900f5b6fda039c46ec60793158dd2d2e62232c540f21f1e89cdb731d301ec34ca3a8adbaf1aacf59dd4de2f7ebada70f94571dfa8
6
+ metadata.gz: 75539ff9386b73939da535ce0e771447150e760e2f625349202173af75d981497ca923297724352540a3effe9ae6cb675bab72263cb246cf64d13ea56861e7e2
7
+ data.tar.gz: 9cf2395a6589ac9b03696f5170766601ce7cd50bb481cb171b0264d83d033fbb8efd3a4ecb5ae52b1c4fa993f5f36d440f4be4cbc9c1c713680b74f44dcacf0e
data/README.md CHANGED
@@ -27,6 +27,7 @@ embulk "-J-Djava.library.path=C:\drivers" run input-sqlserver.yml
27
27
  - **query**: SQL to run (string)
28
28
  - If **query** is not set,
29
29
  - **table**: destination table name (string, required)
30
+ - **transaction_isolation_level**: transaction isolation level (e.g. `NOLOCK`). The value is used as table hint (e.g. `SELECT * FROM SOME_TABLE with (NOLOCK)`). (string, optional)
30
31
  - **select**: expression of select (e.g. `id, created_at`) (string, default: "*")
31
32
  - **where**: WHERE condition to filter the rows (string, default: no-condition)
32
33
  - **order_by**: expression of ORDER BY to sort rows (e.g. `created_at DESC, id ASC`) (string, default: not sorted)
@@ -11,9 +11,14 @@ import org.embulk.config.ConfigDefault;
11
11
  import org.embulk.config.ConfigException;
12
12
  import org.embulk.input.jdbc.AbstractJdbcInputPlugin;
13
13
  import org.embulk.input.jdbc.JdbcInputConnection;
14
+ import org.embulk.input.jdbc.getter.ColumnGetterFactory;
14
15
  import org.embulk.input.sqlserver.SQLServerInputConnection;
15
16
 
16
17
  import com.google.common.base.Optional;
18
+ import org.embulk.input.sqlserver.getter.SQLServerColumnGetterFactory;
19
+ import org.embulk.spi.PageBuilder;
20
+ import org.joda.time.DateTimeZone;
21
+
17
22
  import static java.util.Locale.ENGLISH;
18
23
 
19
24
  public class SQLServerInputPlugin
@@ -64,6 +69,10 @@ public class SQLServerInputPlugin
64
69
  @ConfigDefault("null")
65
70
  public Optional<String> getSchema();
66
71
 
72
+ @Config("transaction_isolation_level")
73
+ @ConfigDefault("null")
74
+ public Optional<String> getTransactionIsolationLevel();
75
+
67
76
  @Config("application_name")
68
77
  @ConfigDefault("\"embulk-input-sqlserver\"")
69
78
  @Size(max=128)
@@ -134,7 +143,8 @@ public class SQLServerInputPlugin
134
143
 
135
144
  Connection con = driver.connect(urlAndProps.getUrl(), props);
136
145
  try {
137
- SQLServerInputConnection c = new SQLServerInputConnection(con, sqlServerTask.getSchema().orNull());
146
+ SQLServerInputConnection c = new SQLServerInputConnection(con, sqlServerTask.getSchema().orNull(),
147
+ sqlServerTask.getTransactionIsolationLevel().orNull());
138
148
  con = null;
139
149
  return c;
140
150
  }
@@ -145,6 +155,12 @@ public class SQLServerInputPlugin
145
155
  }
146
156
  }
147
157
 
158
+ @Override
159
+ protected ColumnGetterFactory newColumnGetterFactory(PageBuilder pageBuilder, DateTimeZone dateTimeZone)
160
+ {
161
+ return new SQLServerColumnGetterFactory(pageBuilder, dateTimeZone);
162
+ }
163
+
148
164
  private UrlAndProperties buildUrlAndProperties(SQLServerPluginTask sqlServerTask, boolean useJtdsDriver)
149
165
  {
150
166
  Properties props = new Properties();
@@ -6,11 +6,20 @@ import org.embulk.input.jdbc.JdbcInputConnection;
6
6
 
7
7
  public class SQLServerInputConnection extends JdbcInputConnection {
8
8
 
9
+ private String transactionIsolationLevel;
10
+
9
11
  public SQLServerInputConnection(Connection connection, String schemaName) throws SQLException
10
12
  {
11
13
  super(connection, schemaName);
12
14
  }
13
15
 
16
+ public SQLServerInputConnection(Connection connection, String schemaName, String transactionIsolationLevel)
17
+ throws SQLException
18
+ {
19
+ super(connection, schemaName);
20
+ this.transactionIsolationLevel = transactionIsolationLevel;
21
+ }
22
+
14
23
  @Override
15
24
  protected void setSearchPath(String schema) throws SQLException
16
25
  {
@@ -25,6 +34,9 @@ public class SQLServerInputConnection extends JdbcInputConnection {
25
34
  sb.append(quoteIdentifierString(schemaName)).append(".");
26
35
  }
27
36
  sb.append(quoteIdentifierString(tableName));
37
+ if (transactionIsolationLevel != null) {
38
+ sb.append(" with (" + transactionIsolationLevel + ")");
39
+ }
28
40
  return sb.toString();
29
41
  }
30
42
 
@@ -0,0 +1,30 @@
1
+ package org.embulk.input.sqlserver.getter;
2
+
3
+ import org.embulk.input.jdbc.AbstractJdbcInputPlugin;
4
+ import org.embulk.input.jdbc.JdbcColumn;
5
+ import org.embulk.input.jdbc.JdbcColumnOption;
6
+ import org.embulk.input.jdbc.JdbcInputConnection;
7
+ import org.embulk.input.jdbc.getter.*;
8
+ import org.embulk.spi.PageBuilder;
9
+ import org.joda.time.DateTimeZone;
10
+
11
+ public class SQLServerColumnGetterFactory extends ColumnGetterFactory {
12
+
13
+ public SQLServerColumnGetterFactory(PageBuilder to, DateTimeZone defaultTimeZone)
14
+ {
15
+ super(to, defaultTimeZone);
16
+ }
17
+
18
+ @Override
19
+ public ColumnGetter newColumnGetter(JdbcInputConnection con, AbstractJdbcInputPlugin.PluginTask task, JdbcColumn column, JdbcColumnOption option)
20
+ {
21
+ ColumnGetter getter = super.newColumnGetter(con, task, column, option);
22
+ switch (column.getTypeName()) {
23
+ case "datetime":
24
+ return new TimestampWithoutTimeZoneIncrementalHandler(getter);
25
+ default:
26
+ return getter;
27
+ }
28
+ }
29
+
30
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embulk-input-sqlserver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sadayuki Furuhashi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-09 00:00:00.000000000 Z
11
+ date: 2018-07-03 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Selects records from a table.
14
14
  email:
@@ -19,12 +19,13 @@ extra_rdoc_files: []
19
19
  files:
20
20
  - README.md
21
21
  - build.gradle
22
- - classpath/embulk-input-jdbc-0.9.1.jar
23
- - classpath/embulk-input-sqlserver-0.9.1.jar
22
+ - classpath/embulk-input-jdbc-0.9.2.jar
23
+ - classpath/embulk-input-sqlserver-0.9.2.jar
24
24
  - classpath/jtds-1.3.1.jar
25
25
  - lib/embulk/input/sqlserver.rb
26
26
  - src/main/java/org/embulk/input/SQLServerInputPlugin.java
27
27
  - src/main/java/org/embulk/input/sqlserver/SQLServerInputConnection.java
28
+ - src/main/java/org/embulk/input/sqlserver/getter/SQLServerColumnGetterFactory.java
28
29
  - src/test/java/org/embulk/input/sqlserver/BasicTest.java
29
30
  - src/test/java/org/embulk/input/sqlserver/SQLServerTests.java
30
31
  - src/test/resources/org/embulk/input/sqlserver/test/expect/basic/setup.sql