embulk-output-sqlserver 0.7.12 → 0.7.13

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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -0
  3. data/build.gradle +1 -1
  4. data/classpath/embulk-output-jdbc-0.7.13.jar +0 -0
  5. data/classpath/embulk-output-sqlserver-0.7.13.jar +0 -0
  6. data/src/main/java/org/embulk/output/SQLServerOutputPlugin.java +1 -1
  7. data/src/main/java/org/embulk/output/sqlserver/NativeBatchInsert.java +1 -1
  8. data/src/main/java/org/embulk/output/sqlserver/SQLServerOutputConnection.java +2 -21
  9. data/src/main/java/org/embulk/output/sqlserver/nativeclient/NativeClientWrapper.java +32 -2
  10. data/src/test/java/org/embulk/output/sqlserver/NativeTest.java +258 -0
  11. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/setup.sql +160 -0
  12. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_bigint_null.yml +3 -0
  13. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_bit_null.csv +3 -0
  14. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_bit_null.yml +3 -0
  15. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_bit_null_expected.csv +2 -0
  16. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_char_null.csv +3 -0
  17. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_char_null.yml +3 -0
  18. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_char_null_expected.csv +2 -0
  19. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_date_null.yml +3 -0
  20. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_date_null_expected.csv +2 -0
  21. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_datetime2_null.yml +3 -0
  22. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_datetime2_null_expected.csv +2 -0
  23. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_datetime_null.yml +3 -0
  24. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_datetime_null_expected.csv +2 -0
  25. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_decimal_null.csv +3 -0
  26. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_decimal_null.yml +3 -0
  27. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_decimal_null_expected.csv +2 -0
  28. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_float_null.csv +3 -0
  29. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_float_null.yml +3 -0
  30. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_float_null_expected.csv +2 -0
  31. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_int_null.yml +3 -0
  32. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_integer_null.csv +3 -0
  33. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_integer_null_expected.csv +2 -0
  34. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_money_null.yml +3 -0
  35. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_nchar_null.yml +3 -0
  36. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_ntext_null.yml +3 -0
  37. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_numeric_null.yml +3 -0
  38. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_nvarchar_null.yml +3 -0
  39. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_real_null.yml +3 -0
  40. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_smalldatetime_null.yml +3 -0
  41. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_smalldatetime_null_expected.csv +2 -0
  42. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_smallint_null.yml +3 -0
  43. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_smallmoney_null.yml +3 -0
  44. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_text_null.yml +3 -0
  45. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_time_null.yml +3 -0
  46. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_time_null_expected.csv +2 -0
  47. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_timestamp_null.csv +3 -0
  48. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_tinyint_null.yml +3 -0
  49. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_varchar_null.csv +3 -0
  50. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_varchar_null.yml +3 -0
  51. data/src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_varchar_null_expected.csv +2 -0
  52. metadata +46 -4
  53. data/classpath/embulk-output-jdbc-0.7.12.jar +0 -0
  54. data/classpath/embulk-output-sqlserver-0.7.12.jar +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e3ed69cc6fcf1d2f3c438c92cef31529785ca59b
4
- data.tar.gz: 9918999eda849dadc22bd7e49941b0f95e41fb48
3
+ metadata.gz: 86ee70f432bde93e86ca7096607661cec4cf99f7
4
+ data.tar.gz: 810aabc28c4b36d448a22be742b5cf2b8e78b80f
5
5
  SHA512:
6
- metadata.gz: 2afd308537cba8f93859abaaf3e0b7058ac5fa160827062f2a76fbf491fd367224bf082c14a3ffc71639bf0b24da2fe793113d5181edbdc5d523e380ddef93b8
7
- data.tar.gz: 6f56d6d312892061f81a463bb80cbdadd008c8613825d197befbba0c140e1038423a1bc0b27071d109ee23729aa3ac129e760079fe9079fe8f569aab49509144
6
+ metadata.gz: ec2e66e980bb6d6c825b6389ffde4b2bb0325939fd59b7914dab15542fc1f81446c4a0ce4cd86d9e161b0cba9940eb8863ea2d35ba00cd32cbd0e7a0438df3dc
7
+ data.tar.gz: 36ec5540ea9df552fc626ec3849c2cea7fe9b6e967ed60e028e6b073e46a32d763c87f50c698aef0f2d46b99f160d0d87aa3c512341f11c7ae829c0fd01ecc5d
data/README.md CHANGED
@@ -26,6 +26,8 @@ embulk "-J-Djava.library.path=C:\drivers" run input-sqlserver.yml
26
26
  - **temp_schema**: schema name for intermediate tables. by default, intermediate tables will be created in the same schema as destination table. (string, optional)
