mirror of
https://github.com/postgres/postgres.git
synced 2025-07-02 09:02:37 +03:00
Unicode escapes in strings and identifiers
This commit is contained in:
@ -18,6 +18,7 @@ test: preproc/autoprep
|
||||
test: preproc/comment
|
||||
test: preproc/define
|
||||
test: preproc/init
|
||||
test: preproc/strings
|
||||
test: preproc/type
|
||||
test: preproc/variable
|
||||
test: preproc/whenever
|
||||
|
@ -18,6 +18,7 @@ test: preproc/autoprep
|
||||
test: preproc/comment
|
||||
test: preproc/define
|
||||
test: preproc/init
|
||||
test: preproc/strings
|
||||
test: preproc/type
|
||||
test: preproc/variable
|
||||
test: preproc/whenever
|
||||
|
62
src/interfaces/ecpg/test/expected/preproc-strings.c
Normal file
62
src/interfaces/ecpg/test/expected/preproc-strings.c
Normal file
@ -0,0 +1,62 @@
|
||||
/* Processed by ecpg (regression mode) */
|
||||
/* These include files are added by the preprocessor */
|
||||
#include <ecpglib.h>
|
||||
#include <ecpgerrno.h>
|
||||
#include <sqlca.h>
|
||||
/* End of automatic include section */
|
||||
#define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y))
|
||||
|
||||
#line 1 "strings.pgc"
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
#line 1 "regression.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#line 3 "strings.pgc"
|
||||
|
||||
|
||||
/* exec sql begin declare section */
|
||||
|
||||
|
||||
#line 6 "strings.pgc"
|
||||
char * s1 , * s2 , * s3 , * s4 , * s5 , * s6 ;
|
||||
/* exec sql end declare section */
|
||||
#line 7 "strings.pgc"
|
||||
|
||||
|
||||
int main(void)
|
||||
{
|
||||
ECPGdebug(1, stderr);
|
||||
|
||||
{ ECPGconnect(__LINE__, 0, "regress1" , NULL, NULL , NULL, 0); }
|
||||
#line 13 "strings.pgc"
|
||||
|
||||
|
||||
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select 'abcdef' , N'abcdef' as foo , E'abc\\bdef' as \"foo\" , U&'d\\0061t\\0061' as U&\"foo\" , U&'d!+000061t!+000061' uescape '!' , $foo$abc$def$foo$ ", ECPGt_EOIT,
|
||||
ECPGt_char,&(s1),(long)0,(long)1,(1)*sizeof(char),
|
||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
|
||||
ECPGt_char,&(s2),(long)0,(long)1,(1)*sizeof(char),
|
||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
|
||||
ECPGt_char,&(s3),(long)0,(long)1,(1)*sizeof(char),
|
||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
|
||||
ECPGt_char,&(s4),(long)0,(long)1,(1)*sizeof(char),
|
||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
|
||||
ECPGt_char,&(s5),(long)0,(long)1,(1)*sizeof(char),
|
||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
|
||||
ECPGt_char,&(s6),(long)0,(long)1,(1)*sizeof(char),
|
||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);}
|
||||
#line 21 "strings.pgc"
|
||||
|
||||
|
||||
printf("%s %s %s %s %s %s\n", s1, s2, s3, s4, s5, s6);
|
||||
|
||||
{ ECPGdisconnect(__LINE__, "CURRENT");}
|
||||
#line 25 "strings.pgc"
|
||||
|
||||
exit (0);
|
||||
}
|
36
src/interfaces/ecpg/test/expected/preproc-strings.stderr
Normal file
36
src/interfaces/ecpg/test/expected/preproc-strings.stderr
Normal file
@ -0,0 +1,36 @@
|
||||
[NO_PID]: ECPGdebug: set to 1
|
||||
[NO_PID]: sqlca: code: 0, state: 00000
|
||||
[NO_PID]: ECPGconnect: opening database regress1 on <DEFAULT> port <DEFAULT>
|
||||
[NO_PID]: sqlca: code: 0, state: 00000
|
||||
[NO_PID]: ecpg_execute on line 15: query: select 'abcdef' , N'abcdef' as foo , E'abc\bdef' as "foo" , U&'d\0061t\0061' as U&"foo" , U&'d!+000061t!+000061' uescape '!' , $foo$abc$def$foo$ ; with 0 parameter(s) on connection regress1
|
||||
[NO_PID]: sqlca: code: 0, state: 00000
|
||||
[NO_PID]: ecpg_execute on line 15: using PQexec
|
||||
[NO_PID]: sqlca: code: 0, state: 00000
|
||||
[NO_PID]: ecpg_execute on line 15: correctly got 1 tuples with 6 fields
|
||||
[NO_PID]: sqlca: code: 0, state: 00000
|
||||
[NO_PID]: ecpg_store_result on line 15: allocating memory for 1 tuples
|
||||
[NO_PID]: sqlca: code: 0, state: 00000
|
||||
[NO_PID]: ecpg_get_data on line 15: RESULT: abcdef offset: -1; array: yes
|
||||
[NO_PID]: sqlca: code: 0, state: 00000
|
||||
[NO_PID]: ecpg_store_result on line 15: allocating memory for 1 tuples
|
||||
[NO_PID]: sqlca: code: 0, state: 00000
|
||||
[NO_PID]: ecpg_get_data on line 15: RESULT: abcdef offset: -1; array: yes
|
||||
[NO_PID]: sqlca: code: 0, state: 00000
|
||||
[NO_PID]: ecpg_store_result on line 15: allocating memory for 1 tuples
|
||||
[NO_PID]: sqlca: code: 0, state: 00000
|
||||
[NO_PID]: ecpg_get_data on line 15: RESULT: abcdef offset: -1; array: yes
|
||||
[NO_PID]: sqlca: code: 0, state: 00000
|
||||
[NO_PID]: ecpg_store_result on line 15: allocating memory for 1 tuples
|
||||
[NO_PID]: sqlca: code: 0, state: 00000
|
||||
[NO_PID]: ecpg_get_data on line 15: RESULT: data offset: -1; array: yes
|
||||
[NO_PID]: sqlca: code: 0, state: 00000
|
||||
[NO_PID]: ecpg_store_result on line 15: allocating memory for 1 tuples
|
||||
[NO_PID]: sqlca: code: 0, state: 00000
|
||||
[NO_PID]: ecpg_get_data on line 15: RESULT: data offset: -1; array: yes
|
||||
[NO_PID]: sqlca: code: 0, state: 00000
|
||||
[NO_PID]: ecpg_store_result on line 15: allocating memory for 1 tuples
|
||||
[NO_PID]: sqlca: code: 0, state: 00000
|
||||
[NO_PID]: ecpg_get_data on line 15: RESULT: abc$def offset: -1; array: yes
|
||||
[NO_PID]: sqlca: code: 0, state: 00000
|
||||
[NO_PID]: ecpg_finish: connection regress1 closed
|
||||
[NO_PID]: sqlca: code: 0, state: 00000
|
1
src/interfaces/ecpg/test/expected/preproc-strings.stdout
Normal file
1
src/interfaces/ecpg/test/expected/preproc-strings.stdout
Normal file
@ -0,0 +1 @@
|
||||
abcdef abcdef abcdef data data abc$def
|
@ -9,6 +9,7 @@ TESTS = array_of_struct array_of_struct.c \
|
||||
comment comment.c \
|
||||
define define.c \
|
||||
init init.c \
|
||||
strings strings.c \
|
||||
type type.c \
|
||||
variable variable.c \
|
||||
whenever whenever.c
|
||||
|
27
src/interfaces/ecpg/test/preproc/strings.pgc
Normal file
27
src/interfaces/ecpg/test/preproc/strings.pgc
Normal file
@ -0,0 +1,27 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
exec sql include ../regression;
|
||||
|
||||
exec sql begin declare section;
|
||||
char *s1, *s2, *s3, *s4, *s5, *s6;
|
||||
exec sql end declare section;
|
||||
|
||||
int main(void)
|
||||
{
|
||||
ECPGdebug(1, stderr);
|
||||
|
||||
exec sql connect to REGRESSDB1;
|
||||
|
||||
exec sql select 'abcdef',
|
||||
N'abcdef' AS foo,
|
||||
E'abc\bdef' AS "foo",
|
||||
U&'d\0061t\0061' AS U&"foo",
|
||||
U&'d!+000061t!+000061' uescape '!',
|
||||
$foo$abc$def$foo$
|
||||
into :s1, :s2, :s3, :s4, :s5, :s6;
|
||||
|
||||
printf("%s %s %s %s %s %s\n", s1, s2, s3, s4, s5, s6);
|
||||
|
||||
exec sql disconnect;
|
||||
exit (0);
|
||||
}
|
Reference in New Issue
Block a user