@platforma-sdk/workflow-tengo 2.8.0 → 2.8.2

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 (59) hide show
  1. package/dist/tengo/lib/assets.lib.tengo +76 -82
  2. package/dist/tengo/lib/constants.lib.tengo +28 -31
  3. package/dist/tengo/lib/exec.R.internal.lib.tengo +14 -14
  4. package/dist/tengo/lib/exec.R.lib.tengo +158 -167
  5. package/dist/tengo/lib/exec.internal.lib.tengo +222 -234
  6. package/dist/tengo/lib/exec.lib.tengo +647 -714
  7. package/dist/tengo/lib/exec.package.lib.tengo +229 -238
  8. package/dist/tengo/lib/exec.python.internal.lib.tengo +5 -6
  9. package/dist/tengo/lib/exec.python.lib.tengo +138 -146
  10. package/dist/tengo/lib/exec.runcmd.lib.tengo +234 -253
  11. package/dist/tengo/lib/exec.runenv.lib.tengo +88 -92
  12. package/dist/tengo/lib/exec.stream.lib.tengo +36 -40
  13. package/dist/tengo/lib/file.internal.lib.tengo +70 -77
  14. package/dist/tengo/lib/file.lib.tengo +54 -57
  15. package/dist/tengo/lib/ll.lib.tengo +217 -241
  16. package/dist/tengo/lib/maps.lib.tengo +98 -106
  17. package/dist/tengo/lib/objects.lib.tengo +11 -13
  18. package/dist/tengo/lib/oop.lib.tengo +16 -19
  19. package/dist/tengo/lib/path.lib.tengo +116 -125
  20. package/dist/tengo/lib/pframes.constants.lib.tengo +25 -28
  21. package/dist/tengo/lib/pframes.export-pcolumn.lib.tengo +28 -33
  22. package/dist/tengo/lib/pframes.lib.tengo +38 -43
  23. package/dist/tengo/lib/pframes.ll.lib.tengo +70 -73
  24. package/dist/tengo/lib/pframes.pcolumn.lib.tengo +45 -51
  25. package/dist/tengo/lib/pframes.spec.lib.tengo +70 -96
  26. package/dist/tengo/lib/pframes.util.lib.tengo +154 -289
  27. package/dist/tengo/lib/pframes.xsv.lib.tengo +260 -273
  28. package/dist/tengo/lib/render.lib.tengo +65 -76
  29. package/dist/tengo/lib/sets.lib.tengo +61 -68
  30. package/dist/tengo/lib/slices.lib.tengo +169 -180
  31. package/dist/tengo/lib/smart.lib.tengo +956 -1069
  32. package/dist/tengo/lib/test.lib.tengo +129 -161
  33. package/dist/tengo/lib/tpl.lib.tengo +448 -516
  34. package/dist/tengo/lib/tpl.state-await.lib.tengo +226 -241
  35. package/dist/tengo/lib/tpl.util.lib.tengo +4 -9
  36. package/dist/tengo/lib/validation.lib.tengo +334 -379
  37. package/dist/tengo/lib/workdir.lib.tengo +309 -332
  38. package/dist/tengo/lib/workdir.proc.lib.tengo +126 -144
  39. package/dist/tengo/lib/workdir.save.lib.tengo +113 -130
  40. package/dist/tengo/lib/workflow.bobject.lib.tengo +21 -26
  41. package/dist/tengo/lib/workflow.bquery.lib.tengo +140 -166
  42. package/dist/tengo/lib/workflow.constants.lib.tengo +1 -2
  43. package/dist/tengo/lib/workflow.context.lib.tengo +27 -32
  44. package/dist/tengo/lib/workflow.lib.tengo +167 -207
  45. package/dist/tengo/tpl/exec.R.create-renv.plj.gz +0 -0
  46. package/dist/tengo/tpl/exec.exec.plj.gz +0 -0
  47. package/dist/tengo/tpl/exec.python.create-venv.plj.gz +0 -0
  48. package/dist/tengo/tpl/exec.python.install-deps.plj.gz +0 -0
  49. package/dist/tengo/tpl/pframes.aggregate.plj.gz +0 -0
  50. package/dist/tengo/tpl/pframes.export-multiple-pcolumns.plj.gz +0 -0
  51. package/dist/tengo/tpl/pframes.export-pframe.plj.gz +0 -0
  52. package/dist/tengo/tpl/pframes.export-single-pcolumn.plj.gz +0 -0
  53. package/dist/tengo/tpl/pframes.import-dir.plj.gz +0 -0
  54. package/dist/tengo/tpl/pframes.map-pframe.plj.gz +0 -0
  55. package/dist/tengo/tpl/pframes.xsv-export-pframe.plj.gz +0 -0
  56. package/dist/tengo/tpl/pframes.xsv-import-map.plj.gz +0 -0
  57. package/dist/tengo/tpl/workdir.save.plj.gz +0 -0
  58. package/dist/tengo/tpl/workflow.build-ctx.plj.gz +0 -0
  59. package/package.json +5 -5