27
27
  - **url**: URL of the JDBC connection (string, optional)
28
28
  - **table**: destination table name (string, required)
29
+ - **create_table_constraint** table constraint added to `CREATE TABLE` statement, like `CREATE TABLE <table_name> (<column1> <type1>, <column2> <type2>, ..., <create_table_constraint>) <create_table_option>`.
30
+ - **create_table_option** table option added to `CREATE TABLE` statement, like `CREATE TABLE <table_name> (<column1> <type1>, <column2> <type2>, ..., <create_table_constraint>) <create_table_option>`.
29
31
  - **options**: extra connection properties (hash, default: {})
30
32
  - **retry_limit** max retry count for database operations (integer, default: 12)
31
33
  - **retry_wait** initial retry wait time in milliseconds (integer, default: 1000 (1 second))
@@ -4,5 +4,5 @@ dependencies {
4
4
 
5
5
  testCompile 'org.embulk:embulk-standards:0.8.22'
6
6
  testCompile project(':embulk-output-jdbc').sourceSets.test.output
7
- testCompile files('driver/sqljdbc41.jar')
7
+ testCompile files('test_jdbc_driver/sqljdbc41.jar')
8
8
  }
@@ -136,7 +136,7 @@ public class SQLServerOutputPlugin
136
136
  boolean useJtdsDriver = false;
137
137
 
138
138
  if (sqlServerTask.getDriverPath().isPresent()) {
139
- loadDriverJar(sqlServerTask.getDriverPath().get());
139
+ addDriverJarToClasspath(sqlServerTask.getDriverPath().get());
140
140
  try {
141
141
  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
142
142
  } catch (Exception e) {
@@ -122,7 +122,7 @@ public class NativeBatchInsert implements BatchInsert
122
122
  @Override
123
123
  public void setNull(int sqlType) throws IOException, SQLException
124
124
  {
125
- batchWeight += client.bindNull(nextColumnIndex());
125
+ batchWeight += client.bindNull(nextColumnIndex(), sqlType);
126
126
  }
127
127
 
128
128
  @Override
@@ -2,7 +2,6 @@ package org.embulk.output.sqlserver;
2
2
 
3
3
  import java.sql.Connection;
4
4
  import java.sql.SQLException;
5
- import java.sql.Statement;
6
5
  import java.util.Arrays;
7
6
  import java.util.List;
8
7
 
@@ -61,27 +60,9 @@ public class SQLServerOutputConnection
61
60
  }
62
61
 
63
62
  @Override
64
- public void dropTableIfExists(TableIdentifier table) throws SQLException
63
+ protected boolean supportsTableIfExistsClause()
65
64
  {
66
- if (tableExists(table)) {
67
- dropTable(table);
68
- }
69
- }
70
-
71
- @Override
72
- protected void dropTableIfExists(Statement stmt, TableIdentifier table) throws SQLException
73
- {
74
- if (tableExists(table)) {
75
- dropTable(stmt, table);
76
- }
77
- }
78
-
79
- @Override
80
- public void createTableIfNotExists(TableIdentifier table, JdbcSchema schema) throws SQLException
81
- {
82
- if (!tableExists(table)) {
83
- createTable(table, schema);
84
- }
65
+ return false;
85
66
  }
86
67
 
87
68
  private static final String[] SIMPLE_TYPE_NAMES = {
@@ -4,6 +4,7 @@ import java.nio.ByteBuffer;
4
4
  import java.nio.CharBuffer;
5
5
  import java.nio.charset.Charset;
6
6
  import java.sql.SQLException;
7
+ import java.sql.Types;
7
8
  import java.util.HashMap;
8
9
  import java.util.Map;
9
10
 
@@ -150,7 +151,7 @@ public class NativeClientWrapper
150
151
  NativeClient.DB_IN));
