improvements on output

This commit is contained in:
2022-05-02 21:19:11 +08:00
parent 3051eb5fe7
commit 4f2cc03f63
17 changed files with 199 additions and 568 deletions
+16 -2
View File
@@ -1,4 +1,3 @@
from operator import index
from engine.utils import base62uuid
from copy import copy
# replace column info with this later.
@@ -203,8 +202,11 @@ class Context:
using namespace types;
'''
LOG_INFO = 'INFO'
LOG_ERROR = 'ERROR'
LOG_SILENT = 'SILENT'
def __init__(self):
self.tables:List[TableInfo] = []
self.tables:list[TableInfo] = []
self.tables_byname = dict()
self.ccols_byname = dict()
self.gc_name = 'gc_' + base62uuid(4)
@@ -212,6 +214,8 @@ class Context:
self.udf_map = dict()
self.headers = set(['\"./server/libaquery.h\"'])
self.finalized = False
self.log_level = Context.LOG_SILENT
self.print = print
# read header
self.ccode = ''
self.ccodelet = ''
@@ -277,6 +281,16 @@ class Context:
self.emit(str_scan)
self.scans.remove(scan)
def Info(self, msg):
if self.log_level.upper() == Context.LOG_INFO:
self.print(msg)
def Error(self, msg):
if self.log_level.upper() == Context.LOG_ERROR:
self.print(msg)
else:
self.Info(self, msg)
def finalize(self):
if not self.finalized:
headers = ''
+3 -3
View File
@@ -28,7 +28,7 @@ class create_table(ast_node):
# create an empty new table
if self.cexprs is None:
for c in tbl.columns:
self.emit(f"{c.cxt_name}.init({c.name});")
self.emit(f'{c.cxt_name}.init("{c.name}");')
# create an output table
else:
# 1 to 1 lineage.
@@ -40,7 +40,7 @@ class create_table(ast_node):
else:
self.lineage = None
for i, c in enumerate(tbl.columns):
self.emit(f"{c.cxt_name}.init({c.name});")
self.emit(f'{c.cxt_name}.init("{c.name}");')
self.emit(f"{c.cxt_name} = {self.cexprs[i](self.lineage)};")
self.lineage = None
self.parent.assumptions = None
@@ -54,7 +54,7 @@ class create_table(ast_node):
scanner.add(f"{lineage_var}.emplace_back({counter_var}++);", "front")
self.lineage = f"{lineage_var}.rid"
for i, c in enumerate(tbl.columns):
scanner.add(f"{c.cxt_name}.init({c.name});", "init")
scanner.add(f'{c.cxt_name}.init("{c.name}");', "init")
scanner.add(f"{c.cxt_name} = {self.cexprs[i](scanner.it_ver)};")
class insert(ast_node):
+1 -1
View File
@@ -100,7 +100,7 @@ class expr(ast_node):
elif key in self.unary_ops:
self._expr += f'{self.unary_ops[key]}({expr(self, val)._expr})'
else:
print(f'Undefined expr: {key}{val}')
self.context.Error(f'Undefined expr: {key}{val}')
if key in self.coumpound_generating_ops and not self.is_compound:
self.is_compound = True
+1 -1
View File
@@ -24,7 +24,7 @@ class projection(ast_node):
def produce(self, node):
p = node['select']
self.projections = p if type(p) is list else [p]
print(node)
self.context.Info(node)
def spawn(self, node):
self.datasource = None