@@ -1,151 +1,143 @@
1
1
  ll := import("@platforma-sdk/workflow-tengo:ll")
2
2
  slices := import("@platforma-sdk/workflow-tengo:slices")
3
3
 
4
- /**
5
- * Returns a slice of keys of the map.
6
- *
7
- * @param map map[string]any - map to extract keys from
8
- * @return result: string[] - a slice of keys.
9
- */
4
+
5
+
6
+
7
+
8
+
10
9
  getKeys := func(map) {
11
- res := []
12
- for k, _ in map {
13
- res = append(res, k)
14
- }
10
+ res := []
11
+ for k, _ in map {
12
+ res = append(res, k)
13
+ }
15
14
 
16
- return slices.sortByFn(res, func(elem) { return elem })
15
+ return slices.sortByFn(res, func(elem) { return elem })
17
16
  }
18
17
 
19
- /**
20
- * Returns true if map contains specified key. Note: current implementation is O(N)
21
- */
18
+
19
+
22
20
  containsKey := func(map, key) {
23
- for k, _ in map {
24
- if key == k {
25
- return true
26
- }
27
- }
21
+ for k, _ in map {
22
+ if key == k {
23
+ return true
24
+ }
25
+ }
28
26
 
29
- return false
27
+ return false
30
28
  }
31
29
 
32
- // Load effective version of map key checker if it exists in controller's API
33
30
  plapi := import("plapi")
34
31
  if ll.methodExists(plapi, "mapHasKey") {
35
- containsKey = func(map, key) {
36
- return plapi.mapHasKey(map, key)
37
- }
38
- }
39
-
40
- /**
41
- * Transforms all keys of the map with a function and returns a new map with these keys.
42
- *
43
- * @param map: map[key]any
44
- * @param fnK: func(key): newKey - a function that gets a key and returns a new key.
45
- * @return new map: map[newKey]any - a transformed map
46
- */
32
+ containsKey = func(map, key) {
33
+ return plapi.mapHasKey(map, key)
34
+ }
35
+ }
36
+
37
+
38
+
39
+
40
+
41
+
42
+
47
43
  mapKeys := func(map, fnK) {
48
- newM := {}
49
- for k, v in map {
50
- newM[fnK(k)] = v
51
- }
44
+ newM := {}
45
+ for k, v in map {
46
+ newM[fnK(k)] = v
47
+ }
52
48
 
53
- return newM
49
+ return newM
54
50
  }
55
51
 
56
- // Map values
57
52
  mapValues := func(map, fnV) {
58
- newM := {}
59
- for k, v in map {
60
- newM[k] = fnV(v)
61
- }
53
+ newM := {}
54
+ for k, v in map {
55
+ newM[k] = fnV(v)
56
+ }
62
57
 
63
- return newM
58
+ return newM
64
59
  }
65
60
 
