codecov-io: # [Codecov](https://codecov.io/gh/reata/sqllineage/pull/27?src=pr&el=h1) Report
> Merging [#27](https://codecov.io/gh/reata/sqllineage/pull/27?src=pr&el=desc) into [master](https://codecov.io/gh/reata/sqllineage/commit/d0c47ddbb0b73eea2700e6934fdc89159ac7b22e?src=pr&el=desc) will **not change** coverage.
> The diff coverage is `100%`.

[![Impacted file tree graph](https://codecov.io/gh/reata/sqllineage/pull/27/graphs/tree.svg?width=650&token=latkaw2Lx6&height=150&src=pr)](https://codecov.io/gh/reata/sqllineage/pull/27?src=pr&el=tree)

```diff
@@           Coverage Diff           @@
##           master      #27   +/-   ##
=======================================
  Coverage   79.79%   79.79%           
=======================================
  Files           1        1           
  Lines          99       99           
=======================================
  Hits           79       79           
  Misses         20       20
```


| [Impacted Files](https://codecov.io/gh/reata/sqllineage/pull/27?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [sqllineage/core.py](https://codecov.io/gh/reata/sqllineage/pull/27/diff?src=pr&el=tree#diff-c3FsbGluZWFnZS9jb3JlLnB5) | `79.79% <100%> (ø)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/reata/sqllineage/pull/27?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/reata/sqllineage/pull/27?src=pr&el=footer). Last update [d0c47dd...8090868](https://codecov.io/gh/reata/sqllineage/pull/27?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

diff --git a/sqllineage/core.py b/sqllineage/core.py
index fbfff54..231aa26 100644
--- a/sqllineage/core.py
+++ b/sqllineage/core.py
@@ -18,7 +18,7 @@ class LineageParser(object):
         self._encoding = encoding
         self._source_tables = set()
         self._target_tables = set()
-        self._stmt = [s for s in sqlparse.parse(sql.strip(), self._encoding) if s.get_type() != "UNKNOWN"]
+        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)}

Empty Statement return
take the following sql as example

```sql
SELECT 1;

-- SELECT 2;
```

the parsing result says that it contains two statements, instead of one.
diff --git a/tests/test_others.py b/tests/test_others.py
index 9a0b89f..ddc0c30 100644
--- a/tests/test_others.py
+++ b/tests/test_others.py
@@ -50,3 +50,17 @@ def test_split_statements_with_comment():
 
 -- SELECT 2;"""
     assert len(LineageParser(sql).statements) == 1
+
+
+def test_split_statements_with_show_create_table():
+    sql = """SELECT 1;
+
+SHOW CREATE TABLE tab1;"""
+    assert len(LineageParser(sql).statements) == 2
+
+
+def test_split_statements_with_desc():
+    sql = """SELECT 1;
+
+DESC tab1;"""
+    assert len(LineageParser(sql).statements) == 2

pip install -e .
parse_log_pytest
pytest
pytest
3.6
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs @ file:///opt/conda/conda-bld/attrs_1642510447205/work
certifi==2021.5.30
importlib-metadata @ file:///tmp/build/80754af9/importlib-metadata_1631916693255/work
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
more-itertools @ file:///tmp/build/80754af9/more-itertools_1637733554872/work
packaging @ file:///tmp/build/80754af9/packaging_1637314298585/work
pluggy @ file:///tmp/build/80754af9/pluggy_1615976315926/work
py @ file:///opt/conda/conda-bld/py_1644396412707/work
pyparsing @ file:///tmp/build/80754af9/pyparsing_1635766073266/work
pytest==6.2.4
-e git+https://github.com/reata/sqllineage.git@d0c47ddbb0b73eea2700e6934fdc89159ac7b22e#egg=sqllineage
sqlparse==0.3.1
toml @ file:///tmp/build/80754af9/toml_1616166611790/work
typing_extensions @ file:///opt/conda/conda-bld/typing_extensions_1647553014482/work
zipp @ file:///tmp/build/80754af9/zipp_1633618647012/work

name: sqllineage
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - attrs=21.4.0=pyhd3eb1b0_0
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - importlib-metadata=4.8.1=py36h06a4308_0
  - importlib_metadata=4.8.1=hd3eb1b0_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - more-itertools=8.12.0=pyhd3eb1b0_0
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - packaging=21.3=pyhd3eb1b0_0
  - pip=21.2.2=py36h06a4308_0
  - pluggy=0.13.1=py36h06a4308_0
  - py=1.11.0=pyhd3eb1b0_0
  - pyparsing=3.0.4=pyhd3eb1b0_0
  - pytest=6.2.4=py36h06a4308_2
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - toml=0.10.2=pyhd3eb1b0_0
  - typing_extensions=4.1.1=pyh06a4308_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zipp=3.6.0=pyhd3eb1b0_0
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - sqlparse==0.3.1
prefix: /opt/conda/envs/sqllineage

tests/test_others.py::test_split_statements_with_show_create_table tests/test_others.py::test_split_statements_with_desc
tests/test_others.py::test_use tests/test_others.py::test_create tests/test_others.py::test_create_if_not_exist tests/test_others.py::test_create_after_drop tests/test_others.py::test_drop tests/test_others.py::test_drop_with_comment tests/test_others.py::test_drop_after_create tests/test_others.py::test_create_select tests/test_others.py::test_split_statements tests/test_others.py::test_split_statements_with_heading_and_ending_new_line tests/test_others.py::test_split_statements_with_comment
sqllineage/core.py
sqllineage/core.py