embulk-output-oracle 0.2.4 → 0.3.0

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 (55) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +155 -110
  3. data/build.gradle +6 -6
  4. data/classpath/embulk-output-jdbc-0.3.0.jar +0 -0
  5. data/classpath/embulk-output-oracle-0.3.0.jar +0 -0
  6. data/lib/embulk/output/oracle.rb +3 -3
  7. data/src/main/cpp/common/dir-path-load.cpp +424 -424
  8. data/src/main/cpp/common/dir-path-load.h +36 -36
  9. data/src/main/cpp/common/embulk-output-oracle.cpp +196 -196
  10. data/src/main/cpp/common/org_embulk_output_oracle_oci_OCI.h +77 -77
  11. data/src/main/cpp/linux/build.sh +21 -21
  12. data/src/main/cpp/win/build.bat +31 -31
  13. data/src/main/cpp/win/dllmain.cpp +25 -25
  14. data/src/main/cpp/win/embulk-output-oracle.sln +39 -39
  15. data/src/main/cpp/win/embulk-output-oracle.vcxproj +175 -175
  16. data/src/main/java/org/embulk/output/OracleOutputPlugin.java +22 -66
  17. data/src/main/java/org/embulk/output/oracle/DirectBatchInsert.java +289 -289
  18. data/src/main/java/org/embulk/output/oracle/InsertMethod.java +8 -8
  19. data/src/main/java/org/embulk/output/oracle/OracleCharset.java +32 -19
  20. data/src/main/java/org/embulk/output/oracle/OracleOutputConnection.java +165 -134
  21. data/src/main/java/org/embulk/output/oracle/OracleOutputConnector.java +49 -49
  22. data/src/main/java/org/embulk/output/oracle/TimestampFormat.java +37 -37
  23. data/src/main/java/org/embulk/output/oracle/oci/ColumnDefinition.java +26 -26
  24. data/src/main/java/org/embulk/output/oracle/oci/OCI.java +139 -139
  25. data/src/main/java/org/embulk/output/oracle/oci/OCIManager.java +64 -64
  26. data/src/main/java/org/embulk/output/oracle/oci/OCIWrapper.java +96 -96
  27. data/src/main/java/org/embulk/output/oracle/oci/RowBuffer.java +99 -99
  28. data/src/main/java/org/embulk/output/oracle/oci/TableDefinition.java +24 -24
  29. data/src/test/cpp/common/embulk-output-oracle-test.cpp +69 -69
  30. data/src/test/cpp/linux/build.sh +19 -19
  31. data/src/test/cpp/win/build.bat +28 -28
  32. data/src/test/cpp/win/embulk-output-oracle-test.vcxproj +154 -154
  33. data/src/test/java/org/embulk/input/filesplit/LocalFileSplitInputPlugin.java +187 -187
  34. data/src/test/java/org/embulk/input/filesplit/PartialFile.java +49 -49
  35. data/src/test/java/org/embulk/input/filesplit/PartialFileInputStream.java +154 -154
  36. data/src/test/java/org/embulk/output/oracle/ChildFirstClassLoader.java +42 -42
  37. data/src/test/java/org/embulk/output/oracle/EmbulkPluginTester.java +120 -120
  38. data/src/test/java/org/embulk/output/oracle/EmptyConfigSource.java +100 -100
  39. data/src/test/java/org/embulk/output/oracle/OracleOutputPluginTest.java +172 -161
  40. data/src/test/java/org/embulk/output/oracle/OracleOutputPluginTestImpl.java +445 -413
  41. data/src/test/java/org/embulk/output/oracle/TimestampFormatTest.java +57 -57
  42. data/src/test/resources/data/test1/test1.csv +3 -3
  43. data/src/test/resources/yml/test-insert-direct.yml +26 -26
  44. data/src/test/resources/yml/test-insert-oci-split.yml +26 -26
  45. data/src/test/resources/yml/test-insert-oci.yml +26 -26
  46. data/src/test/resources/yml/test-insert.yml +25 -25
  47. data/src/test/resources/yml/test-replace-long-name-multibyte.yml +25 -0
  48. data/src/test/resources/yml/test-replace-long-name.yml +25 -25
  49. data/src/test/resources/yml/test-replace.yml +25 -25
  50. data/src/test/resources/yml/test-string-timestamp.yml +25 -0
  51. data/src/test/resources/yml/test-url.yml +24 -24
  52. metadata +6 -5
  53. data/classpath/embulk-output-jdbc-0.2.4.jar +0 -0
  54. data/classpath/embulk-output-oracle-0.2.4.jar +0 -0
  55. data/src/main/java/org/embulk/output/oracle/setter/OracleColumnSetterFactory.java +0 -31