151
152
  }
152
153
 
153
- public int bindNull(int columnIndex) throws SQLException
154
+ public int bindNull(int columnIndex, int sqlType) throws SQLException
154
155
  {
155
156
  Pointer pointer = prepareBuffer(columnIndex, 0);
156
157
  checkBCPResult("bcp_bind", client.bcp_bind(
@@ -160,11 +161,40 @@ public class NativeClientWrapper
160
161
  NativeClient.SQL_NULL_DATA,
161
162
  null,
162
163
  0,
163
- NativeClient.SQLCHARACTER,
164
+ jdbcTypeToNativeClientType(sqlType),
164
165
  columnIndex));
165
166
  return (int)pointer.size();
166
167
  }
167
168
 
169
+ private int jdbcTypeToNativeClientType(int sqlType)
170
+ {
171
+ switch (sqlType) {
172
+ case Types.BIT:
173
+ case Types.BOOLEAN:
174
+ return NativeClient.SQLBIT;
175
+
176
+ case Types.TINYINT: // SQL Server TINYINT needs 2 bytes because it is unsigned.
177
+ case Types.SMALLINT:
178
+ return NativeClient.SQLINT2;
179
+
180
+ case Types.INTEGER:
181
+ return NativeClient.SQLINT4;
182
+
183
+ case Types.BIGINT:
184
+ return NativeClient.SQLINT8;
185
+
186
+ case Types.REAL:
187
+ return NativeClient.SQLFLT4;
188
+
189
+ case Types.FLOAT:
190
+ case Types.DOUBLE:
191
+ return NativeClient.SQLFLT8;
192
+
193
+ default:
194
+ return NativeClient.SQLCHARACTER;
195
+ }
196
+ }
197
+
168
198
  public int bindValue(int columnIndex, String value) throws SQLException
