Repository: reata/sqllineage

Issue:
temp table checking
```sql
create table tab_a as select * from tab_b;
insert overwrite table tab_c select * from tab_a;
drop table tab_a;
```

Here tab_a is clearly a temp table, and yet it's marked as source table.
Possibly related to #29 #23 

Discussion:

Patch:
diff --git a/.travis.yml b/.travis.yml
index eb1e3f6..59abe34 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -4,6 +4,7 @@ python:
   - "3.5"
   - "3.6"
   - "3.7"
+  - "3.8"
 # command to install dependencies
 install:
   - pip install tox-travis codecov
diff --git a/sqllineage/core.py b/sqllineage/core.py
index 0d7c505..a46e388 100644
--- a/sqllineage/core.py
+++ b/sqllineage/core.py
@@ -23,7 +23,8 @@ class LineageParser(object):
         self._stmt = [s for s in sqlparse.parse(sql.strip(), self._encoding) if s.token_first(skip_cm=True)]
         for stmt in self._stmt:
             if stmt.get_type() == "DROP":
-                self._target_tables -= {t.get_real_name() for t in stmt.tokens if isinstance(t, Identifier)}
+                for tables in (self._source_tables, self._target_tables):
+                    tables -= {t.get_real_name() for t in stmt.tokens if isinstance(t, Identifier)}
             else:
                 self._extract_from_token(stmt)
         self._tmp_tables = self._source_tables.intersection(self._target_tables)
diff --git a/tox.ini b/tox.ini
index 0fa8e74..9546285 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,5 +1,5 @@
 [tox]
-envlist = py35,py36,py37
+envlist = py35,py36,py37,py38
 
 [testenv]
 deps =


Test patch:
diff --git a/tests/test_others.py b/tests/test_others.py
index ddc0c30..eabb6d4 100644
--- a/tests/test_others.py
+++ b/tests/test_others.py
@@ -31,6 +31,13 @@ def test_drop_after_create():
     helper("CREATE TABLE IF NOT EXISTS tab1 (col1 STRING);DROP TABLE IF EXISTS tab1", None, None)
 
 
+def test_drop_tmp_tab_after_create():
+    sql = """create table tab_a as select * from tab_b;
+insert overwrite table tab_c select * from tab_a;
+drop table tab_a;"""
+    helper(sql, {"tab_b"}, {"tab_c"})
+
+
 def test_create_select():
     helper("CREATE TABLE tab1 SELECT * FROM tab2", {"tab2"}, {"tab1"})