66
- // Map keys and values
67
61
  map := func(map, fn) {
68
- newM := {}
69
- for k, v in map {
70
- r := fn(k, v)
71
- newM[r.key] = r.value
72
- }
62
+ newM := {}
63
+ for k, v in map {
64
+ r := fn(k, v)
65
+ newM[r.key] = r.value
66
+ }
73
67
 
74
- return newM
68
+ return newM
75
69
  }
76
70
 
77
71
  filter := func(map, predicateFn) {
78
- newM := {}
79
- for k, v in map {
80
- if predicateFn(k, v) {
81
- newM[k] = v
82
- }
83
- }
72
+ newM := {}
73
+ for k, v in map {
74
+ if predicateFn(k, v) {
75
+ newM[k] = v
76
+ }
77
+ }
84
78
 
85
- return newM
79
+ return newM
86
80
  }
87
81
 
88
82
  filterValues := func(map, predicateFnV) {
89
- return filter(map, func(k, v) { return predicateFnV(v) })
83
+ return filter(map, func(k, v) { return predicateFnV(v) })
90
84
  }
91
85
 
92
86
  filterKeys := func(map, predicateFnK) {
93
- return filter(map, func(k, v) { return predicateFnK(k) })
87
+ return filter(map, func(k, v) { return predicateFnK(k) })
94
88
  }
95
89
 
96
90
  filterKeysValues := func(map, predicateFnK, predicateFnV) {
97
- return filter(map, func(k, v) { return predicateFnK(k) && predicateFnV(v) })
91
+ return filter(map, func(k, v) { return predicateFnK(k) && predicateFnV(v) })
98
92
  }
99
93
 
100
- /**
101
- * Do shallow merge of arbitrary number of maps.
102
- * Add {... key: undefined ...} to remove the "key" from the map collected from maps before.
103
- */
94
+
95
+
96
+
104
97
  merge := func(...maps) {
105
- res := {}
106
- for map in maps {
107
- for k, v in map {
108
- if is_undefined(v) {
109
- delete(res, k)
110
- } else {
111
- res[k] = v
112
- }
113
- }
114
- }
115
- return res
116
- }
117
-
118
- /**
119
- * Do deep merge of arbitrary number of maps.
120
- * Add {... key: undefined ...} to remove the "key" from the map collected from maps before.
121
- */
98
+ res := {}
99
+ for map in maps {
100
+ for k, v in map {
101
+ if is_undefined(v) {
102
+ delete(res, k)
103
+ } else {
104
+ res[k] = v
105
+ }
106
+ }
107
+ }
108
+ return res
109
+ }
110
+
111
+
112
+
113
+
122
114
  deepMerge := undefined
123
115
  deepMerge = func(...maps) {
124
- res := {}
125
- for map in maps {
126
- for k, v in map {
127
- if is_undefined(v) {
128
- delete(res, k)
129
- } else if is_map(res[k]) && is_map(v) {
130
- res[k] = deepMerge(res[k], v)
131
- } else {
132
- res[k] = v
133
- }
134
- }
135
- }
136
- return res
116
+ res := {}
117
+ for map in maps {
118
+ for k, v in map {
119
+ if is_undefined(v) {
120
+ delete(res, k)
121
+ } else if is_map(res[k]) && is_map(v) {
122
+ res[k] = deepMerge(res[k], v)
123
+ } else {
124
+ res[k] = v
125
+ }
126
+ }
127
+ }
128
+ return res
137
129
  }
138
130
 
139
131
  export ll.toStrict({
140
- map : map,
141
- merge: merge,
142
- deepMerge: deepMerge,
143
- mapKeys : mapKeys,
144
- mapValues : mapValues,
145
- filter : filter,
146
- filterValues : filterValues,
147
- filterKeys : filterKeys,
148
- filterKeysValues : filterKeysValues,
149
- getKeys: getKeys,
150
- containsKey: containsKey
132
+ map : map,
133
+ merge: merge,
134
+ deepMerge: deepMerge,
135
+ mapKeys : mapKeys,
136
+ mapValues : mapValues,
137
+ filter : filter,
138
+ filterValues : filterValues,
139
+ filterKeys : filterKeys,
140
+ filterKeysValues : filterKeysValues,
141
+ getKeys: getKeys,
142
+ containsKey: containsKey
151
143
  })
