| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -244,7 +244,7 @@ class projection(ast_node):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if 'outfile' in node:
 | 
					 | 
					 | 
					 | 
					        if 'outfile' in node:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            self.outfile = outfile(self, node['outfile'], sql = self.sql)
 | 
					 | 
					 | 
					 | 
					            self.outfile = outfile(self, node['outfile'], sql = self.sql)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if not self.has_postproc:
 | 
					 | 
					 | 
					 | 
					            if not self.has_postproc:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                self.sql += self.outfile.sql
 | 
					 | 
					 | 
					 | 
					                self.sql = self.outfile.sql
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        else:
 | 
					 | 
					 | 
					 | 
					        else:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            self.outfile = None
 | 
					 | 
					 | 
					 | 
					            self.outfile = None
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        
 | 
					 | 
					 | 
					 | 
					        
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -343,8 +343,8 @@ class projection(ast_node):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if 'into' not in node:
 | 
					 | 
					 | 
					 | 
					        if 'into' not in node:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            self.context.emitc(f'print(*{self.out_table.contextname_cpp});')
 | 
					 | 
					 | 
					 | 
					            self.context.emitc(f'print(*{self.out_table.contextname_cpp});')
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        
 | 
					 | 
					 | 
					 | 
					        
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if self.outfile:
 | 
					 | 
					 | 
					 | 
					        if self.outfile and self.has_postproc:
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            self.outfile.finalize()
 | 
					 | 
					 | 
					 | 
					                self.outfile.finalize()
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if 'into' in node: 
 | 
					 | 
					 | 
					 | 
					        if 'into' in node: 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            self.context.emitc(select_into(self, node['into']).ccode)
 | 
					 | 
					 | 
					 | 
					            self.context.emitc(select_into(self, node['into']).ccode)
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -356,7 +356,10 @@ class projection(ast_node):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if self.parent is None:
 | 
					 | 
					 | 
					 | 
					        if self.parent is None:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            self.context.sql_end()
 | 
					 | 
					 | 
					 | 
					            self.context.sql_end()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            self.context.postproc_end(self.postproc_fname)
 | 
					 | 
					 | 
					 | 
					            if self.outfile and not self.has_postproc:
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                self.context.abandon_postproc()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            else:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                self.context.postproc_end(self.postproc_fname)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        
 | 
					 | 
					 | 
					 | 
					        
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					class select_distinct(projection):
 | 
					 | 
					 | 
					 | 
					class select_distinct(projection):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    first_order = 'select_distinct'
 | 
					 | 
					 | 
					 | 
					    first_order = 'select_distinct'
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1024,8 +1027,8 @@ class outfile(ast_node):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    name="_outfile"
 | 
					 | 
					 | 
					 | 
					    name="_outfile"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    def __init__(self, parent, node, context = None, *, sql = None):
 | 
					 | 
					 | 
					 | 
					    def __init__(self, parent, node, context = None, *, sql = None):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        self.node = node
 | 
					 | 
					 | 
					 | 
					        self.node = node
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        super().__init__(parent, node, context)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        self.sql = sql if sql else ''
 | 
					 | 
					 | 
					 | 
					        self.sql = sql if sql else ''
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        super().__init__(parent, node, context)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        
 | 
					 | 
					 | 
					 | 
					        
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    def init(self, _):
 | 
					 | 
					 | 
					 | 
					    def init(self, _):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        assert(isinstance(self.parent, projection))
 | 
					 | 
					 | 
					 | 
					        assert(isinstance(self.parent, projection))
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -1045,10 +1048,10 @@ class outfile(ast_node):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    def produce_monetdb(self, node):
 | 
					 | 
					 | 
					 | 
					    def produce_monetdb(self, node):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        filename = node['loc']['literal'] if 'loc' in node else node['literal']
 | 
					 | 
					 | 
					 | 
					        filename = node['loc']['literal'] if 'loc' in node else node['literal']
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        import os
 | 
					 | 
					 | 
					 | 
					        import os
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        p = os.path.abspath('.').replace('\\', '/') + '/' + filename
 | 
					 | 
					 | 
					 | 
					        p =  os.path.abspath('.').replace('\\', '/') + '/' + filename
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        self.sql = f'COPY {self.sql} INTO "{p}"'
 | 
					 | 
					 | 
					 | 
					        self.sql = f'COPY {self.parent.sql} INTO \'{p}\''
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        d = '\t'
 | 
					 | 
					 | 
					 | 
					        d = ','
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        e = '\n'
 | 
					 | 
					 | 
					 | 
					        e = '\\n'
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if 'term' in node:
 | 
					 | 
					 | 
					 | 
					        if 'term' in node:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            d = node['term']['literal']
 | 
					 | 
					 | 
					 | 
					            d = node['term']['literal']
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        self.sql += f' delimiters \'{d}\', \'{e}\''
 | 
					 | 
					 | 
					 | 
					        self.sql += f' delimiters \'{d}\', \'{e}\''
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |