dbhose-airflow 0.0.2.0__py3-none-any.whl → 0.0.2.2__py3-none-any.whl
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.
- dbhose_airflow/LOGO +9 -0
- dbhose_airflow/__init__.py +28 -4
- dbhose_airflow/chunk_query.py +14 -0
- dbhose_airflow/ddl/clickhouse.sql +81 -0
- dbhose_airflow/ddl/greenplum.sql +229 -0
- dbhose_airflow/ddl/postgres.sql +209 -0
- dbhose_airflow/dq/clickhouse/empty.sql +1 -0
- dbhose_airflow/dq/clickhouse/future.sql +34 -0
- dbhose_airflow/dq/clickhouse/infinity.sql +34 -0
- dbhose_airflow/dq/clickhouse/nan.sql +34 -0
- dbhose_airflow/dq/clickhouse/sum.sql +72 -0
- dbhose_airflow/dq/clickhouse/total.sql +1 -0
- dbhose_airflow/dq/clickhouse/uniq.sql +1 -0
- dbhose_airflow/dq/greenplum/empty.sql +1 -0
- dbhose_airflow/dq/greenplum/future.sql +55 -0
- dbhose_airflow/dq/greenplum/infinity.sql +60 -0
- dbhose_airflow/dq/greenplum/nan.sql +58 -0
- dbhose_airflow/dq/greenplum/sum.sql +63 -0
- dbhose_airflow/dq/greenplum/total.sql +1 -0
- dbhose_airflow/dq/greenplum/uniq.sql +2 -0
- dbhose_airflow/dq/postgres/empty.sql +1 -0
- dbhose_airflow/dq/postgres/future.sql +55 -0
- dbhose_airflow/dq/postgres/infinity.sql +60 -0
- dbhose_airflow/dq/postgres/nan.sql +58 -0
- dbhose_airflow/dq/postgres/sum.sql +63 -0
- dbhose_airflow/dq/postgres/total.sql +1 -0
- dbhose_airflow/dq/postgres/uniq.sql +2 -0
- dbhose_airflow/move/clickhouse/delete.sql +81 -0
- dbhose_airflow/move/clickhouse/replace.sql +24 -0
- dbhose_airflow/move/greenplum/delete.sql +10 -0
- dbhose_airflow/move/greenplum/replace.sql +60 -0
- dbhose_airflow/move/postgres/delete.sql +10 -0
- dbhose_airflow/move/postgres/replace.sql +60 -0
- dbhose_airflow/move_method.py +1 -0
- {dbhose_airflow-0.0.2.0.dist-info → dbhose_airflow-0.0.2.2.dist-info}/METADATA +3 -3
- dbhose_airflow-0.0.2.2.dist-info/RECORD +43 -0
- {dbhose_airflow-0.0.2.0.dist-info → dbhose_airflow-0.0.2.2.dist-info}/licenses/CHANGELOG.md +14 -0
- dbhose_airflow-0.0.2.0.dist-info/RECORD +0 -11
- {dbhose_airflow-0.0.2.0.dist-info → dbhose_airflow-0.0.2.2.dist-info}/WHEEL +0 -0
- {dbhose_airflow-0.0.2.0.dist-info → dbhose_airflow-0.0.2.2.dist-info}/licenses/README.md +0 -0
- {dbhose_airflow-0.0.2.0.dist-info → dbhose_airflow-0.0.2.2.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
with
|
|
2
|
+
splitByChar(',', replaceAll('{filter_by}', ' ', '')) as columns,
|
|
3
|
+
length(columns) as columns_count,
|
|
4
|
+
(
|
|
5
|
+
select groupArray(tuple({filter_by}))
|
|
6
|
+
from (
|
|
7
|
+
select distinct {filter_by}
|
|
8
|
+
from {table_temp}
|
|
9
|
+
)
|
|
10
|
+
) as values_tuples
|
|
11
|
+
select
|
|
12
|
+
true as is_avaliable,
|
|
13
|
+
'ALTER TABLE {table_dest} DELETE WHERE ' ||
|
|
14
|
+
if(columns_count > 1, '(' || arrayStringConcat(columns, ', ') || ')', arrayStringConcat(columns, ', ')) ||
|
|
15
|
+
' IN (' ||
|
|
16
|
+
arrayStringConcat(
|
|
17
|
+
arrayDistinct(
|
|
18
|
+
arrayMap(
|
|
19
|
+
tuple ->
|
|
20
|
+
if(columns_count = 1,
|
|
21
|
+
(case
|
|
22
|
+
when isNull(tuple.1) then 'NULL'
|
|
23
|
+
when toTypeName(tuple.1) REGEXP 'U?Int|B?Float|Decimal|Bool' then toString(tuple.1)
|
|
24
|
+
else '\'' || replaceAll(toString(tuple.1), '\'', '\\\'') || '\''
|
|
25
|
+
end),
|
|
26
|
+
if(columns_count = 2,
|
|
27
|
+
'(' ||
|
|
28
|
+
(case
|
|
29
|
+
when isNull(tuple.1) then 'NULL'
|
|
30
|
+
when toTypeName(tuple.1) REGEXP 'U?Int|B?Float|Decimal|Bool' then toString(tuple.1)
|
|
31
|
+
else '\'' || replaceAll(toString(tuple.1), '\'', '\\\'') || '\''
|
|
32
|
+
end) || ', ' ||
|
|
33
|
+
(case
|
|
34
|
+
when isNull(tuple.2) then 'NULL'
|
|
35
|
+
when toTypeName(tuple.2) REGEXP 'U?Int|B?Float|Decimal|Bool' then toString(tuple.2)
|
|
36
|
+
else '\'' || replaceAll(toString(tuple.2), '\'', '\\\'') || '\''
|
|
37
|
+
end) || ')',
|
|
38
|
+
if(columns_count = 3,
|
|
39
|
+
'(' ||
|
|
40
|
+
(case
|
|
41
|
+
when isNull(tuple.1) then 'NULL'
|
|
42
|
+
when toTypeName(tuple.1) REGEXP 'U?Int|B?Float|Decimal|Bool' then toString(tuple.1)
|
|
43
|
+
else '\'' || replaceAll(toString(tuple.1), '\'', '\\\'') || '\''
|
|
44
|
+
end) || ', ' ||
|
|
45
|
+
(case
|
|
46
|
+
when isNull(tuple.2) then 'NULL'
|
|
47
|
+
when toTypeName(tuple.2) REGEXP 'U?Int|B?Float|Decimal|Bool' then toString(tuple.2)
|
|
48
|
+
else '\'' || replaceAll(toString(tuple.2), '\'', '\\\'') || '\''
|
|
49
|
+
end) || ', ' ||
|
|
50
|
+
(case
|
|
51
|
+
WHEN isNull(tuple.3) THEN 'NULL'
|
|
52
|
+
WHEN toTypeName(tuple.3) REGEXP 'U?Int|B?Float|Decimal|Bool' THEN toString(tuple.3)
|
|
53
|
+
ELSE '\'' || replaceAll(toString(tuple.3), '\'', '\\\'') || '\''
|
|
54
|
+
END) || ')',
|
|
55
|
+
'(' ||
|
|
56
|
+
(CASE
|
|
57
|
+
WHEN isNull(tuple.1) THEN 'NULL'
|
|
58
|
+
WHEN toTypeName(tuple.1) REGEXP 'U?Int|B?Float|Decimal|Bool' THEN toString(tuple.1)
|
|
59
|
+
ELSE '\'' || replaceAll(toString(tuple.1), '\'', '\\\'') || '\''
|
|
60
|
+
END) || ', ' ||
|
|
61
|
+
(CASE
|
|
62
|
+
WHEN isNull(tuple.2) THEN 'NULL'
|
|
63
|
+
WHEN toTypeName(tuple.2) REGEXP 'U?Int|B?Float|Decimal|Bool' THEN toString(tuple.2)
|
|
64
|
+
ELSE '\'' || replaceAll(toString(tuple.2), '\'', '\\\'') || '\''
|
|
65
|
+
END) || ', ' ||
|
|
66
|
+
(case
|
|
67
|
+
when isNull(tuple.3) then 'NULL'
|
|
68
|
+
when toTypeName(tuple.3) REGEXP 'U?Int|B?Float|Decimal|Bool' then toString(tuple.3)
|
|
69
|
+
else '\'' || replaceAll(toString(tuple.3), '\'', '\\\'') || '\''
|
|
70
|
+
end) || ', ' ||
|
|
71
|
+
(case
|
|
72
|
+
when isNull(tuple.4) then 'NULL'
|
|
73
|
+
when toTypeName(tuple.4) REGEXP 'U?Int|B?Float|Decimal|Bool' then toString(tuple.4)
|
|
74
|
+
else '\'' || replaceAll(toString(tuple.4), '\'', '\\\'') || '\''
|
|
75
|
+
end) || ')'
|
|
76
|
+
))),
|
|
77
|
+
values_tuples
|
|
78
|
+
)
|
|
79
|
+
),
|
|
80
|
+
', '
|
|
81
|
+
) || ');\nINSERT INTO {table_dest}\nSELECT * FROM {table_temp};' as move_query
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
with
|
|
2
|
+
'{table_temp}' as table_temp
|
|
3
|
+
, '{table_dest}' as table_dest
|
|
4
|
+
, partitions as (
|
|
5
|
+
select partition
|
|
6
|
+
from system.parts
|
|
7
|
+
where database = splitByChar('.', table_temp)[1]
|
|
8
|
+
and table = splitByChar('.', table_temp)[2]
|
|
9
|
+
and partition <> 'tuple()'
|
|
10
|
+
and active
|
|
11
|
+
order by partition
|
|
12
|
+
)
|
|
13
|
+
select
|
|
14
|
+
toBool(count() > 0) as is_avaliable
|
|
15
|
+
, if(
|
|
16
|
+
is_avaliable
|
|
17
|
+
, 'alter table ' || table_dest || ' ' ||
|
|
18
|
+
arrayStringConcat(
|
|
19
|
+
arrayMap(
|
|
20
|
+
p -> 'replace partition ' || p || ' from ' || table_temp
|
|
21
|
+
, groupArray(partition)
|
|
22
|
+
), ', ')
|
|
23
|
+
, '') as move_query
|
|
24
|
+
from partitions
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
with filter_columns as (
|
|
2
|
+
select array_length(string_to_array('{filter_by}', ', '), 1) as col_count
|
|
3
|
+
)
|
|
4
|
+
select
|
|
5
|
+
true as is_avaliable,
|
|
6
|
+
'DELETE FROM {table_dest} WHERE EXISTS(' || E'\nSELECT 1 FROM {table_temp}\nWHERE ' ||
|
|
7
|
+
(select string_agg('{table_dest}.' || trim(col) || ' = {table_temp}.' || trim(col), E'\nAND ')
|
|
8
|
+
from unnest(string_to_array('{filter_by}', ',')) as col) || E'\n);\n' ||
|
|
9
|
+
E'INSERT INTO {table_dest}\nSELECT * FROM {table_temp};' as move_query
|
|
10
|
+
from filter_columns
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
with
|
|
2
|
+
matching_partitions as (
|
|
3
|
+
select
|
|
4
|
+
table_partition
|
|
5
|
+
, partition_constraint
|
|
6
|
+
from (
|
|
7
|
+
select
|
|
8
|
+
child.relname as table_partition
|
|
9
|
+
, pg_get_expr(child.relpartbound, child.oid) as partition_constraint
|
|
10
|
+
from pg_inherits
|
|
11
|
+
join pg_class child
|
|
12
|
+
on pg_inherits.inhrelid = child.oid
|
|
13
|
+
where pg_inherits.inhparent = '{table_dest}'::regclass
|
|
14
|
+
) as dest_tbl
|
|
15
|
+
join (
|
|
16
|
+
select
|
|
17
|
+
pg_get_expr(child.relpartbound, child.oid) as partition_constraint
|
|
18
|
+
, child.oid as partition_oid
|
|
19
|
+
from pg_inherits
|
|
20
|
+
join pg_class child
|
|
21
|
+
on pg_inherits.inhrelid = child.oid
|
|
22
|
+
where pg_inherits.inhparent = '{table_temp}'::regclass
|
|
23
|
+
) as temp_tbl
|
|
24
|
+
using(partition_constraint)
|
|
25
|
+
where exists (
|
|
26
|
+
select 1
|
|
27
|
+
from pg_class
|
|
28
|
+
where oid = temp_tbl.partition_oid
|
|
29
|
+
and reltuples > 0
|
|
30
|
+
)
|
|
31
|
+
),
|
|
32
|
+
detach_commands as (
|
|
33
|
+
select string_agg(
|
|
34
|
+
'ALTER TABLE {table_dest} DETACH PARTITION ' ||
|
|
35
|
+
table_partition || ';'
|
|
36
|
+
, E'\n'
|
|
37
|
+
) as commands
|
|
38
|
+
from matching_partitions
|
|
39
|
+
),
|
|
40
|
+
attach_commands as (
|
|
41
|
+
select string_agg(
|
|
42
|
+
'ALTER TABLE {table_dest} ATTACH PARTITION {table_temp} ' ||
|
|
43
|
+
partition_constraint || ';'
|
|
44
|
+
, E'\n'
|
|
45
|
+
) as commands
|
|
46
|
+
from matching_partitions
|
|
47
|
+
),
|
|
48
|
+
drop_commands as (
|
|
49
|
+
select string_agg(
|
|
50
|
+
'DROP TABLE ' || table_partition || ';'
|
|
51
|
+
, E'\n'
|
|
52
|
+
) as commands
|
|
53
|
+
from matching_partitions
|
|
54
|
+
)
|
|
55
|
+
select
|
|
56
|
+
(select case when count(*) > 0 then true else false end
|
|
57
|
+
from matching_partitions) as is_avaliable
|
|
58
|
+
, (select commands from detach_commands) || E'\n' ||
|
|
59
|
+
(select commands from attach_commands) || E'\n' ||
|
|
60
|
+
(select commands from drop_commands) as move_query
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
with filter_columns as (
|
|
2
|
+
select array_length(string_to_array('{filter_by}', ', '), 1) as col_count
|
|
3
|
+
)
|
|
4
|
+
select
|
|
5
|
+
true as is_avaliable,
|
|
6
|
+
'DELETE FROM {table_dest} WHERE EXISTS(' || E'\nSELECT 1 FROM {table_temp}\nWHERE ' ||
|
|
7
|
+
(select string_agg('{table_dest}.' || trim(col) || ' = {table_temp}.' || trim(col), E'\nAND ')
|
|
8
|
+
from unnest(string_to_array('{filter_by}', ',')) as col) || E'\n);\n' ||
|
|
9
|
+
E'INSERT INTO {table_dest}\nSELECT * FROM {table_temp};' as move_query
|
|
10
|
+
from filter_columns
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
with
|
|
2
|
+
matching_partitions as (
|
|
3
|
+
select
|
|
4
|
+
table_partition
|
|
5
|
+
, partition_constraint
|
|
6
|
+
from (
|
|
7
|
+
select
|
|
8
|
+
child.relname as table_partition
|
|
9
|
+
, pg_get_expr(child.relpartbound, child.oid) as partition_constraint
|
|
10
|
+
from pg_inherits
|
|
11
|
+
join pg_class child
|
|
12
|
+
on pg_inherits.inhrelid = child.oid
|
|
13
|
+
where pg_inherits.inhparent = '{table_dest}'::regclass
|
|
14
|
+
) as dest_tbl
|
|
15
|
+
join (
|
|
16
|
+
select
|
|
17
|
+
pg_get_expr(child.relpartbound, child.oid) as partition_constraint
|
|
18
|
+
, child.oid as partition_oid
|
|
19
|
+
from pg_inherits
|
|
20
|
+
join pg_class child
|
|
21
|
+
on pg_inherits.inhrelid = child.oid
|
|
22
|
+
where pg_inherits.inhparent = '{table_temp}'::regclass
|
|
23
|
+
) as temp_tbl
|
|
24
|
+
using(partition_constraint)
|
|
25
|
+
where exists (
|
|
26
|
+
select 1
|
|
27
|
+
from pg_class
|
|
28
|
+
where oid = temp_tbl.partition_oid
|
|
29
|
+
and reltuples > 0
|
|
30
|
+
)
|
|
31
|
+
),
|
|
32
|
+
detach_commands as (
|
|
33
|
+
select string_agg(
|
|
34
|
+
'ALTER TABLE {table_dest} DETACH PARTITION ' ||
|
|
35
|
+
table_partition || ';'
|
|
36
|
+
, E'\n'
|
|
37
|
+
) as commands
|
|
38
|
+
from matching_partitions
|
|
39
|
+
),
|
|
40
|
+
attach_commands as (
|
|
41
|
+
select string_agg(
|
|
42
|
+
'ALTER TABLE {table_dest} ATTACH PARTITION {table_temp} ' ||
|
|
43
|
+
partition_constraint || ';'
|
|
44
|
+
, E'\n'
|
|
45
|
+
) as commands
|
|
46
|
+
from matching_partitions
|
|
47
|
+
),
|
|
48
|
+
drop_commands as (
|
|
49
|
+
select string_agg(
|
|
50
|
+
'DROP TABLE ' || table_partition || ';'
|
|
51
|
+
, E'\n'
|
|
52
|
+
) as commands
|
|
53
|
+
from matching_partitions
|
|
54
|
+
)
|
|
55
|
+
select
|
|
56
|
+
(select case when count(*) > 0 then true else false end
|
|
57
|
+
from matching_partitions) as is_avaliable
|
|
58
|
+
, (select commands from detach_commands) || E'\n' ||
|
|
59
|
+
(select commands from attach_commands) || E'\n' ||
|
|
60
|
+
(select commands from drop_commands) as move_query
|
dbhose_airflow/move_method.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dbhose_airflow
|
|
3
|
-
Version: 0.0.2.
|
|
3
|
+
Version: 0.0.2.2
|
|
4
4
|
Summary: airflow class for exchanging data between DBMSs in native binary formats.
|
|
5
5
|
Home-page: https://github.com/0xMihalich/dbhose_airflow
|
|
6
6
|
Author: 0xMihalich
|
|
@@ -9,8 +9,8 @@ Description-Content-Type: text/markdown
|
|
|
9
9
|
License-File: README.md
|
|
10
10
|
License-File: CHANGELOG.md
|
|
11
11
|
Requires-Dist: apache-airflow>=2.4.3
|
|
12
|
-
Requires-Dist: native-dumper==0.3.3.
|
|
13
|
-
Requires-Dist: pgpack-dumper==0.3.3.
|
|
12
|
+
Requires-Dist: native-dumper==0.3.3.1
|
|
13
|
+
Requires-Dist: pgpack-dumper==0.3.3.1
|
|
14
14
|
Dynamic: author
|
|
15
15
|
Dynamic: author-email
|
|
16
16
|
Dynamic: description
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
dbhose_airflow/LOGO,sha256=zfn071DUmSt3OzqIN-knPqoYDqUNbxO2ALfdDaEII6A,783
|
|
2
|
+
dbhose_airflow/__init__.py,sha256=-vyzywoaV3-AjGNxBp97UnFZ0O7A-Qr40Cg0UMvF91c,15298
|
|
3
|
+
dbhose_airflow/airflow_connect.py,sha256=unsRItnK4Q_ieMiGKEsCw8Q_8wkaXdVOfaSWLNRyujM,906
|
|
4
|
+
dbhose_airflow/chunk_query.py,sha256=qtR6FM0SAEHzm08o6AzMZepyzJ3J8qd_itdFY0YJQRg,275
|
|
5
|
+
dbhose_airflow/dq_check.py,sha256=VoAw8qieA5LM1a7jaMPO3AQ7QXe_-ThZ8Gy868ozjHw,689
|
|
6
|
+
dbhose_airflow/dumper.py,sha256=9BEJ36yUJ9gH5PiVirLXymSKPOgABtp7Ee8U6MtEckY,1843
|
|
7
|
+
dbhose_airflow/move_method.py,sha256=EkrDy2VCbL78zfZZhwWH0gF4Ijno20FP1mRfjiABrkk,532
|
|
8
|
+
dbhose_airflow/ddl/clickhouse.sql,sha256=HKIB2GhWgAGlipC4vS5EUI-YcmFnG34u5nm4bTyDkkU,2617
|
|
9
|
+
dbhose_airflow/ddl/greenplum.sql,sha256=F_tCfaTz8YJ4bt2XPWa3Xln4Pe7ar8SKj-eznc3gWqs,9322
|
|
10
|
+
dbhose_airflow/ddl/postgres.sql,sha256=qylCEgaY0UqcBtRwan5jH8CD3MCKVtaLqThodSgteR0,8256
|
|
11
|
+
dbhose_airflow/dq/clickhouse/empty.sql,sha256=noHKmdqwhOGWqU30qW1lQDShOPPtu80FXDVZ-Qjxzmo,96
|
|
12
|
+
dbhose_airflow/dq/clickhouse/future.sql,sha256=_pXiaR2TsEk0ZNU911rRJe0HCOy9oSHG21kxDtZ2AxU,846
|
|
13
|
+
dbhose_airflow/dq/clickhouse/infinity.sql,sha256=nrb1Pgaik7ty3egXIU49gf0N-9TCq-OvjlFCZZKHVn0,836
|
|
14
|
+
dbhose_airflow/dq/clickhouse/nan.sql,sha256=oe1lUWGXqBrEfVH2JauCgAqD_NVJVAl62i8fMkpkDgE,855
|
|
15
|
+
dbhose_airflow/dq/clickhouse/sum.sql,sha256=wwtLpuaszzs-bpkiB2zmAHEvlH6cWCD7HDQcHy7pZAo,1559
|
|
16
|
+
dbhose_airflow/dq/clickhouse/total.sql,sha256=lhw4PLEKN2Mn7E1FXIKg4l1IZ6cAHEZkPcLCbKbeP_4,37
|
|
17
|
+
dbhose_airflow/dq/clickhouse/uniq.sql,sha256=ZhyRgqBVEPxzfnpFAbAUB71Vt4OFoR22hyawF52NMDE,115
|
|
18
|
+
dbhose_airflow/dq/greenplum/empty.sql,sha256=bSlS58_VtWz8F3hJfbaXZArVV9QLrFCXUJmghWB52TQ,99
|
|
19
|
+
dbhose_airflow/dq/greenplum/future.sql,sha256=nN361zV_Cr8MxRk5n7_xN9-OGAgptY9BbuftacXV_uE,1590
|
|
20
|
+
dbhose_airflow/dq/greenplum/infinity.sql,sha256=pWx-vlloZ6fGPWPIx1MKgwia66p9P-I_HaOUOwavYIM,1699
|
|
21
|
+
dbhose_airflow/dq/greenplum/nan.sql,sha256=J96yT0LKlgCE0NfbDtpBIy4sIXw7DHBfy9Td2cs_JPo,1560
|
|
22
|
+
dbhose_airflow/dq/greenplum/sum.sql,sha256=1uq6V2hXn3HJhQrAM_id0FCZd-fbbfdXUNLTMJyDBso,1642
|
|
23
|
+
dbhose_airflow/dq/greenplum/total.sql,sha256=lhw4PLEKN2Mn7E1FXIKg4l1IZ6cAHEZkPcLCbKbeP_4,37
|
|
24
|
+
dbhose_airflow/dq/greenplum/uniq.sql,sha256=myYh7TTc-c-ixnXwMibopz4bMr9qnkvU-29nt89cq8o,227
|
|
25
|
+
dbhose_airflow/dq/postgres/empty.sql,sha256=bSlS58_VtWz8F3hJfbaXZArVV9QLrFCXUJmghWB52TQ,99
|
|
26
|
+
dbhose_airflow/dq/postgres/future.sql,sha256=nN361zV_Cr8MxRk5n7_xN9-OGAgptY9BbuftacXV_uE,1590
|
|
27
|
+
dbhose_airflow/dq/postgres/infinity.sql,sha256=pWx-vlloZ6fGPWPIx1MKgwia66p9P-I_HaOUOwavYIM,1699
|
|
28
|
+
dbhose_airflow/dq/postgres/nan.sql,sha256=J96yT0LKlgCE0NfbDtpBIy4sIXw7DHBfy9Td2cs_JPo,1560
|
|
29
|
+
dbhose_airflow/dq/postgres/sum.sql,sha256=1uq6V2hXn3HJhQrAM_id0FCZd-fbbfdXUNLTMJyDBso,1642
|
|
30
|
+
dbhose_airflow/dq/postgres/total.sql,sha256=lhw4PLEKN2Mn7E1FXIKg4l1IZ6cAHEZkPcLCbKbeP_4,37
|
|
31
|
+
dbhose_airflow/dq/postgres/uniq.sql,sha256=myYh7TTc-c-ixnXwMibopz4bMr9qnkvU-29nt89cq8o,227
|
|
32
|
+
dbhose_airflow/move/clickhouse/delete.sql,sha256=qyQ3YrDqBx4AhRMqEvcfIJAP4UauVEys_BshuMsCgUs,4316
|
|
33
|
+
dbhose_airflow/move/clickhouse/replace.sql,sha256=B44YbVK3wcCOPhAp8-_yX3yxnpTjpJF7xx_fCRRxIBE,666
|
|
34
|
+
dbhose_airflow/move/greenplum/delete.sql,sha256=OJJqu3CmbipMUl_Oyw48yzRSfzchzyu4YAcu9gAscFc,502
|
|
35
|
+
dbhose_airflow/move/greenplum/replace.sql,sha256=Pk9g-3SBC78bB_s8ECh_6tPDqTvL1wxKNjzrTakfrL0,1976
|
|
36
|
+
dbhose_airflow/move/postgres/delete.sql,sha256=OJJqu3CmbipMUl_Oyw48yzRSfzchzyu4YAcu9gAscFc,502
|
|
37
|
+
dbhose_airflow/move/postgres/replace.sql,sha256=Pk9g-3SBC78bB_s8ECh_6tPDqTvL1wxKNjzrTakfrL0,1976
|
|
38
|
+
dbhose_airflow-0.0.2.2.dist-info/licenses/CHANGELOG.md,sha256=rhtwm1Kf58B5L3409BoQogKd9kEQJek7dcvJqkklx3E,892
|
|
39
|
+
dbhose_airflow-0.0.2.2.dist-info/licenses/README.md,sha256=-TsSFVS-bdRMNM-xhtqiZUXyD6D_lb6Uiz8LKEPGlP0,8822
|
|
40
|
+
dbhose_airflow-0.0.2.2.dist-info/METADATA,sha256=yutBySs5OmjKjK91u3WQwu7bAuDVH5zBISDdXAHywVU,9434
|
|
41
|
+
dbhose_airflow-0.0.2.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
42
|
+
dbhose_airflow-0.0.2.2.dist-info/top_level.txt,sha256=VlTXT0CLGGcVhbG9QPw2_a8H5UV03QMjvZ-NrPy6_jM,15
|
|
43
|
+
dbhose_airflow-0.0.2.2.dist-info/RECORD,,
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Version History
|
|
2
2
|
|
|
3
|
+
## 0.0.2.2
|
|
4
|
+
|
|
5
|
+
* Fix include_package_data
|
|
6
|
+
|
|
7
|
+
## 0.0.2.1
|
|
8
|
+
|
|
9
|
+
* Add MoveMethod.rewrite for full rewrite table with new data
|
|
10
|
+
* Add query_part function
|
|
11
|
+
* Change filter_by initialization list to string
|
|
12
|
+
* Fix Clickhouse MoveMethod.delete
|
|
13
|
+
* Improve execute custom query & MoveMethod operations
|
|
14
|
+
* Update depends native-dumper==0.3.3.1
|
|
15
|
+
* Update depends pgpack-dumper==0.3.3.1
|
|
16
|
+
|
|
3
17
|
## 0.0.2.0
|
|
4
18
|
|
|
5
19
|
* Update depends native-dumper==0.3.3.0
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
dbhose_airflow/__init__.py,sha256=yMh49tSwt9x66RNpZYJYBLw_fXMzwUzbycyzUyp3W1g,14352
|
|
2
|
-
dbhose_airflow/airflow_connect.py,sha256=unsRItnK4Q_ieMiGKEsCw8Q_8wkaXdVOfaSWLNRyujM,906
|
|
3
|
-
dbhose_airflow/dq_check.py,sha256=VoAw8qieA5LM1a7jaMPO3AQ7QXe_-ThZ8Gy868ozjHw,689
|
|
4
|
-
dbhose_airflow/dumper.py,sha256=9BEJ36yUJ9gH5PiVirLXymSKPOgABtp7Ee8U6MtEckY,1843
|
|
5
|
-
dbhose_airflow/move_method.py,sha256=c4g7wuiwDKudrKSWP4ov1atJGIFknHCgPnY9FMf9Ymc,477
|
|
6
|
-
dbhose_airflow-0.0.2.0.dist-info/licenses/CHANGELOG.md,sha256=7HHfS-x8gX3UXBOGEuPsgmlEOFWNRILjLlE3qrNaaqQ,532
|
|
7
|
-
dbhose_airflow-0.0.2.0.dist-info/licenses/README.md,sha256=-TsSFVS-bdRMNM-xhtqiZUXyD6D_lb6Uiz8LKEPGlP0,8822
|
|
8
|
-
dbhose_airflow-0.0.2.0.dist-info/METADATA,sha256=I0KTrMK0VYlrg9IMbjykKeo02GU-c1ZDxZKEjf4lLas,9434
|
|
9
|
-
dbhose_airflow-0.0.2.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
10
|
-
dbhose_airflow-0.0.2.0.dist-info/top_level.txt,sha256=VlTXT0CLGGcVhbG9QPw2_a8H5UV03QMjvZ-NrPy6_jM,15
|
|
11
|
-
dbhose_airflow-0.0.2.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|