@@ -1,22 +1,20 @@
1
- /**
2
- * Utilities for working with objects
3
- */
1
+
2
+
4
3
 
5
4
  ll := import("@platforma-sdk/workflow-tengo:ll")
6
5
 
7
- /**
8
- * Deletes entries with undefined values from object
9
- */
6
+
7
+
10
8
  deleteUndefined := func(obj) {
11
- for k, v in obj {
12
- if is_undefined(v) {
13
- delete(obj, k)
14
- }
15
- }
9
+ for k, v in obj {
10
+ if is_undefined(v) {
11
+ delete(obj, k)
12
+ }
13
+ }
16
14
 
17
- return obj
15
+ return obj
18
16
  }
19
17
 
20
18
  export ll.toStrict({
21
- deleteUndefined: deleteUndefined
19
+ deleteUndefined: deleteUndefined
22
20
  })
@@ -1,29 +1,26 @@
1
- /**
2
- * Utility functions for working with objects.
3
- */
1
+
2
+
4
3
 
5
4
  ll := import("@platforma-sdk/workflow-tengo:ll")
6
5
 
7
- /**
8
- * Inherit all methods and properties of a super object
9
- *
10
- * @param super a parent from which we get all methods
11
- * @param self an object in which we set all super methods
12
- * @return self
13
- */
6
+
7
+
8
+
9
+
10
+
11
+
14
12
  inherit := func(super, self) {
15
- self["super"] = super
13
+ self["super"] = super
16
14
 
17
- // inherit super methods
18
- for k, v in super {
19
- if self[k] == undefined {
20
- self[k] = v
21
- }
22
- }
15
+ for k, v in super {
16
+ if self[k] == undefined {
17
+ self[k] = v
18
+ }
19
+ }
23
20
 
24
- return ll.toStrict(self)
21
+ return ll.toStrict(self)
25
22
  }
26
23
 
27
24
  export ll.toStrict({
28
- inherit: inherit
25
+ inherit: inherit
29
26
  })
@@ -3,163 +3,154 @@ text := import("text")
3
3
  slices := import("@platforma-sdk/workflow-tengo:slices")
4
4
  validation := import("@platforma-sdk/workflow-tengo:validation")
5
5
 
6
- /**
7
- * Joins path elements into a single path.
8
- *
9
- * @param elems: ...string - any number of elements.
10
- */
6
+
7
+
8
+
9
+
11
10
  join := func(...elems) {
12
- validation.assertJsonSchema(elems, ["string"])
13
- return ll.filepathJoin(elems...)
11
+ validation.assertJsonSchema(elems, ["string"])
12
+ return ll.filepathJoin(elems...)
14
13
  }
15
14
 
16
- /**
17
- * Like join, joins elements to a single path,
18
- * but can be used safely in regexps.
19
- *
20
- * @param elems: ...string - any number of elements.
21
- */
15
+
16
+
17
+
18
+
19
+
22
20
  regexpJoin := func(...elems) {
23
- validation.assertJsonSchema(elems, ["string"])
24
- return ll.filepathRegexpJoin(elems...)
21
+ validation.assertJsonSchema(elems, ["string"])
22
+ return ll.filepathRegexpJoin(elems...)
25
23
  }
26
24
 
27
- /**
28
- * Joins elements of the filepath and canonizes it, i.e.
29
- * semantically resolves ../ and ./ and changes slash
30
- * to a pathSeparator.
31
- *
32
- * @param elems: ...string - any number of elements.
33
- */
25
+
26
+
27
+
28
+
29
+
30
+
34
31
  canonize := func(...elems) {
35
- validation.assertJsonSchema(elems, ["string"])
36
- return ll.filepathCanonize(elems...)
32
+ validation.assertJsonSchema(elems, ["string"])
33
+ return ll.filepathCanonize(elems...)
37
34
  }
