embulk-output-oracle 0.2.4 → 0.3.0

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