mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Add support for piping COPY to/from an external program.
This includes backend "COPY TO/FROM PROGRAM '...'" syntax, and corresponding psql \copy syntax. Like with reading/writing files, the backend version is superuser-only, and in the psql version, the program is run in the client. In the passing, the psql \copy STDIN/STDOUT syntax is subtly changed: if you the stdin/stdout is quoted, it's now interpreted as a filename. For example, "\copy foo from 'stdin'" now reads from a file called 'stdin', not from standard input. Before this, there was no way to specify a filename called stdin, stdout, pstdin or pstdout. This creates a new function in pgport, wait_result_to_str(), which can be used to convert the exit status of a process, as returned by wait(3), to a human-readable string. Etsuro Fujita, reviewed by Amit Kapila.
This commit is contained in:
		@@ -192,7 +192,7 @@ ECPG: where_or_current_clauseWHERECURRENT_POFcursor_name block
 | 
			
		||||
		char *cursor_marker = $4[0] == ':' ? mm_strdup("$0") : $4;
 | 
			
		||||
		$$ = cat_str(2,mm_strdup("where current of"), cursor_marker);
 | 
			
		||||
	}
 | 
			
		||||
ECPG: CopyStmtCOPYopt_binaryqualified_nameopt_column_listopt_oidscopy_fromcopy_file_namecopy_delimiteropt_withcopy_options addon
 | 
			
		||||
ECPG: CopyStmtCOPYopt_binaryqualified_nameopt_column_listopt_oidscopy_fromopt_programcopy_file_namecopy_delimiteropt_withcopy_options addon
 | 
			
		||||
			if (strcmp($6, "from") == 0 &&
 | 
			
		||||
			   (strcmp($7, "stdin") == 0 || strcmp($7, "stdout") == 0))
 | 
			
		||||
				mmerror(PARSE_ERROR, ET_WARNING, "COPY FROM STDIN is not implemented");
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user