38
35
 
39
- /**
40
- * Returns a path separator. "/" on Unix-like systems, "\\" on Windows.
41
- *
42
- * @return separator: string
43
- */
36
+
37
+
38
+
39
+
44
40
  separator := ll.pathSeparator
45
41
 
46
- /**
47
- * Trims a beginning of the file path following by a path separator.
48
- *
49
- * @param path: string - a file path
50
- * @param prefix: string - the beginning of the file path
51
- * @return trimmed path: string - a path without the beginning and a path separator.
52
- */
42
+
43
+
44
+
45
+
46
+
47
+
53
48
  trimPrefix := func(path, prefix) {
54
- validation.assertJsonSchema([path, prefix], ["string"])
55
- return text.trim_prefix(path, prefix+separator)
49
+ validation.assertJsonSchema([path, prefix], ["string"])
50
+ return text.trim_prefix(path, prefix+separator)
56
51
  }
57
52
 
58
53
  _sepOrDefault := func(...sep) {
59
- validation.assertJsonSchema(sep, [["or", "string", "char", "null"]])
54
+ validation.assertJsonSchema(sep, [["or", "string", "char", "null"]])
60
55
 
61
- if slices.length(sep) == 0 {
62
- return separator
63
- }
56
+ if slices.length(sep) == 0 {
57
+ return separator
58
+ }
64
59
 
65
- return sep[0]
60
+ return sep[0]
66
61
  }
67
62
 
68
- /**
69
- * Splits a path to path components.
70
- * If it was a file name, the last component will be this name.
71
- *
72
- * @param path: string - the path
73
- * @param sep: string - an optional path separator.
74
- * @return components: []string - all directories and a file name at the end.
75
- */
63
+
64
+
65
+
66
+
67
+
68
+
69
+
76
70
  split := func(path, ...sep) {
77
- sep = _sepOrDefault(sep...)
71
+ sep = _sepOrDefault(sep...)
78
72
 
79
- return text.split(path, sep)
73
+ return text.split(path, sep)
80
74
  }
81
75
 
82
- /**
83
- * Gets all directories with their ancestors from the root.
84
- * For example, for dir1/dir2/dir3/abc.txt it gives:
85
- * ["dir1", "dir1/dir2", "dir1/dir2/dir3", "dir1/dir2/dir3/abc.txt"]
86
- *
87
- * @param path: string - the path
88
- * @param separator: string - an optional separator.
89
- * @return components: []string - all directories and a file name at the end from their root.
90
- */
76
+
77
+
78
+
79
+
80
+
81
+
82
+
83
+
91
84
  getBasenameDirs := func(path, ...sep) {
92
- validation.assertJsonSchema(path, "string")
93
- sep = _sepOrDefault(sep...)
85
+ validation.assertJsonSchema(path, "string")
86
+ sep = _sepOrDefault(sep...)
94
87
 
95
- dirs := split(path, sep)
88
+ dirs := split(path, sep)
96
89
 
97
- dirTails := []
98
- for i := 1; i <= len(dirs); i++ {
99
- dirTails = append(dirTails, text.join(dirs[:i], sep))
100
- }
90
+ dirTails := []
91
+ for i := 1; i <= len(dirs); i++ {
92
+ dirTails = append(dirTails, text.join(dirs[:i], sep))
93
+ }
101
94
 
102
- return dirTails
95
+ return dirTails
103
96
  }
104
97
 
