1 Star 0 Fork 0

mylovextt/sqlglot

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
test_serde.py 1.20 KB
一键复制 编辑 原始数据 按行查看 历史
George Sittas 提交于 2024-02-29 23:52 +08:00 . Fix formatting (new ruff version)
import json
import unittest
from sqlglot import exp, parse_one
from sqlglot.optimizer.annotate_types import annotate_types
from tests.helpers import load_sql_fixtures
class CustomExpression(exp.Expression): ...
class TestSerDe(unittest.TestCase):
def dump_load(self, expression):
return exp.Expression.load(json.loads(json.dumps(expression.dump())))
def test_serde(self):
for sql in load_sql_fixtures("identity.sql"):
with self.subTest(sql):
before = parse_one(sql)
after = self.dump_load(before)
self.assertEqual(before, after)
def test_custom_expression(self):
before = CustomExpression()
after = self.dump_load(before)
self.assertEqual(before, after)
def test_type_annotations(self):
before = annotate_types(parse_one("CAST('1' AS STRUCT<x ARRAY<INT>>)"))
after = self.dump_load(before)
self.assertEqual(before.type, after.type)
self.assertEqual(before.this.type, after.this.type)
def test_meta(self):
before = parse_one("SELECT * FROM X")
before.meta["x"] = 1
after = self.dump_load(before)
self.assertEqual(before.meta, after.meta)
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/mylovextt/sqlglot.git
git@gitee.com:mylovextt/sqlglot.git
mylovextt
sqlglot
sqlglot
main

搜索帮助