169
199
  {
170
200
  ByteBuffer bytes = charset.encode(value);
@@ -0,0 +1,258 @@
1
+ package org.embulk.output.sqlserver;
2
+
3
+ import static org.embulk.output.sqlserver.SQLServerTests.execute;
4
+ import static org.embulk.output.sqlserver.SQLServerTests.selectRecords;
5
+ import static org.hamcrest.Matchers.is;
6
+ import static org.junit.Assert.assertThat;
7
+
8
+ import java.io.File;
9
+ import java.net.URISyntaxException;
10
+ import java.net.URL;
11
+ import java.nio.file.FileSystems;
12
+ import java.nio.file.Path;
13
+
14
+ import org.embulk.config.ConfigDiff;
15
+ import org.embulk.config.ConfigSource;
16
+ import org.embulk.output.SQLServerOutputPlugin;
17
+ import org.embulk.spi.OutputPlugin;
18
+ import org.embulk.test.EmbulkTests;
19
+ import org.embulk.test.TestingEmbulk;
20
+ import org.junit.Before;
21
+ import org.junit.Rule;
22
+ import org.junit.Test;
23
+
24
+ import com.google.common.io.Resources;
25
+
26
+ public class NativeTest
27
+ {
28
+ private static final String BASIC_RESOURCE_PATH = "org/embulk/output/sqlserver/test/expect/native/";
29
+
30
+ private static ConfigSource loadYamlResource(TestingEmbulk embulk, String fileName)
31
+ {
32
+ return embulk.loadYamlResource(BASIC_RESOURCE_PATH + fileName);
33
+ }
34
+
35
+ private static String readResource(String fileName)
36
+ {
37
+ return EmbulkTests.readResource(BASIC_RESOURCE_PATH + fileName);
38
+ }
39
+
40
+ @Rule
41
+ public TestingEmbulk embulk = TestingEmbulk.builder()
42
+ .registerPlugin(OutputPlugin.class, "sqlserver", SQLServerOutputPlugin.class)
43
+ .build();
44
+
45
+ private ConfigSource baseConfig;
46
+
47
+ @Before
48
+ public void setup()
49
+ {
50
+ baseConfig = SQLServerTests.baseConfig();
51
+ execute(readResource("setup.sql")); // setup rows
52
+ }
53
+
54
+ @Test
55
+ public void testTinyIntNull() throws Exception
56
+ {
57
+ Path in1 = toPath("test_integer_null.csv");
58
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_tinyint_null.yml")), in1);
59
+ assertThat(selectRecords(embulk, "TEST_TINYINT"), is(readResource("test_integer_null_expected.csv")));
60
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
61
+ }
62
+
63
+ @Test
64
+ public void testSmallIntNull() throws Exception
65
+ {
66
+ Path in1 = toPath("test_integer_null.csv");
67
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_smallint_null.yml")), in1);
68
+ assertThat(selectRecords(embulk, "TEST_SMALLINT"), is(readResource("test_integer_null_expected.csv")));
69
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
70
+ }
71
+
72
+ @Test
73
+ public void testIntNull() throws Exception
74
+ {
75
+ Path in1 = toPath("test_integer_null.csv");
76
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_int_null.yml")), in1);
77
+ assertThat(selectRecords(embulk, "TEST_INT"), is(readResource("test_integer_null_expected.csv")));
78
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
79
+ }
80
+
81
+ @Test
82
+ public void testBigIntNull() throws Exception
83
+ {
84
+ Path in1 = toPath("test_integer_null.csv");
85
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_bigint_null.yml")), in1);
86
+ assertThat(selectRecords(embulk, "TEST_BIGINT"), is(readResource("test_integer_null_expected.csv")));
87
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
88
+ }
89
+
90
+ @Test
91
+ public void testDecimalNull() throws Exception
92
+ {
93
+ Path in1 = toPath("test_decimal_null.csv");
94
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_decimal_null.yml")), in1);
95
+ assertThat(selectRecords(embulk, "TEST_DECIMAL"), is(readResource("test_decimal_null_expected.csv")));
96
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
97
+ }
98
+
99
+ @Test
100
+ public void testNumericNull() throws Exception
101
+ {
102
+ Path in1 = toPath("test_decimal_null.csv");
103
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_numeric_null.yml")), in1);
104
+ assertThat(selectRecords(embulk, "TEST_NUMERIC"), is(readResource("test_decimal_null_expected.csv")));
105
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
106
+ }
107
+
108
+ @Test
109
+ public void testMoneyNull() throws Exception
110
+ {
111
+ Path in1 = toPath("test_decimal_null.csv");
112
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_money_null.yml")), in1);
113
+ assertThat(selectRecords(embulk, "TEST_MONEY"), is(readResource("test_decimal_null_expected.csv")));
114
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
115
+ }
116
+
117
+ @Test
118
+ public void testSmallMoneyNull() throws Exception
119
+ {
120
+ Path in1 = toPath("test_decimal_null.csv");
121
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_smallmoney_null.yml")), in1);
122
+ assertThat(selectRecords(embulk, "TEST_SMALLMONEY"), is(readResource("test_decimal_null_expected.csv")));
123
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
124
+ }
125
+
126
+ @Test
127
+ public void testBitNull() throws Exception
128
+ {
129
+ Path in1 = toPath("test_bit_null.csv");
130
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_bit_null.yml")), in1);
131
+ assertThat(selectRecords(embulk, "TEST_BIT"), is(readResource("test_bit_null_expected.csv")));
132
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
133
+ }
134
+
135
+ @Test
136
+ public void testRealNull() throws Exception
137
+ {
138
+ Path in1 = toPath("test_float_null.csv");
139
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_real_null.yml")), in1);
140
+ assertThat(selectRecords(embulk, "TEST_REAL"), is(readResource("test_float_null_expected.csv")));
141
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
142
+ }
143
+
144
+ @Test
145
+ public void testFloatNull() throws Exception
146
+ {
147
+ Path in1 = toPath("test_float_null.csv");
148
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_float_null.yml")), in1);
149
+ assertThat(selectRecords(embulk, "TEST_FLOAT"), is(readResource("test_float_null_expected.csv")));
150
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
151
+ }
152
+
153
+ @Test
154
+ public void testCharNull() throws Exception
155
+ {
156
+ Path in1 = toPath("test_char_null.csv");
157
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_char_null.yml")), in1);
158
+ assertThat(selectRecords(embulk, "TEST_CHAR"), is(readResource("test_char_null_expected.csv")));
159
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
160
+ }
161
+
162
+ @Test
163
+ public void testVarCharNull() throws Exception
164
+ {
165
+ Path in1 = toPath("test_varchar_null.csv");
166
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_varchar_null.yml")), in1);
167
+ assertThat(selectRecords(embulk, "TEST_VARCHAR"), is(readResource("test_varchar_null_expected.csv")));
168
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
169
+ }
170
+
171
+ @Test
172
+ public void testTextNull() throws Exception
173
+ {
174
+ Path in1 = toPath("test_varchar_null.csv");
175
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_text_null.yml")), in1);
176
+ assertThat(selectRecords(embulk, "TEST_TEXT"), is(readResource("test_varchar_null_expected.csv")));
177
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
178
+ }
179
+
180
+ @Test
181
+ public void testNCharNull() throws Exception
182
+ {
183
+ Path in1 = toPath("test_char_null.csv");
184
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_nchar_null.yml")), in1);
185
+ assertThat(selectRecords(embulk, "TEST_NCHAR"), is(readResource("test_char_null_expected.csv")));
186
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
187
+ }
188
+
189
+ @Test
190
+ public void testNVarCharNull() throws Exception
191
+ {
192
+ Path in1 = toPath("test_varchar_null.csv");
193
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_nvarchar_null.yml")), in1);
194
+ assertThat(selectRecords(embulk, "TEST_NVARCHAR"), is(readResource("test_varchar_null_expected.csv")));
195
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
196
+ }
197
+
198
+ @Test
199
+ public void testNTextNull() throws Exception
200
+ {
201
+ Path in1 = toPath("test_varchar_null.csv");
202
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_ntext_null.yml")), in1);
203
+ assertThat(selectRecords(embulk, "TEST_NTEXT"), is(readResource("test_varchar_null_expected.csv")));
204
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
205
+ }
206
+
207
+ @Test
208
+ public void testDateNull() throws Exception
209
+ {
210
+ Path in1 = toPath("test_timestamp_null.csv");
211
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_date_null.yml")), in1);
212
+ assertThat(selectRecords(embulk, "TEST_DATE"), is(readResource("test_date_null_expected.csv")));
213
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
214
+ }
215
+
216
+ @Test
217
+ public void testDateTimeNull() throws Exception
218
+ {
219
+ Path in1 = toPath("test_timestamp_null.csv");
220
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_datetime_null.yml")), in1);
221
+ assertThat(selectRecords(embulk, "TEST_DATETIME"), is(readResource("test_datetime_null_expected.csv")));
222
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
223
+ }
224
+
225
+ @Test
226
+ public void testDateTime2Null() throws Exception
227
+ {
228
+ Path in1 = toPath("test_timestamp_null.csv");
229
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_datetime2_null.yml")), in1);
230
+ assertThat(selectRecords(embulk, "TEST_DATETIME2"), is(readResource("test_datetime2_null_expected.csv")));
231
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
232
+ }
233
+
234
+ @Test
235
+ public void testSmallDateTimeNull() throws Exception
236
+ {
237
+ Path in1 = toPath("test_timestamp_null.csv");
238
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_smalldatetime_null.yml")), in1);
239
+ assertThat(selectRecords(embulk, "TEST_SMALLDATETIME"), is(readResource("test_smalldatetime_null_expected.csv")));
240
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
241
+ }
242
+
243
+ @Test
244
+ public void testTimeNull() throws Exception
245
+ {
246
+ Path in1 = toPath("test_timestamp_null.csv");
247
+ TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_time_null.yml")), in1);
248
+ assertThat(selectRecords(embulk, "TEST_TIME"), is(readResource("test_time_null_expected.csv")));
249
+ //assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
250
+ }
251
+
252
+ private Path toPath(String fileName) throws URISyntaxException
253
+ {
254
+ URL url = Resources.getResource(BASIC_RESOURCE_PATH + fileName);
255
+ return FileSystems.getDefault().getPath(new File(url.toURI()).getAbsolutePath());
256
+ }
257
+
258
+ }
@@ -0,0 +1,160 @@
1
+ DROP TABLE TEST_TINYINT;
2
+ CREATE TABLE TEST_TINYINT (
3
+ ID CHAR(4),
4
+ VALUE TINYINT,
5
+ PRIMARY KEY (ID)
6
+ );
7
+
8
+ DROP TABLE TEST_SMALLINT;
9
+ CREATE TABLE TEST_SMALLINT (
10
+ ID CHAR(4),
11
+ VALUE SMALLINT,
12
+ PRIMARY KEY (ID)
13
+ );
14
+
15
+ DROP TABLE TEST_INT;
16
+ CREATE TABLE TEST_INT (
17
+ ID CHAR(4),
18
+ VALUE INT,
19
+ PRIMARY KEY (ID)
20
+ );
21
+
22
+ DROP TABLE TEST_BIGINT;
23
+ CREATE TABLE TEST_BIGINT (
24
+ ID CHAR(4),
25
+ VALUE BIGINT,
26
+ PRIMARY KEY (ID)
27
+ );
28
+
29
+ DROP TABLE TEST_BIT;
30
+ CREATE TABLE TEST_BIT (
31
+ ID CHAR(4),
32
+ VALUE BIT,
33
+ PRIMARY KEY (ID)
34
+ );
35
+
36
+ DROP TABLE TEST_DECIMAL;
37
+ CREATE TABLE TEST_DECIMAL (
38
+ ID CHAR(4),
39
+ VALUE DECIMAL(12,4),
40
+ PRIMARY KEY (ID)
41
+ );
42
+
43
+ DROP TABLE TEST_NUMERIC;
44
+ CREATE TABLE TEST_NUMERIC (
45
+ ID CHAR(4),
46
+ VALUE NUMERIC(12,4),
47
+ PRIMARY KEY (ID)
48
+ );
49
+
50
+ DROP TABLE TEST_SMALLMONEY;
51
+ CREATE TABLE TEST_SMALLMONEY (
52
+ ID CHAR(4),
53
+ VALUE SMALLMONEY,
54
+ PRIMARY KEY (ID)
55
+ );
56
+
57
+ DROP TABLE TEST_MONEY;
58
+ CREATE TABLE TEST_MONEY (
59
+ ID CHAR(4),
60
+ VALUE MONEY,
61
+ PRIMARY KEY (ID)
62
+ );
63
+
64
+ DROP TABLE TEST_BIT;
65
+ CREATE TABLE TEST_BIT (
66
+ ID CHAR(4),
67
+ VALUE BIT,
68
+ PRIMARY KEY (ID)
69
+ );
70
+
71
+ DROP TABLE TEST_REAL;
72
+ CREATE TABLE TEST_REAL (
73
+ ID CHAR(4),
74
+ VALUE REAL,
75
+ PRIMARY KEY (ID)
76
+ );
77
+
78
+ DROP TABLE TEST_FLOAT;
79
+ CREATE TABLE TEST_FLOAT (
80
+ ID CHAR(4),
81
+ VALUE FLOAT,
82
+ PRIMARY KEY (ID)
83
+ );
84
+
85
+ DROP TABLE TEST_CHAR;
86
+ CREATE TABLE TEST_CHAR (
87
+ ID INT,
88
+ VALUE CHAR(4),
89
+ PRIMARY KEY (ID)
90
+ );
91
+
92
+ DROP TABLE TEST_VARCHAR;
93
+ CREATE TABLE TEST_VARCHAR (
94
+ ID INT,
95
+ VALUE VARCHAR(4),
96
+ PRIMARY KEY (ID)
97
+ );
98
+
99
+ DROP TABLE TEST_TEXT;
100
+ CREATE TABLE TEST_TEXT (
101
+ ID INT,
102
+ VALUE TEXT,
103
+ PRIMARY KEY (ID)
104
+ );
105
+
106
+ DROP TABLE TEST_NCHAR;
107
+ CREATE TABLE TEST_NCHAR (
108
+ ID INT,
109
+ VALUE NCHAR(4),
110
+ PRIMARY KEY (ID)
111
+ );
112
+
113
+ DROP TABLE TEST_NVARCHAR;
114
+ CREATE TABLE TEST_NVARCHAR (
115
+ ID INT,
116
+ VALUE NVARCHAR(4),
117
+ PRIMARY KEY (ID)
118
+ );
119
+
120
+ DROP TABLE TEST_NTEXT;
121
+ CREATE TABLE TEST_NTEXT (
122
+ ID INT,
123
+ VALUE NTEXT,
124
+ PRIMARY KEY (ID)
125
+ );
126
+
127
+ DROP TABLE TEST_DATE;
128
+ CREATE TABLE TEST_DATE (
129
+ ID INT,
130
+ VALUE DATE,
131
+ PRIMARY KEY (ID)
132
+ );
133
+
134
+ DROP TABLE TEST_DATETIME;
135
+ CREATE TABLE TEST_DATETIME (
136
+ ID INT,
137
+ VALUE DATETIME,
138
+ PRIMARY KEY (ID)
139
+ );
140
+
141
+ DROP TABLE TEST_DATETIME2;
142
+ CREATE TABLE TEST_DATETIME2 (
143
+ ID INT,
144
+ VALUE DATETIME2,
145
+ PRIMARY KEY (ID)
146
+ );
147
+
148
+ DROP TABLE TEST_SMALLDATETIME;
149
+ CREATE TABLE TEST_SMALLDATETIME (
150
+ ID INT,
151
+ VALUE SMALLDATETIME,
152
+ PRIMARY KEY (ID)
153
+ );
154
+
155
+ DROP TABLE TEST_TIME;
156
+ CREATE TABLE TEST_TIME (
157
+ ID INT,
158
+ VALUE TIME,
159
+ PRIMARY KEY (ID)
160
+ );
@@ -0,0 +1,3 @@
1
+ table: TEST_BIGINT
2
+ mode: insert_direct
3
+ insert_method: native
@@ -0,0 +1,3 @@
1
+ table: TEST_BIT
2
+ mode: insert_direct
3
+ insert_method: native
@@ -0,0 +1,3 @@
1
+ table: TEST_CHAR
2
+ mode: insert_direct
3
+ insert_method: native
@@ -0,0 +1,3 @@
1
+ table: TEST_DATE
2
+ mode: insert_direct
3
+ insert_method: native
@@ -0,0 +1,3 @@
1
+ table: TEST_DATETIME2
2
+ mode: insert_direct
3
+ insert_method: native
@@ -0,0 +1,3 @@
1
+ table: TEST_DATETIME
2
+ mode: insert_direct
3
+ insert_method: native
@@ -0,0 +1,3 @@
1
+ table: TEST_DECIMAL
2
+ mode: insert_direct
3
+ insert_method: native
@@ -0,0 +1,3 @@
1
+ table: TEST_FLOAT
2
+ mode: insert_direct
3
+ insert_method: native
@@ -0,0 +1,3 @@
1
+ table: TEST_INT
2
+ mode: insert_direct
3
+ insert_method: native
@@ -0,0 +1,3 @@
1
+ table: TEST_MONEY
2
+ mode: insert_direct
3
+ insert_method: native
@@ -0,0 +1,3 @@
1
+ table: TEST_NCHAR
2
+ mode: insert_direct
3
+ insert_method: native
@@ -0,0 +1,3 @@
1
+ table: TEST_NTEXT
2
+ mode: insert_direct
3
+ insert_method: native
@@ -0,0 +1,3 @@
1
+ table: TEST_NUMERIC
2
+ mode: insert_direct
3
+ insert_method: native
@@ -0,0 +1,3 @@
1
+ table: TEST_NVARCHAR
2
+ mode: insert_direct
3
+ insert_method: native
@@ -0,0 +1,3 @@
1
+ table: TEST_REAL
2
+ mode: insert_direct
3
+ insert_method: native
@@ -0,0 +1,3 @@
1
+ table: TEST_SMALLDATETIME
2
+ mode: insert_direct
3
+ insert_method: native
@@ -0,0 +1,3 @@
1
+ table: TEST_SMALLINT
2
+ mode: insert_direct
3
+ insert_method: native
@@ -0,0 +1,3 @@
1
+ table: TEST_SMALLMONEY
2
+ mode: insert_direct
3
+ insert_method: native
@@ -0,0 +1,3 @@
1
+ table: TEST_TEXT
2
+ mode: insert_direct
3
+ insert_method: native
@@ -0,0 +1,3 @@
1
+ table: TEST_TIME
2
+ mode: insert_direct
3
+ insert_method: native
@@ -0,0 +1,3 @@
1
+ ID:long,value:timestamp
2
+ 1,
3
+ 2,2017-12-23 12:00:00.00 +0900
@@ -0,0 +1,3 @@
1
+ table: TEST_TINYINT
2
+ mode: insert_direct
3
+ insert_method: native
@@ -0,0 +1,3 @@
1
+ table: TEST_VARCHAR
2
+ mode: insert_direct
3
+ insert_method: native
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embulk-output-sqlserver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.12
4
+ version: 0.7.13
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-24 00:00:00.000000000 Z
11
+ date: 2017-12-08 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Inserts or updates records to a table.
14
14
  email:
@@ -19,8 +19,8 @@ extra_rdoc_files: []
19
19
  files:
20
20
  - README.md
21
21
  - build.gradle
22
- - classpath/embulk-output-jdbc-0.7.12.jar
23
- - classpath/embulk-output-sqlserver-0.7.12.jar
22
+ - classpath/embulk-output-jdbc-0.7.13.jar
23
+ - classpath/embulk-output-sqlserver-0.7.13.jar
24
24
  - classpath/jtds-1.3.1.jar
25
25
  - lib/embulk/output/sqlserver.rb
26
26
  - src/main/java/org/embulk/output/SQLServerOutputPlugin.java
@@ -36,6 +36,7 @@ files:
36
36
  - src/main/java/org/embulk/output/sqlserver/setter/SQLServerColumnSetterFactory.java
37
37
  - src/main/java/org/embulk/output/sqlserver/setter/SQLServerSqlTimeColumnSetter.java
38
38
  - src/test/java/org/embulk/output/sqlserver/BasicTest.java
39
+ - src/test/java/org/embulk/output/sqlserver/NativeTest.java
39
40
  - src/test/java/org/embulk/output/sqlserver/SQLServerTests.java
40
41
  - src/test/resources/org/embulk/output/sqlserver/test/expect/basic/setup.sql
41
42
  - src/test/resources/org/embulk/output/sqlserver/test/expect/basic/test1.csv
@@ -58,6 +59,47 @@ files:
58
59
  - src/test/resources/org/embulk/output/sqlserver/test/expect/basic/test_string_timestamp_expected.csv
59
60
  - src/test/resources/org/embulk/output/sqlserver/test/expect/basic/test_truncate_insert.yml
60
61
  - src/test/resources/org/embulk/output/sqlserver/test/expect/basic/test_truncate_insert_expected.csv
62
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/setup.sql
63
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_bigint_null.yml
64
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_bit_null.csv
65
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_bit_null.yml
66
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_bit_null_expected.csv
67
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_char_null.csv
68
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_char_null.yml
69
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_char_null_expected.csv
70
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_date_null.yml
71
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_date_null_expected.csv
72
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_datetime2_null.yml
73
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_datetime2_null_expected.csv
74
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_datetime_null.yml
75
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_datetime_null_expected.csv
76
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_decimal_null.csv
77
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_decimal_null.yml
78
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_decimal_null_expected.csv
79
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_float_null.csv
80
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_float_null.yml
81
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_float_null_expected.csv
82
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_int_null.yml
83
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_integer_null.csv
84
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_integer_null_expected.csv
85
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_money_null.yml
86
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_nchar_null.yml
87
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_ntext_null.yml
88
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_numeric_null.yml
89
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_nvarchar_null.yml
90
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_real_null.yml
91
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_smalldatetime_null.yml
92
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_smalldatetime_null_expected.csv
93
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_smallint_null.yml
94
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_smallmoney_null.yml
95
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_text_null.yml
96
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_time_null.yml
97
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_time_null_expected.csv
98
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_timestamp_null.csv
99
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_tinyint_null.yml
100
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_varchar_null.csv
101
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_varchar_null.yml
102
+ - src/test/resources/org/embulk/output/sqlserver/test/expect/native/test_varchar_null_expected.csv
61
103
  homepage: https://github.com/embulk/embulk-output-jdbc
62
104
  licenses:
63
105
  - Apache 2.0