105
- /**
106
- * Gets an extension to the last "." symbol,
107
- * or, if the name contains ".gz" or any other archive suffix,
108
- * then till the next from the last "." symbol.
109
- *
110
- * @param path: string - a path
111
- * @return extension: string - the extension without the leading "."
112
- */
98
+
99
+
100
+
101
+
102
+
103
+
104
+
113
105
  getExtension := func(path, ...sep) {
114
- validation.assertJsonSchema(path, "string")
115
- ext := ""
116
- sep = _sepOrDefault(sep...)
117
-
118
- nPoints := 1
119
- if text.re_match(`\.(gz|xz|bzip|zstd)$`, path) {
120
- nPoints = 2
121
- }
122
-
123
- for i := len(path) - 1; i >= 0 && path[i] != sep; i-- {
124
- if path[i] == '.' {
125
- ext = path[i:]
126
- nPoints--
127
- if nPoints == 0 {
128
- break
129
- }
130
- }
131
- }
132
-
133
- if len(ext) > 0 {
134
- ext = ext[1:] // remove leading "."
135
- }
136
-
137
- return ext
138
- }
139
-
140
- /**
141
- * Checks if the path is correct.
142
- *
143
- * @param path: string - a path
144
- */
106
+ validation.assertJsonSchema(path, "string")
107
+ ext := ""
108
+ sep = _sepOrDefault(sep...)
109
+
110
+ nPoints := 1
111
+ if text.re_match(`\.(gz|xz|bzip|zstd)$`, path) {
112
+ nPoints = 2
113
+ }
114
+
115
+ for i := len(path) - 1; i >= 0 && path[i] != sep; i-- {
116
+ if path[i] == '.' {
117
+ ext = path[i:]
118
+ nPoints--
119
+ if nPoints == 0 {
120
+ break
121
+ }
122
+ }
123
+ }
124
+
125
+ if len(ext) > 0 {
126
+ ext = ext[1:] // remove leading "."
127
+ }
128
+
129
+ return ext
130
+ }
131
+
132
+
133
+
134
+
135
+
145
136
  assertIsValid := func(path) {
146
- validation.assertJsonSchema(path, "string")
147
- if text.contains(path, "/") {
148
- ll.assert(
149
- text.contains(path, separator),
150
- "path to a file must be separated by OS's specific path separator. " +
151
- "Did you forget to use 'path.join' or 'path.regexpJoin'?")
152
- }
137
+ validation.assertJsonSchema(path, "string")
138
+ if text.contains(path, "/") {
139
+ ll.assert(
140
+ text.contains(path, separator),
141
+ "path to a file must be separated by OS's specific path separator. " +
142
+ "Did you forget to use 'path.join' or 'path.regexpJoin'?")
143
+ }
153
144
  }
154
145
 
155
146
  export ll.toStrict({
156
- join: join,
157
- regexpJoin: regexpJoin,
158
- canonize: canonize,
159
- separator: separator,
160
- trimPrefix: trimPrefix,
161
- split: split,
162
- getBasenameDirs: getBasenameDirs,
163
- getExtension: getExtension,
164
- assertIsValid: assertIsValid
147
+ join: join,
148
+ regexpJoin: regexpJoin,
149
+ canonize: canonize,
150
+ separator: separator,
151
+ trimPrefix: trimPrefix,
152
+ split: split,
153
+ getBasenameDirs: getBasenameDirs,
154
+ getExtension: getExtension,
155
+ assertIsValid: assertIsValid
165
156
  })
@@ -1,20 +1,17 @@
1
- /**
2
- * Contain field names and other constant used in PFrames
3
- * libraries and templates.
4
- */
1
+
2
+
3
+
5
4
 
6
5
  ll := import("@platforma-sdk/workflow-tengo:ll")
7
6
 
8
- /**
9
- * Name of the field under which the iteration value like in "map" and "aggregate" is passed
10
- * to the iteration body template.
11
- */
7
+
8
+
9
+
12
10
  VALUE_FIELD_NAME := "__value__"
13
11
 
14
- /**
15
- * Name of the field under which the iteration key like in "map" and "aggregate" is passed
16
- * to the iteration body template.
17
- */
12
+
13
+
14
+
18
15
  KEY_FIELD_NAME := "__key__"
19
16
 
20
17
  RTYPE_P_FRAME := { Name: "PFrame", Version: "1" }