@@ -1,100 +1,100 @@
1
- package org.embulk.output.oracle;
2
-
3
- import java.util.Collections;
4
- import java.util.List;
5
- import java.util.Map.Entry;
6
-
7
- import org.embulk.config.ConfigSource;
8
- import org.embulk.config.DataSource;
9
-
10
- import com.fasterxml.jackson.databind.JsonNode;
11
- import com.fasterxml.jackson.databind.node.ObjectNode;
12
-
13
- public class EmptyConfigSource implements ConfigSource
14
- {
15
-
16
- @Override
17
- public <E> E get(Class<E> type, String attrName)
18
- {
19
- return null;
20
- }
21
-
22
- @Override
23
- public <E> E get(Class<E> type, String attrName, E defaultValue)
24
- {
25
- return defaultValue;
26
- }
27
-
28
- @Override
29
- public List<String> getAttributeNames()
30
- {
31
- return Collections.emptyList();
32
- }
33
-
34
- @Override
35
- public Iterable<Entry<String, JsonNode>> getAttributes()
36
- {
37
- return Collections.emptyList();
38
- }
39
-
40
- @Override
41
- public ObjectNode getObjectNode()
42
- {
43
- return null;
44
- }
45
-
46
- @Override
47
- public boolean isEmpty()
48
- {
49
- return true;
50
- }
51
-
52
- @Override
53
- public ConfigSource deepCopy()
54
- {
55
- return this;
56
- }
57
-
58
- @Override
59
- public ConfigSource getNested(String s)
60
- {
61
- return null;
62
- }
63
-
64
- @Override
65
- public ConfigSource getNestedOrSetEmpty(String s)
66
- {
67
- return null;
68
- }
69
-
70
- @Override
71
- public <T> T loadConfig(Class<T> class1)
72
- {
73
- return null;
74
- }
75
-
76
- @Override
77
- public ConfigSource merge(DataSource datasource)
78
- {
79
- return null;
80
- }
81
-
82
- @Override
83
- public ConfigSource set(String s, Object obj)
84
- {
85
- return null;
86
- }
87
-
88
- @Override
89
- public ConfigSource setAll(DataSource datasource)
90
- {
91
- return null;
92
- }
93
-
94
- @Override
95
- public ConfigSource setNested(String s, DataSource datasource)
96
- {
97
- return null;
98
- }
99
-
100
- }
1
+ package org.embulk.output.oracle;
2
+
3
+ import java.util.Collections;
4
+ import java.util.List;
5
+ import java.util.Map.Entry;
6
+
7
+ import org.embulk.config.ConfigSource;
8
+ import org.embulk.config.DataSource;
9
+
10
+ import com.fasterxml.jackson.databind.JsonNode;
11
+ import com.fasterxml.jackson.databind.node.ObjectNode;
12
+
13
+ public class EmptyConfigSource implements ConfigSource
14
+ {
15
+
16
+ @Override
17
+ public <E> E get(Class<E> type, String attrName)
18
+ {
19
+ return null;
20
+ }
21
+
22
+ @Override
23
+ public <E> E get(Class<E> type, String attrName, E defaultValue)
24
+ {
25
+ return defaultValue;
26
+ }
27
+
28
+ @Override
29
+ public List<String> getAttributeNames()
30
+ {
31
+ return Collections.emptyList();
32
+ }
33
+
34
+ @Override
35
+ public Iterable<Entry<String, JsonNode>> getAttributes()
36
+ {
37
+ return Collections.emptyList();
38
+ }
39
+
40
+ @Override
41
+ public ObjectNode getObjectNode()
42
+ {
43
+ return null;
44
+ }
45
+
46
+ @Override
47
+ public boolean isEmpty()
48
+ {
49
+ return true;
50
+ }
51
+
52
+ @Override
53
+ public ConfigSource deepCopy()
54
+ {
55
+ return this;
56
+ }
57
+
58
+ @Override
59
+ public ConfigSource getNested(String s)
60
+ {
61
+ return null;
62
+ }
63
+
64
+ @Override
65
+ public ConfigSource getNestedOrSetEmpty(String s)
66
+ {
67
+ return null;
68
+ }
69
+
70
+ @Override
71
+ public <T> T loadConfig(Class<T> class1)
72
+ {
73
+ return null;
74
+ }
75
+
76
+ @Override
77
+ public ConfigSource merge(DataSource datasource)
78
+ {
79
+ return null;
80
+ }
81
+
82
+ @Override
83
+ public ConfigSource set(String s, Object obj)
84
+ {
85
+ return null;
86
+ }
87
+
88
+ @Override
89
+ public ConfigSource setAll(DataSource datasource)
90
+ {
91
+ return null;
92
+ }
93
+
94
+ @Override
95
+ public ConfigSource setNested(String s, DataSource datasource)
96
+ {
97
+ return null;
98
+ }
99
+
100
+ }
@@ -1,161 +1,172 @@
1
- package org.embulk.output.oracle;
2
-
3
- import java.io.File;
4
- import java.lang.reflect.Method;
5
- import java.net.URL;
6
- import java.util.ArrayList;
7
- import java.util.List;
8
-
9
- import org.junit.BeforeClass;
10
- import org.junit.Test;
11
-
12
-
13
- public class OracleOutputPluginTest
14
- {
15
- private static class NamedObject
16
- {
17
- public final String name;
18
- public final Object value;
19
- public NamedObject(String name, Object value)
20
- {
21
- this.name = name;
22
- this.value = value;
23
- }
24
- }
25
-
26
- private static List<NamedObject> testObjects = new ArrayList<NamedObject>();
27
- private static NamedObject test12c;
28
- private static NamedObject test11g;
29
-
30
- @BeforeClass
31
- public static void beforeClass() throws Exception
32
- {
33
- if (System.getProperty("path.separator").equals(";")) {
34
- // forw Windows
35
- System.setProperty("file.encoding", "MS932");
36
- }
37
-
38
- test12c = createTest("/driver/12c/ojdbc7.jar");
39
- if (test12c == null) {
40
- System.out.println("Warning: you should put ojdbc7.jar (version 12c) on 'test/resources/driver/12c' directory.");
41
- } else {
42
- testObjects.add(test12c);
43
- }
44
-
45
- test11g = createTest("/driver/11g/ojdbc6.jar");
46
- if (test11g == null) {
47
- System.out.println("Warning: you should put ojdbc6.jar (version 11g Release 2) on 'test/resources/driver/11g' directory.");
48
- } else {
49
- testObjects.add(test11g);
50
- }
51
- }
52
-
53
- private static NamedObject createTest(String jdbcDriverPath) throws Exception
54
- {
55
- String[] classPaths = System.getProperty("java.class.path").split(System.getProperty("path.separator"));
56
- List<URL> urls = new ArrayList<URL>();
57
- for (String classPath : classPaths) {
58
- urls.add(new File(classPath).toURI().toURL());
59
- }
60
- // load Oracle JDBC driver dynamically, in order to enable to build without the driver.
61
- URL url = OracleOutputPluginTest.class.getResource(jdbcDriverPath);
62
- if (url == null) {
63
- return null;
64
- }
65
-
66
- urls.add(url);
67
- ClassLoader classLoader = new ChildFirstClassLoader(urls, OracleOutputPluginTest.class.getClassLoader());
68
- Thread.currentThread().setContextClassLoader(classLoader);
69
-
70
- Class<?> testClass = classLoader.loadClass(OracleOutputPluginTest.class.getName() + "Impl");
71
- final Object testObject = testClass.newInstance();
72
- final String version = (String)invoke(testObject, "beforeClass");
73
- if (version == null) {
74
- return null;
75
- }
76
- return new NamedObject(version, testObject);
77
- }
78
-
79
- private static void invoke(String methodName) throws Exception
80
- {
81
- //invoke(test12c, methodName);
82
- for (NamedObject testObject : testObjects) {
83
- invoke(testObject, methodName);
84
- }
85
- }
86
-
87
- private static Object invoke(NamedObject testObject, String methodName) throws Exception
88
- {
89
- if (testObject != null) {
90
- System.out.println("*** " + testObject.name + " ***");
91
- return invoke(testObject.value, methodName);
92
- }
93
- return null;
94
- }
95
-
96
- private static Object invoke(Object testObject, String methodName) throws Exception
97
- {
98
- if (testObject != null) {
99
- Thread.currentThread().setContextClassLoader(testObject.getClass().getClassLoader());
100
- Method method = testObject.getClass().getMethod(methodName);
101
- return method.invoke(testObject);
102
- }
103
- return null;
104
- }
105
-
106
- @Test
107
- public void testInsert() throws Exception
108
- {
109
- invoke("testInsert");
110
- }
111
-
112
- @Test
113
- public void testInsertCreate() throws Exception
114
- {
115
- invoke("testInsertCreate");
116
- }
117
-
118
- @Test
119
- public void testInsertDirect() throws Exception
120
- {
121
- // ArrayIndexOutOfBoundsException thrown if using 12c driver.
122
- invoke(test11g, "testInsertDirect");
123
- }
124
-
125
- @Test
126
- public void testInsertOCI() throws Exception
127
- {
128
- invoke("testInsertOCI");
129
- }
130
-
131
- @Test
132
- public void testInsertOCISplit() throws Exception
133
- {
134
- invoke("testInsertOCISplit");
135
- }
136
-
137
- @Test
138
- public void testUrl() throws Exception
139
- {
140
- invoke("testUrl");
141
- }
142
-
143
- @Test
144
- public void testReplace() throws Exception
145
- {
146
- invoke("testReplace");
147
- }
148
-
149
- @Test
150
- public void testReplaceLongName() throws Exception
151
- {
152
- invoke("testReplaceLongName");
153
- }
154
-
155
- @Test
156
- public void testReplaceCreate() throws Exception
157
- {
158
- invoke("testReplaceCreate");
159
- }
160
-
161
- }
1
+ package org.embulk.output.oracle;
2
+
3
+ import java.io.File;
4
+ import java.lang.reflect.Method;
5
+ import java.net.URL;
6
+ import java.util.ArrayList;
7
+ import java.util.List;
8
+
9
+ import org.junit.BeforeClass;
10
+ import org.junit.Test;
11
+
12
+
13
+ public class OracleOutputPluginTest
14
+ {
15
+ private static class NamedObject
16
+ {
17
+ public final String name;
18
+ public final Object value;
19
+ public NamedObject(String name, Object value)
20
+ {
21
+ this.name = name;
22
+ this.value = value;
23
+ }
24
+ }
25
+
26
+ private static List<NamedObject> testObjects = new ArrayList<NamedObject>();
27
+ private static NamedObject test12c;
28
+ private static NamedObject test11g;
29
+
30
+ @BeforeClass
31
+ public static void beforeClass() throws Exception
32
+ {
33
+ if (System.getProperty("path.separator").equals(";")) {
34
+ // forw Windows
35
+ System.setProperty("file.encoding", "MS932");
36
+ }
37
+
38
+ test12c = createTest("/driver/12c/ojdbc7.jar");
39
+ if (test12c == null) {
40
+ System.out.println("Warning: you should put ojdbc7.jar (version 12c) on 'test/resources/driver/12c' directory.");
41
+ } else {
42
+ testObjects.add(test12c);
43
+ }
44
+
45
+ test11g = createTest("/driver/11g/ojdbc6.jar");
46
+ if (test11g == null) {
47
+ System.out.println("Warning: you should put ojdbc6.jar (version 11g Release 2) on 'test/resources/driver/11g' directory.");
48
+ } else {
49
+ testObjects.add(test11g);
50
+ }
51
+ }
52
+
53
+ private static NamedObject createTest(String jdbcDriverPath) throws Exception
54
+ {
55
+ String[] classPaths = System.getProperty("java.class.path").split(System.getProperty("path.separator"));
56
+ List<URL> urls = new ArrayList<URL>();
57
+ for (String classPath : classPaths) {
58
+ urls.add(new File(classPath).toURI().toURL());
59
+ }
60
+ // load Oracle JDBC driver dynamically, in order to enable to build without the driver.
61
+ URL url = OracleOutputPluginTest.class.getResource(jdbcDriverPath);
62
+ if (url == null) {
63
+ return null;
64
+ }
65
+
66
+ urls.add(url);
67
+ ClassLoader classLoader = new ChildFirstClassLoader(urls, OracleOutputPluginTest.class.getClassLoader());
68
+ Thread.currentThread().setContextClassLoader(classLoader);
69
+
70
+ Class<?> testClass = classLoader.loadClass(OracleOutputPluginTest.class.getName() + "Impl");
71
+ final Object testObject = testClass.newInstance();
72
+ final String version = (String)invoke(testObject, "beforeClass");
73
+ if (version == null) {
74
+ return null;
75
+ }
76
+ return new NamedObject(version, testObject);
77
+ }
78
+
79
+ private static void invoke(String methodName) throws Exception
80
+ {
81
+ //invoke(test12c, methodName);
82
+ for (NamedObject testObject : testObjects) {
83
+ invoke(testObject, methodName);
84
+ }
85
+ }
86
+
87
+ private static Object invoke(NamedObject testObject, String methodName) throws Exception
88
+ {
89
+ if (testObject != null) {
90
+ System.out.println("*** " + testObject.name + " ***");
91
+ return invoke(testObject.value, methodName);
92
+ }
93
+ return null;
94
+ }
95
+
96
+ private static Object invoke(Object testObject, String methodName) throws Exception
97
+ {
98
+ if (testObject != null) {
99
+ Thread.currentThread().setContextClassLoader(testObject.getClass().getClassLoader());
100
+ Method method = testObject.getClass().getMethod(methodName);
101
+ return method.invoke(testObject);
102
+ }
103
+ return null;
104
+ }
105
+
106
+ @Test
107
+ public void testInsert() throws Exception
108
+ {
109
+ invoke("testInsert");
110
+ }
111
+
112
+ @Test
113
+ public void testInsertCreate() throws Exception
114
+ {
115
+ invoke("testInsertCreate");
116
+ }
117
+
118
+ @Test
119
+ public void testInsertDirect() throws Exception
120
+ {
121
+ // ArrayIndexOutOfBoundsException thrown if using 12c driver.
122
+ invoke(test11g, "testInsertDirect");
123
+ }
124
+
125
+ @Test
126
+ public void testInsertOCI() throws Exception
127
+ {
128
+ invoke("testInsertOCI");
129
+ }
130
+
131
+ @Test
132
+ public void testInsertOCISplit() throws Exception
133
+ {
134
+ invoke("testInsertOCISplit");
135
+ }
136
+
137
+ @Test
138
+ public void testUrl() throws Exception
139
+ {
140
+ invoke("testUrl");
141
+ }
142
+
143
+ @Test
144
+ public void testReplace() throws Exception
145
+ {
146
+ invoke("testReplace");
147
+ }
148
+
149
+ @Test
150
+ public void testReplaceLongName() throws Exception
151
+ {
152
+ invoke("testReplaceLongName");
153
+ }
154
+
155
+ @Test
156
+ public void testReplaceLongNameMultibyte() throws Exception
157
+ {
158
+ invoke("testReplaceLongNameMultibyte");
159
+ }
160
+
161
+ @Test
162
+ public void testReplaceCreate() throws Exception
163
+ {
164
+ invoke("testReplaceCreate");
165
+ }
166
+
167
+ @Test
168
+ public void testStringTimestamp() throws Exception
169
+ {
170
+ invoke("testStringTimestamp");
171
+ }
172
+ }