? config.log ? GNUmakefile ? config.status ? autom4te.cache ? src/Makefile.global ? src/Makefile.custom ? src/log ? src/backend/postgres ? src/backend/catalog/postgres.description ? src/backend/catalog/postgres.bki ? src/backend/utils/mb/conversion_procs/conversion_create.sql ? src/backend/utils/mb/conversion_procs/ascii_and_mic/libascii_and_mic.so.0.0 ? src/backend/utils/mb/conversion_procs/cyrillic_and_mic/libcyrillic_and_mic.so.0.0 ? src/backend/utils/mb/conversion_procs/euc_cn_and_mic/libeuc_cn_and_mic.so.0.0 ? src/backend/utils/mb/conversion_procs/euc_jp_and_sjis/libeuc_jp_and_sjis.so.0.0 ? src/backend/utils/mb/conversion_procs/euc_kr_and_mic/libeuc_kr_and_mic.so.0.0 ? src/backend/utils/mb/conversion_procs/euc_tw_and_big5/libeuc_tw_and_big5.so.0.0 ? src/backend/utils/mb/conversion_procs/latin2_and_win1250/liblatin2_and_win1250.so.0.0 ? src/backend/utils/mb/conversion_procs/latin_and_mic/liblatin_and_mic.so.0.0 ? src/backend/utils/mb/conversion_procs/utf8_and_ascii/libutf8_and_ascii.so.0.0 ? src/backend/utils/mb/conversion_procs/utf8_and_big5/libutf8_and_big5.so.0.0 ? src/backend/utils/mb/conversion_procs/utf8_and_cyrillic/libutf8_and_cyrillic.so.0.0 ? src/backend/utils/mb/conversion_procs/utf8_and_euc_cn/libutf8_and_euc_cn.so.0.0 ? src/backend/utils/mb/conversion_procs/utf8_and_euc_jp/libutf8_and_euc_jp.so.0.0 ? src/backend/utils/mb/conversion_procs/utf8_and_euc_kr/libutf8_and_euc_kr.so.0.0 ? src/backend/utils/mb/conversion_procs/utf8_and_euc_tw/libutf8_and_euc_tw.so.0.0 ? src/backend/utils/mb/conversion_procs/utf8_and_gb18030/libutf8_and_gb18030.so.0.0 ? src/backend/utils/mb/conversion_procs/utf8_and_gbk/libutf8_and_gbk.so.0.0 ? src/backend/utils/mb/conversion_procs/utf8_and_iso8859/libutf8_and_iso8859.so.0.0 ? src/backend/utils/mb/conversion_procs/utf8_and_iso8859_1/libutf8_and_iso8859_1.so.0.0 ? src/backend/utils/mb/conversion_procs/utf8_and_johab/libutf8_and_johab.so.0.0 ? src/backend/utils/mb/conversion_procs/utf8_and_sjis/libutf8_and_sjis.so.0.0 ? src/backend/utils/mb/conversion_procs/utf8_and_tcvn/libutf8_and_tcvn.so.0.0 ? src/backend/utils/mb/conversion_procs/utf8_and_uhc/libutf8_and_uhc.so.0.0 ? src/backend/utils/mb/conversion_procs/utf8_and_win1250/libutf8_and_win1250.so.0.0 ? src/backend/utils/mb/conversion_procs/utf8_and_win1256/libutf8_and_win1256.so.0.0 ? src/backend/utils/mb/conversion_procs/utf8_and_win874/libutf8_and_win874.so.0.0 ? src/bin/initdb/initdb ? src/bin/initlocation/initlocation ? src/bin/ipcclean/ipcclean ? src/bin/pg_config/pg_config ? src/bin/pg_controldata/pg_controldata ? src/bin/pg_ctl/pg_ctl ? src/bin/pg_dump/pg_dump ? src/bin/pg_dump/pg_restore ? src/bin/pg_dump/pg_dumpall ? src/bin/pg_encoding/pg_encoding ? src/bin/pg_id/pg_id ? src/bin/pg_resetxlog/pg_resetxlog ? src/bin/pgtclsh/pgtclsh ? src/bin/pgtclsh/pgtksh ? src/bin/psql/psql ? src/bin/scripts/createdb ? src/bin/scripts/createlang ? src/bin/scripts/createuser ? src/bin/scripts/dropdb ? src/bin/scripts/droplang ? src/bin/scripts/dropuser ? src/include/pg_config.h ? src/include/stamp-h ? src/interfaces/ecpg/ecpglib/libecpg.so.3.4.2 ? src/interfaces/ecpg/pgtypeslib/libpgtypes.so.1.0.0 ? src/interfaces/ecpg/preproc/ecpg ? src/interfaces/jdbc/build.properties ? src/interfaces/jdbc/build ? src/interfaces/jdbc/jars ? src/interfaces/jdbc/org/postgresql/Driver.java ? src/interfaces/libpgtcl/libpgtcl.so.2.4 ? src/interfaces/libpq/libpq.so.3.1 ? src/interfaces/python/lib_pgmodule.so.2.4 ? src/pl/plperl/SPI.c ? src/pl/plperl/libplperl.so.0.0 ? src/pl/plpgsql/src/libplpgsql.so.1.0 ? src/pl/tcl/libpltcl.so.2.0 ? src/pl/tcl/modules/pltcl_loadmod ? src/pl/tcl/modules/pltcl_delmod ? src/pl/tcl/modules/pltcl_listmod ? src/test/regress/pg_regress ? src/test/regress/results ? src/test/regress/regression.out ? src/test/regress/regression.diffs ? src/test/regress/expected/copy.out ? src/test/regress/expected/create_function_1.out ? src/test/regress/expected/create_function_2.out ? src/test/regress/expected/misc.out ? src/test/regress/expected/constraints.out ? src/test/regress/sql/copy.sql ? src/test/regress/sql/create_function_1.sql ? src/test/regress/sql/create_function_2.sql ? src/test/regress/sql/misc.sql ? src/test/regress/sql/constraints.sql Index: src/backend/utils/adt/formatting.c =================================================================== RCS file: /cvsroot/pgsql-server/src/backend/utils/adt/formatting.c,v retrieving revision 1.58 retrieving revision 1.59 diff -c -r1.58 -r1.59 *** src/backend/utils/adt/formatting.c 10 Mar 2003 22:28:18 -0000 1.58 --- src/backend/utils/adt/formatting.c 20 Mar 2003 05:19:26 -0000 1.59 *************** *** 1,7 **** /* ----------------------------------------------------------------------- * formatting.c * ! * $Header: /cvsroot/pgsql-server/src/backend/utils/adt/formatting.c,v 1.58 2003/03/10 22:28:18 tgl Exp $ * * * Portions Copyright (c) 1999-2002, PostgreSQL Global Development Group --- 1,7 ---- /* ----------------------------------------------------------------------- * formatting.c * ! * $Header: /cvsroot/pgsql-server/src/backend/utils/adt/formatting.c,v 1.59 2003/03/20 05:19:26 momjian Exp $ * * * Portions Copyright (c) 1999-2002, PostgreSQL Global Development Group *************** *** 276,292 **** * Flags for NUMBER version * ---------- */ ! #define NUM_F_DECIMAL 0x01 ! #define NUM_F_LDECIMAL 0x02 ! #define NUM_F_ZERO 0x04 ! #define NUM_F_BLANK 0x08 ! #define NUM_F_FILLMODE 0x10 ! #define NUM_F_LSIGN 0x20 ! #define NUM_F_BRACKET 0x40 ! #define NUM_F_MINUS 0x80 ! #define NUM_F_PLUS 0x100 ! #define NUM_F_ROMAN 0x200 ! #define NUM_F_MULTI 0x400 #define NUM_LSIGN_PRE -1 #define NUM_LSIGN_POST 1 --- 276,294 ---- * Flags for NUMBER version * ---------- */ ! #define NUM_F_DECIMAL 1 << 1 ! #define NUM_F_LDECIMAL 1 << 2 ! #define NUM_F_ZERO 1 << 3 ! #define NUM_F_BLANK 1 << 4 ! #define NUM_F_FILLMODE 1 << 5 ! #define NUM_F_LSIGN 1 << 6 ! #define NUM_F_BRACKET 1 << 7 ! #define NUM_F_MINUS 1 << 8 ! #define NUM_F_PLUS 1 << 9 ! #define NUM_F_ROMAN 1 << 10 ! #define NUM_F_MULTI 1 << 11 ! #define NUM_F_PLUS_POST 1 << 12 ! #define NUM_F_MINUS_POST 1 << 13 #define NUM_LSIGN_PRE -1 #define NUM_LSIGN_POST 1 *************** *** 1052,1057 **** --- 1054,1061 ---- elog(ERROR, "to_char/to_number(): can't use 'S' and 'MI' together."); } num->flag |= NUM_F_MINUS; + if (IS_DECIMAL(num)) + num->flag |= NUM_F_MINUS_POST; break; case NUM_PL: *************** *** 1061,1066 **** --- 1065,1072 ---- elog(ERROR, "to_char/to_number(): can't use 'S' and 'PL' together."); } num->flag |= NUM_F_PLUS; + if (IS_DECIMAL(num)) + num->flag |= NUM_F_PLUS_POST; break; case NUM_SG: *************** *** 3880,3907 **** else { Np->sign = sign; ! ! if (Np->sign != '-') { ! Np->Num->flag &= ~NUM_F_BRACKET; ! Np->Num->flag &= ~NUM_F_MINUS; } - else if (Np->sign != '+') - Np->Num->flag &= ~NUM_F_PLUS; - - if (Np->sign == '+' && IS_FILLMODE(Np->Num) && !IS_LSIGN(Np->Num)) - Np->sign_wrote = TRUE; /* needn't sign */ else ! Np->sign_wrote = FALSE; /* need sign */ ! Np->sign_pos = -1; ! if (Np->Num->lsign == NUM_LSIGN_PRE && Np->Num->pre == Np->Num->pre_lsign_num) ! Np->Num->lsign = NUM_LSIGN_POST; ! /* MI/PL/SG - write sign itself and not in number */ ! if (IS_PLUS(Np->Num) || IS_MINUS(Np->Num)) ! Np->sign_wrote = TRUE; /* needn't sign */ } /* --- 3886,3921 ---- else { Np->sign = sign; ! ! /* MI/PL/SG - write sign itself and not in number */ ! if (IS_PLUS(Np->Num) || IS_MINUS(Np->Num)) { ! if (IS_PLUS(Np->Num) && IS_MINUS(Np->Num)==FALSE) ! Np->sign_wrote = FALSE; ! Np->sign_pos = -1; } else ! { ! if (Np->sign != '-') ! { ! if (IS_BRACKET(Np->Num)) ! Np->Num->flag &= ~NUM_F_BRACKET; ! if (IS_MINUS(Np->Num)) ! Np->Num->flag &= ~NUM_F_MINUS; ! } ! else if (Np->sign != '+' && IS_PLUS(Np->Num)) ! Np->Num->flag &= ~NUM_F_PLUS; ! if (Np->sign == '+' && IS_FILLMODE(Np->Num) && !IS_LSIGN(Np->Num)) ! Np->sign_wrote = TRUE; /* needn't sign */ ! else ! Np->sign_wrote = FALSE; /* need sign */ ! Np->sign_pos = -1; ! if (Np->Num->lsign == NUM_LSIGN_PRE && Np->Num->pre == Np->Num->pre_lsign_num) ! Np->Num->lsign = NUM_LSIGN_POST; ! } } /* *************** *** 3917,3923 **** { if (IS_DECIMAL(Np->Num)) Np->last_relevant = get_last_relevant_decnum( ! Np->number + ((Np->Num->zero_end - Np->num_pre > 0) ? Np->Num->zero_end - Np->num_pre : 0)); } --- 3931,3937 ---- { if (IS_DECIMAL(Np->Num)) Np->last_relevant = get_last_relevant_decnum( ! Np->number + ((Np->Num->zero_end - Np->num_pre > 0) ? Np->Num->zero_end - Np->num_pre : 0)); } *************** *** 3946,3962 **** /* * terrible Ora format */ ! if (!IS_ZERO(Np->Num) && *Np->number == '0' && ! !IS_FILLMODE(Np->Num) && Np->Num->post != 0) { ++Np->sign_pos; if (IS_LSIGN(Np->Num)) { ! if (Np->Num->lsign == NUM_LSIGN_PRE) ! ++Np->sign_pos; ! else --Np->sign_pos; } } --- 3960,3974 ---- /* * terrible Ora format */ ! if (IS_ZERO(Np->Num)==FALSE && *Np->number == '0' && ! IS_FILLMODE(Np->Num)==FALSE && Np->Num->post) { ++Np->sign_pos; if (IS_LSIGN(Np->Num)) { ! if (Np->Num->lsign != NUM_LSIGN_PRE) --Np->sign_pos; } } *************** *** 3975,3982 **** #ifdef DEBUG_TO_FROM_CHAR elog(DEBUG_elog_output, ! ! "\n\tNUM: '%s'\n\tPRE: %d\n\tPOST: %d\n\tNUM_COUNT: %d\n\tNUM_PRE: %d\n\tSIGN_POS: %d\n\tSIGN_WROTE: %s\n\tZERO: %s\n\tZERO_START: %d\n\tZERO_END: %d\n\tLAST_RELEVANT: %s", Np->number, Np->Num->pre, Np->Num->post, --- 3987,3994 ---- #ifdef DEBUG_TO_FROM_CHAR elog(DEBUG_elog_output, ! "\n\tSIGN: '%c'\n\tNUM: '%s'\n\tPRE: %d\n\tPOST: %d\n\tNUM_COUNT: %d\n\tNUM_PRE: %d\n\tSIGN_POS: %d\n\tSIGN_WROTE: %s\n\tZERO: %s\n\tZERO_START: %d\n\tZERO_END: %d\n\tLAST_RELEVANT: %s\n\tBRACKET: %s\n\tPLUS: %s\n\tMINUS: %s", ! Np->sign, Np->number, Np->Num->pre, Np->Num->post, *************** *** 3987,3994 **** IS_ZERO(Np->Num) ? "Yes" : "No", Np->Num->zero_start, Np->Num->zero_end, ! Np->last_relevant ? Np->last_relevant : "" ! ); #endif /* --- 3999,4009 ---- IS_ZERO(Np->Num) ? "Yes" : "No", Np->Num->zero_start, Np->Num->zero_end, ! Np->last_relevant ? Np->last_relevant : "", ! IS_BRACKET(Np->Num) ? "Yes" : "No", ! IS_PLUS(Np->Num) ? "Yes" : "No", ! IS_MINUS(Np->Num) ? "Yes" : "No" ! ); #endif /*