@@ -34,20 +31,20 @@ RTYPE_P_COLUMN_DATA_BINARY_SUPER_PARTITIONED := { Name: P_COLUMN_SUPER_PARTITION
34
31
  KIND_P_COLUMN := "PColumn"
35
32
 
36
33
  export ll.toStrict({
37
- KIND_P_COLUMN : KIND_P_COLUMN,
38
- KEY_FIELD_NAME : KEY_FIELD_NAME,
39
- VALUE_FIELD_NAME : VALUE_FIELD_NAME,
40
- P_COLUMN_DATA_TYPE_PREFIX : P_COLUMN_DATA_TYPE_PREFIX,
41
- P_COLUMN_SUPER_PARTITIONED_DATA_TYPE_PREFIX : P_COLUMN_SUPER_PARTITIONED_DATA_TYPE_PREFIX,
42
-
43
- RTYPE_P_FRAME : RTYPE_P_FRAME,
44
-
45
- RTYPE_P_COLUMN_DATA_JSON : RTYPE_P_COLUMN_DATA_JSON,
46
- RTYPE_P_COLUMN_DATA_BINARY : RTYPE_P_COLUMN_DATA_BINARY,
47
- RTYPE_P_COLUMN_DATA_RESOURCE_MAP : RTYPE_P_COLUMN_DATA_RESOURCE_MAP,
48
- RTYPE_P_COLUMN_DATA_RESOURCE_MAP_PARTITIONED : RTYPE_P_COLUMN_DATA_RESOURCE_MAP_PARTITIONED,
49
- RTYPE_P_COLUMN_DATA_JSON_PARTITIONED : RTYPE_P_COLUMN_DATA_JSON_PARTITIONED,
50
- RTYPE_P_COLUMN_DATA_BINARY_PARTITIONED : RTYPE_P_COLUMN_DATA_BINARY_PARTITIONED,
51
- RTYPE_P_COLUMN_DATA_JSON_SUPER_PARTITIONED : RTYPE_P_COLUMN_DATA_JSON_SUPER_PARTITIONED,
52
- RTYPE_P_COLUMN_DATA_BINARY_SUPER_PARTITIONED : RTYPE_P_COLUMN_DATA_BINARY_SUPER_PARTITIONED
34
+ KIND_P_COLUMN : KIND_P_COLUMN,
35
+ KEY_FIELD_NAME : KEY_FIELD_NAME,
36
+ VALUE_FIELD_NAME : VALUE_FIELD_NAME,
37
+ P_COLUMN_DATA_TYPE_PREFIX : P_COLUMN_DATA_TYPE_PREFIX,
38
+ P_COLUMN_SUPER_PARTITIONED_DATA_TYPE_PREFIX : P_COLUMN_SUPER_PARTITIONED_DATA_TYPE_PREFIX,
39
+
40
+ RTYPE_P_FRAME : RTYPE_P_FRAME,
41
+
42
+ RTYPE_P_COLUMN_DATA_JSON : RTYPE_P_COLUMN_DATA_JSON,
43
+ RTYPE_P_COLUMN_DATA_BINARY : RTYPE_P_COLUMN_DATA_BINARY,
44
+ RTYPE_P_COLUMN_DATA_RESOURCE_MAP : RTYPE_P_COLUMN_DATA_RESOURCE_MAP,
45
+ RTYPE_P_COLUMN_DATA_RESOURCE_MAP_PARTITIONED : RTYPE_P_COLUMN_DATA_RESOURCE_MAP_PARTITIONED,
46
+ RTYPE_P_COLUMN_DATA_JSON_PARTITIONED : RTYPE_P_COLUMN_DATA_JSON_PARTITIONED,
47
+ RTYPE_P_COLUMN_DATA_BINARY_PARTITIONED : RTYPE_P_COLUMN_DATA_BINARY_PARTITIONED,
48
+ RTYPE_P_COLUMN_DATA_JSON_SUPER_PARTITIONED : RTYPE_P_COLUMN_DATA_JSON_SUPER_PARTITIONED,
49
+ RTYPE_P_COLUMN_DATA_BINARY_SUPER_PARTITIONED : RTYPE_P_COLUMN_DATA_BINARY_SUPER_PARTITIONED
53
50
  })