Skip to content

Commit eb66439

Browse files
authored
DBT-784 Fix-1.8.0-impala Support dbt-core 1.8.0 for dbt-impala (#201)
* DBT-784 Fix-1.8.0 Upgraded dbt-impala's dbt-core dependency to 1.8.0 * DBT-799 Fix-1.8.0-impala Upgraded breaking imports to new module/package structure of dbt-core. * Revert "DBT-799 Fix-1.8.0-impala Upgraded breaking imports to new module/package structure of dbt-core." This reverts commit 14b5238. * DBT-799 Fix-1.8.0-impala Upgraded breaking imports to new module/package structure of dbt-core. * DEV-800 Fix-1.8.0-impala Updated code to reflect new method signatures. * DEV-801 Fix-1.8.0-impala Fixed the failing test by overriding the method to add escape character to reserved word 'skip'.
1 parent a3aec0b commit eb66439

File tree

9 files changed

+62
-28
lines changed

9 files changed

+62
-28
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ The `dbt-impala` adapter allows you to use [dbt](https://www.getdbt.com/) along
1010

1111
### Requirements
1212

13-
Current version of dbt-impala use dbt-core 1.7.*. We are actively working on supporting the next version of dbt-core 1.8
13+
Current version of dbt-impala uses dbt-core 1.8.*. We are actively working on supporting the next available version of dbt-core.
1414

1515
Python >= 3.7
16-
dbt-core == 1.7.*
16+
dbt-core == 1.8.*
1717

1818
For development/testing or contribution to the dbt-impala, please follow [Contributing](CONTRIBUTING.md) guidelines.
1919

dbt/adapters/impala/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
version = "1.7.0"
15+
version = "1.8.0"

dbt/adapters/impala/cloudera_tracking.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
import threading
2424
from dbt.tracking import active_user
2525

26-
from dbt.adapters.base import Credentials
27-
from dbt.events import AdapterLogger
26+
from dbt.adapters.contracts.connection import Credentials
27+
from dbt.adapters.events.logging import AdapterLogger
2828
from decouple import config
2929

3030

dbt/adapters/impala/column.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from typing import TypeVar, Optional, Dict, Any
1717

1818
from dbt.adapters.base.column import Column
19-
from dbt.dataclass_schema import dbtClassMixin
19+
from dbt_common.dataclass_schema import dbtClassMixin
2020

2121
Self = TypeVar("Self", bound="ImpalaColumn")
2222

dbt/adapters/impala/connections.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,19 @@
1818
import time
1919
import dbt.exceptions
2020

21-
from dbt.adapters.base import Credentials
21+
from dbt.adapters.contracts.connection import Credentials
2222
from dbt.adapters.sql import SQLConnectionManager
23-
from dbt.contracts.connection import AdapterRequiredConfig
23+
from dbt.adapters.contracts.connection import AdapterRequiredConfig
2424

2525
from typing import Optional, Tuple, Any
26+
from multiprocessing.context import SpawnContext
2627

27-
from dbt.contracts.connection import Connection, AdapterResponse, ConnectionState
28+
from dbt.adapters.contracts.connection import Connection, AdapterResponse, ConnectionState
2829

29-
from dbt.events.functions import fire_event
30-
from dbt.events.types import ConnectionUsed, SQLQuery, SQLQueryStatus
30+
from dbt_common.events.functions import fire_event
31+
from dbt.adapters.events.types import ConnectionUsed, SQLQuery, SQLQueryStatus
3132

32-
from dbt.events import AdapterLogger
33+
from dbt.adapters.events.logging import AdapterLogger
3334

3435
import impala.dbapi
3536
from impala.error import DatabaseError
@@ -158,8 +159,8 @@ class ImpalaConnectionManager(SQLConnectionManager):
158159

159160
impala_version = None
160161

161-
def __init__(self, profile: AdapterRequiredConfig):
162-
super().__init__(profile)
162+
def __init__(self, profile: AdapterRequiredConfig, mp_context: SpawnContext):
163+
super().__init__(profile, mp_context)
163164
# generate profile related object for instrumentation.
164165
tracker.generate_profile_info(self)
165166

dbt/adapters/impala/impl.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,17 @@
1515
import re
1616
from collections import OrderedDict
1717
from concurrent.futures import Future
18-
from typing import Any, Dict, Iterable, List
18+
from typing import Any, Dict, Iterable, List, FrozenSet, Tuple
1919

2020
import agate
2121
import dbt.exceptions
2222
from dbt.adapters.base.impl import catch_as_completed
2323
from dbt.adapters.sql import SQLAdapter
24-
from dbt.clients import agate_helper
25-
from dbt.clients.agate_helper import ColumnTypeBuilder, NullableAgateType, _NullMarker
26-
from dbt.events import AdapterLogger
27-
from dbt.utils import executor
24+
from dbt_common.clients import agate_helper
25+
from dbt_common.clients.agate_helper import ColumnTypeBuilder, NullableAgateType, _NullMarker
26+
from dbt.adapters.events.logging import AdapterLogger
27+
from dbt_common.utils import executor
28+
from dbt.adapters.contracts.relation import RelationConfig
2829

2930
import dbt.adapters.impala.cloudera_tracking as tracker
3031
from dbt.adapters.impala import ImpalaConnectionManager
@@ -275,23 +276,23 @@ def parse_columns_from_information(self, relation: ImpalaRelation) -> List[Impal
275276

276277
return columns
277278

278-
def get_catalog(self, manifest):
279-
schema_map = self._get_catalog_schemas(manifest)
279+
def get_catalog(
280+
self, relation_configs: Iterable[RelationConfig], used_schemas: FrozenSet[Tuple[str, str]]
281+
):
282+
schema_map = self._get_catalog_schemas(relation_configs)
280283

281284
with executor(self.config) as tpe:
282285
futures: List[Future[agate.Table]] = []
283286
for info, schemas in schema_map.items():
284287
for schema in schemas:
285288
futures.append(
286-
tpe.submit_connected(
287-
self, schema, self._get_one_catalog, info, [schema], manifest
288-
)
289+
tpe.submit_connected(self, schema, self._get_one_catalog, info, [schema])
289290
)
290291
catalogs, exceptions = catch_as_completed(futures) # call the default implementation
291292

292293
return catalogs, exceptions
293294

294-
def _get_one_catalog(self, information_schema, schemas, manifest) -> agate.Table:
295+
def _get_one_catalog(self, information_schema, schemas) -> agate.Table:
295296
if len(schemas) != 1:
296297
dbt.exceptions.raise_compiler_error(
297298
f"Expected only one schema in ImpalaAdapter._get_one_catalog, found " f"{schemas}"

dev-requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
dbt-tests-adapter==1.7.*
1+
dbt-tests-adapter==1.8.*
22
pre-commit~=2.21;python_version=="3.7"
33
pre-commit~=3.2;python_version>="3.8"
44
pytest

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def _get_dbt_core_version():
4646

4747
package_name = "dbt-impala"
4848
# make sure this always matches dbt/adapters/dbt_impala/__version__.py
49-
package_version = "1.7.0"
49+
package_version = "1.8.0"
5050
description = """The Impala adapter plugin for dbt"""
5151

5252
dbt_core_version = _get_dbt_core_version()

tests/functional/adapter/test_concurrency.py

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
import pytest
2-
from dbt.tests.util import run_dbt, check_relations_equal, rm_file, write_file
2+
from dbt.tests.util import (
3+
run_dbt,
4+
check_relations_equal,
5+
rm_file,
6+
write_file,
7+
check_table_does_not_exist,
8+
run_dbt_and_capture,
9+
)
310
from dbt.tests.adapter.concurrency.test_concurrency import BaseConcurrency, seeds__update_csv
411

512

@@ -21,3 +28,28 @@ def test_concurrency_impala(self, project):
2128
check_relations_equal(project.adapter, ["SEED", "DEP"])
2229
check_relations_equal(project.adapter, ["SEED", "TABLE_A"])
2330
check_relations_equal(project.adapter, ["SEED", "TABLE_B"])
31+
32+
def test_concurrency(self, project):
33+
run_dbt(["seed", "--select", "seed"])
34+
results = run_dbt(["run"], expect_pass=False)
35+
assert len(results) == 7
36+
check_relations_equal(project.adapter, ["seed", "view_model"])
37+
check_relations_equal(project.adapter, ["seed", "dep"])
38+
check_relations_equal(project.adapter, ["seed", "table_a"])
39+
check_relations_equal(project.adapter, ["seed", "table_b"])
40+
check_table_does_not_exist(project.adapter, "invalid")
41+
check_table_does_not_exist(project.adapter, "`skip`")
42+
43+
rm_file(project.project_root, "seeds", "seed.csv")
44+
write_file(seeds__update_csv, project.project_root, "seeds", "seed.csv")
45+
46+
results, output = run_dbt_and_capture(["run"], expect_pass=False)
47+
assert len(results) == 7
48+
check_relations_equal(project.adapter, ["seed", "view_model"])
49+
check_relations_equal(project.adapter, ["seed", "dep"])
50+
check_relations_equal(project.adapter, ["seed", "table_a"])
51+
check_relations_equal(project.adapter, ["seed", "table_b"])
52+
check_table_does_not_exist(project.adapter, "invalid")
53+
check_table_does_not_exist(project.adapter, "`skip`")
54+
55+
assert "PASS=5 WARN=0 ERROR=1 SKIP=1 TOTAL=7" in output

0 commit comments

Comments
 (0)