*** postgresql-7.0.3/src/backend/parser/analyze.c.orig Thu Apr 13 02:15:26 2000 --- postgresql-7.0.3/src/backend/parser/analyze.c Mon Dec 4 11:01:45 2000 *************** *** 28,33 **** --- 28,37 ---- #include "utils/builtins.h" #include "utils/numeric.h" + #ifdef MULTIBYTE + #include "mb/pg_wchar.h" + #endif + void CheckSelectForUpdate(Query *qry); /* no points for style... */ static Query *transformStmt(ParseState *pstate, Node *stmt); *************** *** 533,538 **** --- 537,549 ---- else name2chars--; } + + #ifdef MULTIBYTE + if (name1) + name1chars = pg_mbcliplen(name1, name1chars, name1chars); + if (name2) + name2chars = pg_mbcliplen(name2, name2chars, name2chars); + #endif /* Now construct the string using the chosen lengths */ name = palloc(name1chars + name2chars + overhead + 1); *** postgresql-7.0.3/src/backend/parser/scan.l.orig Fri Jun 2 10:19:18 2000 --- postgresql-7.0.3/src/backend/parser/scan.l Mon Dec 4 11:01:45 2000 *************** *** 31,36 **** --- 31,40 ---- #include "parser/scansup.h" #include "utils/builtins.h" + #ifdef MULTIBYTE + #include "mb/pg_wchar.h" + #endif + extern char *parseString; static char *parseCh; *************** *** 328,336 **** --- 332,348 ---- BEGIN(INITIAL); if (strlen(literalbuf) >= NAMEDATALEN) { + #ifdef MULTIBYTE + int len; + len = pg_mbcliplen(literalbuf,strlen(literalbuf),NAMEDATALEN-1); + elog(NOTICE, "identifier \"%s\" will be truncated to \"%.*s\"", + literalbuf, len, literalbuf); + literalbuf[len] = '\0'; + #else elog(NOTICE, "identifier \"%s\" will be truncated to \"%.*s\"", literalbuf, NAMEDATALEN-1, literalbuf); literalbuf[NAMEDATALEN-1] = '\0'; + #endif } yylval.str = pstrdup(literalbuf); return IDENT; *************** *** 451,459 **** --- 463,479 ---- yytext[i] = tolower(yytext[i]); if (i >= NAMEDATALEN) { + #ifdef MULTIBYTE + int len; + len = pg_mbcliplen(yytext,i,NAMEDATALEN-1); + elog(NOTICE, "identifier \"%s\" will be truncated to \"%.*s\"", + yytext, len, yytext); + yytext[len] = '\0'; + #else elog(NOTICE, "identifier \"%s\" will be truncated to \"%.*s\"", yytext, NAMEDATALEN-1, yytext); yytext[NAMEDATALEN-1] = '\0'; + #endif } keyword = ScanKeywordLookup((char*)yytext); if (keyword != NULL) { *** postgresql-7.0.3/src/backend/parser/scan.c.orig Sun Nov 12 16:32:27 2000 --- postgresql-7.0.3/src/backend/parser/scan.c Mon Dec 4 11:01:45 2000 *************** *** 2,8 **** /* Scanner skeleton version: * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $ - * $FreeBSD: src/usr.bin/lex/flex.skl,v 1.4 1999/10/27 07:56:44 obrien Exp $ */ #define FLEX_SCANNER --- 2,7 ---- *************** *** 568,573 **** --- 567,576 ---- #include "parser/scansup.h" #include "utils/builtins.h" + #ifdef MULTIBYTE + #include "mb/pg_wchar.h" + #endif + extern char *parseString; static char *parseCh; *************** *** 719,725 **** * Note that xcstart must appear before operator, as explained above! * Also whitespace (comment) must appear before operator. */ ! #line 723 "lex.yy.c" /* Macros after this point can all be overridden by user definitions in * section 1. --- 722,728 ---- * Note that xcstart must appear before operator, as explained above! * Also whitespace (comment) must appear before operator. */ ! #line 726 "lex.yy.c" /* Macros after this point can all be overridden by user definitions in * section 1. *************** *** 870,878 **** register char *yy_cp, *yy_bp; register int yy_act; ! #line 246 "scan.l" ! #line 876 "lex.yy.c" if ( yy_init ) { --- 873,881 ---- register char *yy_cp, *yy_bp; register int yy_act; ! #line 250 "scan.l" ! #line 879 "lex.yy.c" if ( yy_init ) { *************** *** 957,968 **** case 1: YY_RULE_SETUP ! #line 247 "scan.l" { /* ignore */ } YY_BREAK case 2: YY_RULE_SETUP ! #line 249 "scan.l" { BEGIN(xc); /* Put back any characters past slash-star; see above */ --- 960,971 ---- case 1: YY_RULE_SETUP ! #line 251 "scan.l" { /* ignore */ } YY_BREAK case 2: YY_RULE_SETUP ! #line 253 "scan.l" { BEGIN(xc); /* Put back any characters past slash-star; see above */ *************** *** 971,991 **** YY_BREAK case 3: YY_RULE_SETUP ! #line 255 "scan.l" { BEGIN(INITIAL); } YY_BREAK case 4: YY_RULE_SETUP ! #line 257 "scan.l" { /* ignore */ } YY_BREAK case YY_STATE_EOF(xc): ! #line 259 "scan.l" { elog(ERROR, "Unterminated /* comment"); } YY_BREAK case 5: YY_RULE_SETUP ! #line 261 "scan.l" { BEGIN(xb); startlit(); --- 974,994 ---- YY_BREAK case 3: YY_RULE_SETUP ! #line 259 "scan.l" { BEGIN(INITIAL); } YY_BREAK case 4: YY_RULE_SETUP ! #line 261 "scan.l" { /* ignore */ } YY_BREAK case YY_STATE_EOF(xc): ! #line 263 "scan.l" { elog(ERROR, "Unterminated /* comment"); } YY_BREAK case 5: YY_RULE_SETUP ! #line 265 "scan.l" { BEGIN(xb); startlit(); *************** *** 993,999 **** YY_BREAK case 6: YY_RULE_SETUP ! #line 265 "scan.l" { char* endptr; --- 996,1002 ---- YY_BREAK case 6: YY_RULE_SETUP ! #line 269 "scan.l" { char* endptr; *************** *** 1007,1036 **** } YY_BREAK case 7: ! #line 277 "scan.l" case 8: YY_RULE_SETUP ! #line 277 "scan.l" { addlit(yytext, yyleng); } YY_BREAK case 9: ! #line 281 "scan.l" case 10: YY_RULE_SETUP ! #line 281 "scan.l" { /* ignore */ } YY_BREAK case YY_STATE_EOF(xb): ! #line 284 "scan.l" { elog(ERROR, "Unterminated binary integer"); } YY_BREAK case 11: YY_RULE_SETUP ! #line 286 "scan.l" { BEGIN(xh); startlit(); --- 1010,1039 ---- } YY_BREAK case 7: ! #line 281 "scan.l" case 8: YY_RULE_SETUP ! #line 281 "scan.l" { addlit(yytext, yyleng); } YY_BREAK case 9: ! #line 285 "scan.l" case 10: YY_RULE_SETUP ! #line 285 "scan.l" { /* ignore */ } YY_BREAK case YY_STATE_EOF(xb): ! #line 288 "scan.l" { elog(ERROR, "Unterminated binary integer"); } YY_BREAK case 11: YY_RULE_SETUP ! #line 290 "scan.l" { BEGIN(xh); startlit(); *************** *** 1038,1044 **** YY_BREAK case 12: YY_RULE_SETUP ! #line 290 "scan.l" { char* endptr; --- 1041,1047 ---- YY_BREAK case 12: YY_RULE_SETUP ! #line 294 "scan.l" { char* endptr; *************** *** 1052,1063 **** } YY_BREAK case YY_STATE_EOF(xh): ! #line 301 "scan.l" { elog(ERROR, "Unterminated hexadecimal integer"); } YY_BREAK case 13: YY_RULE_SETUP ! #line 303 "scan.l" { BEGIN(xq); startlit(); --- 1055,1066 ---- } YY_BREAK case YY_STATE_EOF(xh): ! #line 305 "scan.l" { elog(ERROR, "Unterminated hexadecimal integer"); } YY_BREAK case 13: YY_RULE_SETUP ! #line 307 "scan.l" { BEGIN(xq); startlit(); *************** *** 1065,1071 **** YY_BREAK case 14: YY_RULE_SETUP ! #line 307 "scan.l" { BEGIN(INITIAL); yylval.str = scanstr(literalbuf); --- 1068,1074 ---- YY_BREAK case 14: YY_RULE_SETUP ! #line 311 "scan.l" { BEGIN(INITIAL); yylval.str = scanstr(literalbuf); *************** *** 1073,1102 **** } YY_BREAK case 15: ! #line 313 "scan.l" case 16: ! #line 314 "scan.l" case 17: YY_RULE_SETUP ! #line 314 "scan.l" { addlit(yytext, yyleng); } YY_BREAK case 18: YY_RULE_SETUP ! #line 317 "scan.l" { /* ignore */ } YY_BREAK case YY_STATE_EOF(xq): ! #line 320 "scan.l" { elog(ERROR, "Unterminated quoted string"); } YY_BREAK case 19: YY_RULE_SETUP ! #line 323 "scan.l" { BEGIN(xd); startlit(); --- 1076,1105 ---- } YY_BREAK case 15: ! #line 317 "scan.l" case 16: ! #line 318 "scan.l" case 17: YY_RULE_SETUP ! #line 318 "scan.l" { addlit(yytext, yyleng); } YY_BREAK case 18: YY_RULE_SETUP ! #line 321 "scan.l" { /* ignore */ } YY_BREAK case YY_STATE_EOF(xq): ! #line 324 "scan.l" { elog(ERROR, "Unterminated quoted string"); } YY_BREAK case 19: YY_RULE_SETUP ! #line 327 "scan.l" { BEGIN(xd); startlit(); *************** *** 1104,1117 **** YY_BREAK case 20: YY_RULE_SETUP ! #line 327 "scan.l" { BEGIN(INITIAL); if (strlen(literalbuf) >= NAMEDATALEN) { elog(NOTICE, "identifier \"%s\" will be truncated to \"%.*s\"", literalbuf, NAMEDATALEN-1, literalbuf); literalbuf[NAMEDATALEN-1] = '\0'; } yylval.str = pstrdup(literalbuf); return IDENT; --- 1107,1128 ---- YY_BREAK case 20: YY_RULE_SETUP ! #line 331 "scan.l" { BEGIN(INITIAL); if (strlen(literalbuf) >= NAMEDATALEN) { + #ifdef MULTIBYTE + int len; + len = pg_mbcliplen(literalbuf,strlen(literalbuf),NAMEDATALEN-1); + elog(NOTICE, "identifier \"%s\" will be truncated to \"%.*s\"", + literalbuf, len, literalbuf); + literalbuf[len] = '\0'; + #else elog(NOTICE, "identifier \"%s\" will be truncated to \"%.*s\"", literalbuf, NAMEDATALEN-1, literalbuf); literalbuf[NAMEDATALEN-1] = '\0'; + #endif } yylval.str = pstrdup(literalbuf); return IDENT; *************** *** 1119,1146 **** YY_BREAK case 21: YY_RULE_SETUP ! #line 338 "scan.l" { addlit(yytext, yyleng); } YY_BREAK case YY_STATE_EOF(xd): ! #line 341 "scan.l" { elog(ERROR, "Unterminated quoted identifier"); } YY_BREAK case 22: YY_RULE_SETUP ! #line 343 "scan.l" { return TYPECAST; } YY_BREAK case 23: YY_RULE_SETUP ! #line 345 "scan.l" { return yytext[0]; } YY_BREAK case 24: YY_RULE_SETUP ! #line 347 "scan.l" { /* * Check for embedded slash-star or dash-dash; those --- 1130,1157 ---- YY_BREAK case 21: YY_RULE_SETUP ! #line 350 "scan.l" { addlit(yytext, yyleng); } YY_BREAK case YY_STATE_EOF(xd): ! #line 353 "scan.l" { elog(ERROR, "Unterminated quoted identifier"); } YY_BREAK case 22: YY_RULE_SETUP ! #line 355 "scan.l" { return TYPECAST; } YY_BREAK case 23: YY_RULE_SETUP ! #line 357 "scan.l" { return yytext[0]; } YY_BREAK case 24: YY_RULE_SETUP ! #line 359 "scan.l" { /* * Check for embedded slash-star or dash-dash; those *************** *** 1212,1218 **** YY_BREAK case 25: YY_RULE_SETUP ! #line 416 "scan.l" { yylval.ival = atol((char*)&yytext[1]); return PARAM; --- 1223,1229 ---- YY_BREAK case 25: YY_RULE_SETUP ! #line 428 "scan.l" { yylval.ival = atol((char*)&yytext[1]); return PARAM; *************** *** 1220,1226 **** YY_BREAK case 26: YY_RULE_SETUP ! #line 421 "scan.l" { char* endptr; --- 1231,1237 ---- YY_BREAK case 26: YY_RULE_SETUP ! #line 433 "scan.l" { char* endptr; *************** *** 1237,1243 **** YY_BREAK case 27: YY_RULE_SETUP ! #line 434 "scan.l" { yylval.str = pstrdup((char*)yytext); return FCONST; --- 1248,1254 ---- YY_BREAK case 27: YY_RULE_SETUP ! #line 446 "scan.l" { yylval.str = pstrdup((char*)yytext); return FCONST; *************** *** 1245,1251 **** YY_BREAK case 28: YY_RULE_SETUP ! #line 438 "scan.l" { yylval.str = pstrdup((char*)yytext); return FCONST; --- 1256,1262 ---- YY_BREAK case 28: YY_RULE_SETUP ! #line 450 "scan.l" { yylval.str = pstrdup((char*)yytext); return FCONST; *************** *** 1253,1259 **** YY_BREAK case 29: YY_RULE_SETUP ! #line 444 "scan.l" { int i; ScanKeyword *keyword; --- 1264,1270 ---- YY_BREAK case 29: YY_RULE_SETUP ! #line 456 "scan.l" { int i; ScanKeyword *keyword; *************** *** 1264,1272 **** --- 1275,1291 ---- yytext[i] = tolower(yytext[i]); if (i >= NAMEDATALEN) { + #ifdef MULTIBYTE + int len; + len = pg_mbcliplen(yytext,i,NAMEDATALEN-1); + elog(NOTICE, "identifier \"%s\" will be truncated to \"%.*s\"", + yytext, len, yytext); + yytext[len] = '\0'; + #else elog(NOTICE, "identifier \"%s\" will be truncated to \"%.*s\"", yytext, NAMEDATALEN-1, yytext); yytext[NAMEDATALEN-1] = '\0'; + #endif } keyword = ScanKeywordLookup((char*)yytext); if (keyword != NULL) { *************** *** 1281,1295 **** YY_BREAK case 30: YY_RULE_SETUP ! #line 469 "scan.l" { return yytext[0]; } YY_BREAK case 31: YY_RULE_SETUP ! #line 471 "scan.l" ECHO; YY_BREAK ! #line 1293 "lex.yy.c" case YY_STATE_EOF(INITIAL): yyterminate(); --- 1300,1314 ---- YY_BREAK case 30: YY_RULE_SETUP ! #line 489 "scan.l" { return yytext[0]; } YY_BREAK case 31: YY_RULE_SETUP ! #line 491 "scan.l" ECHO; YY_BREAK ! #line 1312 "lex.yy.c" case YY_STATE_EOF(INITIAL): yyterminate(); *************** *** 2175,2181 **** return 0; } #endif ! #line 471 "scan.l" void yyerror(const char * message) --- 2194,2200 ---- return 0; } #endif ! #line 491 "scan.l" void yyerror(const char * message) *** postgresql-7.0.3/src/backend/utils/mb/conv.c.orig Sat May 20 22:12:26 2000 --- postgresql-7.0.3/src/backend/utils/mb/conv.c Mon Dec 4 11:01:45 2000 *************** *** 906,920 **** { len -= pg_mic_mblen(mic++); ! if (c1 == LC_CNS11643_1 || c1 == LC_CNS11643_2) { *p++ = *mic++; *p++ = *mic++; } else if (c1 == 0x9d) { /* LCPRV2? */ *p++ = SS2; ! *p++ = c1 - LC_CNS11643_3 + 0xa3; *p++ = *mic++; *p++ = *mic++; } --- 906,927 ---- { len -= pg_mic_mblen(mic++); ! if (c1 == LC_CNS11643_1) { *p++ = *mic++; *p++ = *mic++; } + else if (c1 == LC_CNS11643_2) + { + *p++ = SS2; + *p++ = 0xa2; + *p++ = *mic++; + *p++ = *mic++; + } else if (c1 == 0x9d) { /* LCPRV2? */ *p++ = SS2; ! *p++ = *mic++ - LC_CNS11643_3 + 0xa3; *p++ = *mic++; *p++ = *mic++; } *************** *** 941,947 **** unsigned short big5buf, cnsBuf; unsigned char lc; ! char bogusBuf[2]; int i; while (len > 0 && (c1 = *big5++)) --- 948,954 ---- unsigned short big5buf, cnsBuf; unsigned char lc; ! char bogusBuf[3]; int i; while (len > 0 && (c1 = *big5++)) *** postgresql-7.0.3/src/bin/pgaccess/lib/languages/japanese.orig Mon Dec 4 11:01:45 2000 --- postgresql-7.0.3/src/bin/pgaccess/lib/languages/japanese Mon Dec 4 11:01:45 2000 *************** *** 0 **** --- 1,548 ---- + array set Messages { + + "Label" "ラベル" + + "Save schema" "スキーマを保存" + + "Is unique ?" "ユニーク?" + + "Report builder" "レポートビルダー" + + "Criteria" "区分" + + "FATAL ERROR upgrading PgAccess table" "PgAccessのテーブルをアップグレードする際に致命的なエラーが発生しました" + + "Save this query as a view" "このクエリをビューとして保存" + + "Page header" "ページへッダー" + + "Query name" "クエリ名" + + "Please select an object first!" "まず最初にオブジェクトを選んでください!" + + "Fields :" "フィールド :" + + "Name" "名前" + + "File name" "フィールド名" + + "Detail record" "レコード詳細" + + "Auto-load the last opened database at startup" "最後に開いたデータベースを立ち上げ時に自動的にロードする" + + "Maxvalue" "最大値" + + "Start value" "開始値" + + "Report fields" "レポートのフィールド" + + "Test form" "テストフォーム" + + "Error trying to connect to database '%s' on host %s \n\nPostgreSQL error + message:%s" "接続を試みたデータベース: '%s' ホスト名: %s \n\nPostgreSQLのエラーメッセージ :%s" + + "No field type ?" "フィールドの型名?" + + "User without name?" "ユーザに名前がありませんが?" + + "You have to supply a name for this schema!" "このスキーマの名前を与えてください." + + "Last value" "最終値" + + "Preferences" "設定" + + "View '%s' already exists!\nOverwrite ?" "ビュー '%s' はすでに存在します!\n書き換えますか?" + + "You have to select an index!" "インデックスを選んでください!" + + "Field type" "フィールドの型" + + "Script name" "スクリプトの名前" + + "Reload" "再読込" + + "Remove table %s from query?" "テーブル %s をクエリから削除しますか?" + + "SQL window" "SQLウィンドウ" + + "Allow user to create other users" "ユーザ作成許可" + + "Delete current record ?" "現在のレコードを削除しますか?" + + "List box" "リストボックス" + + "Save to query builder" "クエリビルダに保存" + + "fixed width" "固定幅" + + "Scripts" "スクリプト" + + "Yes" "はい" + + "Add label" "ラベルを追加" + + "Sequence created!" "シーケンスを作成しました!" + + "Field information" "フィールド情報" + + "Design" "デザイン" + + "Field" "フィールド" + + "You have to supply an external file name!" "外部ファイル名を与えてください!" + + "Increment" "インクリメント" + + "No" "いいえ" + + "Form design" "フォームデザイン" + + "You must supply a return type!" "戻りデータ型を与えてください!" + + "Remove field from result ?" "結果からフィールドを削除しますか?" + + "There is another object (a %s) with the same name.\nPlease change it!" "同じ名前のオブジェクト(%s)が存在します.\n変更してください." + + "This query has no commands?" "コマンドなしのクエリですが?" + + "Execute query" "クエリ実行" + + "field cannot be null" "NOT NULL" + + "Help" "へルプ" + + "Rename column" "カラム名変更" + + "Database" "データベース" + + "Information" "情報" + + "Close" "閉じる" + + "Command" "コマンド" + + "Table" "テーブル" + + "verify password" "もう一度入力" + + "Vacuum" "Vacuum" + + "Default value" "デフォルト値" + + "Import" "Import" + + "Delete index" "インデックス削除" + + "Move up" "上に移動" + + "index properties" "インデックスのプロパティ" + + "check" "チェック" + + "Create new table" "新規テーブル作成" + + "Visual query designer" "ビジュアルクエリデザイナ" + + "Delete all" "全削除" + + "You are going to delete\n\n %s \n\nProceed?" "次のものを削除しようとしています\n\n %s \n\n続けますか?" + + "Schema name" "スキーマ名" + + "Error executing query" "クエリ実行エラー" + + "Report name" "レポート名" + + "Add field" "フィールド追加" + + "Field name" "フィールド名" + + "FATAL ERROR searching for PgAccess system tables" "PgAccessシステムテーブル検索中に致命的なエラー発生" + + "A big number of rows displayed in table view will take a lot of memory!" "テーブルビューに非常に多くの行を表示するとメモリをたくさん消費します!" + + "Preview" "プレビュー" + + "Users" "ユーザ" + + "Owner" "オーナ" + + "Form's window internal name" "フォームウィンドウの内部名" + + "Sort field" "フィールドでソート" + + "New name is the same as the old one!" "新しい名前が以前の名前と同じです!" + + "Warning" "警告" + + "Suggestions at" "ご意見はこちら" + + "Functions" "関数" + + "Schema" "スキーマ" + + "Open" "開く" + + "size" "サイズ" + + "Delete" "削除" + + "Returns" "戻り" + + "Define new user" "新規ユーザ作成" + + "Move down" "下に移動" + + "Design script" "スクリプトデザイン" + + "Check box" "チェックボックス" + + "FINAL WARNING" "*最終警告*" + + "Add table" "テーブル追加" + + "Table viewer font" "テーブルビューワのフォント" + + "The field type is not specified!" "フィールドの型が指定されていません!" + + "Close test form" "テストフォームを閉じる" + + "Export table" "テーブルをexport" + + "Add new index" "新規インデックス追加" + + "Left" "左" + + "Field delimiter" "フィールドデリミッタ" + + "Add formula" "式の追加" + + "Open database" "データベースを開く" + + "Return" "戻り" + + "Changed fonts may appear in the next working session!" "フォントの変更は次回のセッションに反映されます" + + "Error" "エラー" + + "Enter a field name" "フィールド名を入れてください." + + "field name" "フィールド名" + + "Forms" "フォーム" + + "Cannot add column" "カラムを追加できません" + + "Clean" "消去" + + "Delete all objects ?" "オブジェクトをすべて削除しても良いですか?" + + "Preferred language" "言語選択" + + "Execute SQL" "SQL実行" + + "Sequences" "シーケンス" + + "Button" "ボタン" + + "Language" "言語" + + "Query '%s' was not found!" "クエリ '%s' が見つかりませんでした" + + "Object" "オブジェクト" + + "Font fixed" "固定幅フォント" + + "Table name" "テーブル名" + + "Export" "Export" + + "Change user" "ユーザ変更" + + "You must give object a new name!" "オブジェクトに新しい名前を付けてください!" + + "Query" "クエリ" + + "User name" "ユーザ名" + + "Font normal" "通常フォント" + + "Import table" "テーブルをimport" + + "Toolbar" "ツールバー" + + "Radio btn" "ラジオボタン" + + "You must supply a name for this function!" "関数名を指定してください!" + + "You have to select index fields!" "インデックスフィールドを選択してください!" + + "Constraint" "制約" + + "The script must have a name!" "スクリプトには名前が必要です!" + + "Save" "保存" + + "Exit" "終了" + + "Inherits" "継承" + + "Delete field" "フィールド削除" + + "About" "pgaccessについて" + + "Empty field name ?" "フィールド名がありません?" + + "All report information will be deleted.\n\nProceed ?" "すべてのレポートを削除します.\n\n続けますか?" + + "Host" "ホスト" + + "vacuuming database %s ..." "データベース %s を vacuum 中..." + + "Indexes defined" "定義済インデックス" + + "You must specify field size!" "フィールドサイズを指定してください!" + + "Schema '%s' already exists!" "スキーマ '%s' はすでに存在します!" + + "There is another field with the same name: '%s'!\n\nReplace it ?" "同一名の別のフィールド '%s' が存在します!\n\n置き換えますか?" + + "Contents" "内容" + + "Views" "ビュー" + + "Variable" "Variable" + + "Error executing query\n\n%s\n\nPostgreSQL error message:\n%s\nPostgreSQL + status:%s" "クエリ実行中にエラー\n\nPostgreSQLのエラーメッセージ:\n%s\nPostgreSQLステータス:%s" + + "Filter conditions" "フィルター条件" + + "Error retrieving query definition" "クエリ定義読み込み中にエラー" + + "Error deleting view" "ビュー削除でエラー" + + "New" "新規" + + "Tables" "テーブル" + + "Create" "作成" + + "Forms need an internal name, only literals, low case" "フォームには小文字の文字列のみによる内部名が必要です" + + "Do you want to save the form into the database?" "データベースにフォームを保存しますか?" + + "Schema '%s' was not found!" "スキーマ '%s' が見つかりません!" + + "proportional" "プロポーナショナル" + + "Function saved!" "関数を保存しました" + + "with OIDs" "OID付帯" + + "Table information" "テーブル情報" + + "Error inserting new record" "新規レコード追加でエラー発生" + + "Column name '%s' already exists in this table!" "カラム名 '%s' はすでにテーブルに存在します!" + + "File" "ファイル" + + "Your table has no fields!" "テーブルにフィールドがありません!" + + "Height" "高さ" + + "You will always get the latest version at:" "最新バージョンはここから入手できます:" + + "Form must have a name" "フォームには名前が必要です" + + "Password" "パスワード" + + "Valid until (date)" "有効期日(日付)" + + "Report source" "レポートのソース" + + "Allow user to create databases" "データベース作成許可" + + "Cancel" "キャンセル" + + "Is clustered ?" "クラスター?" + + "Add new column" "新規カラム追加" + + "Show SQL" "SQL表示" + + "New name" "新規名称" + + "Table '%s' not found!" "テーブル '%s' が見つかりません!" + + "Form name" "フォーム名" + + "Visual designer" "ビジュアルデザイナ" + + "You choose to delete index\n\n %s \n\nProceed?" "インデックス削除選択.\n\n続行しますか?" + + "Error retrieving from" "読み込みエラー: " + + "Save query definition" "クエリ定義保存" + + "A Tcl/Tk interface to\nPostgreSQL\nby Constantin Teodorescu" "A Tcl/Tk interface to\nPostgreSQL\nby Constantin Teodorescu" + + "Operation completed!" "操作完了!" + + "Max rows displayed in table/query view" "テーブル/クエリビューに表示できる最大行数" + + "Passwords do not match!" "パスワードが一致しません!" + + "Rename" "名称変更" + + "Entry" "エントリ" + + "Error retrieving schema definition" "スキーマ定義読み込み中にエラー" + + "This is an action query!\n\nExecute it?" "これはアクションクエリです!\n\n実行しますか?" + + "Error retrieving view definition for" "次のビュー定義を読み込み中にエラー: " + + "options" "オプション" + + "Sequence '%s' not found!" "シーケンス '%s' が見つかりません!" + + "Text" "テキスト" + + "Tcl error executing pg_exec %s\n\n%s" "Tclエラー発生.pg_exec %s\n\n%s" + + "Width" "幅" + + "You have to supply a name for this query!" "クエリには名前を付けてください!" + + "Accessing data. Please wait ..." "データアクセス中.お待ち下さい..." + + "Report footer" "レポートフッタ" + + "Parameters" "パラメータ" + + "Queries" "クエリ" + + "Query '%s' already exists!" "クエリ '%s' はすでに存在します!" + + "Font bold" "ボールドフォント" + + "Query builder" "クエリビルダ" + + "Error defining view" "ビュー定義でエラー" + + "Top" "トップ" + + "You must supply a name for your table!" "テーブル名を入れてください!" + + "Page footer" "ページフッタ" + + "Font italic" "イタリックフォント" + + "Field name not entered!" "フィールド名が入力されていません!" + + "Index name cannot be null!" "インデックス名は空ではいけません!" + + "Sort" "ソート" + + "Import-Export table" "Import-Export テーブル" + + "Point" "点" + + "type" "型" + + "You should supply a name for this sequence" "シーケンスの名前を入れてください" + + "Remove link ?" "リンクを削除しますか?" + + "You have to supply a table name!" "テーブル名を入れてください!" + + "Report header" "レポートへッダ" + + "Attributes" "属性" + + "Table '%s' already in schema" "テーブル '%s' はすでにスキーマにあります" + + "Username" "ユーザ名" + + "Minvalue" "最小値" + + "Sequence name" "シーケンス名" + + "Define sequence" "シーケンス定義" + + "Function" "関数" + + "Sorting and filtering not (yet) available from queries!\n\nPlease enter + them in the query definition!" "クエリでソートとフィルタリングを行うことは(まだ)できません!\n\nクエリ定義にソートとフィルタリングを入れてください!" + + "Reports" "レポート" + + "primary key" "主キー" + + "Back" "戻る" + + "Columns" "カラム" + + "Indexes" "インデックス" + + "Permissions" "パーミッション" + + "not null" "NOT NULL" + + "Cluster index" "クラスターインデックス" + + "index columns" "インデックスカラム" + + "Add user" "ユーザ追加" + + "Change permissions" "パーミッション変更" + + "select" "選択" + + "update" "更新" + + "insert" "追加" + + "rule" "ルール" + + "Identification" "属性" + + "Owner ID" "オーナID" + + "Has primary key ?" "主キーあり?" + + "Has rules ?" "ルールあり?" + + "Statistics" "統計情報" + + "Number of tuples" "タプル数" + + "Number of pages" "ページ数" + + "Index name" "インデックス名" + + "Index fields" "インデックスフィールド" + + "Table OID" "テーブルOID" + + "Print" "印刷" + + "Comments" "注釈" + + "Form designer" "フォームデザイナー" + + "Width" "幅" + + "Height" "高さ" + + "Left" "左座標" + + "Top" "頂点" + + "Class" "クラス" + + "View system tables" "システムテーブルも参照可能にする" + + } *** postgresql-7.0.3/src/bin/pgaccess/lib/tables.tcl.orig Fri Mar 31 20:22:31 2000 --- postgresql-7.0.3/src/bin/pgaccess/lib/tables.tcl Mon Dec 4 11:01:45 2000 *************** *** 813,818 **** --- 813,820 ---- setScrollbar $wn if {$PgAcVar(mw,$wn,updatable)} then { $wn.c bind q "Tables::editText $wn %A %K" + $wn.c bind q "pgaccess_kinput_start %W"; + $wn.c bind q "pg_access_kinput_start %W"; } else { $wn.c bind q {} } *************** *** 2160,2163 **** --- 2162,2242 ---- -in .pgaw:Permissions.fb -column 0 -row 0 -columnspan 1 -rowspan 1 grid $base.fb.btncancel \ -in .pgaw:Permissions.fb -column 1 -row 0 -columnspan 1 -rowspan 1 + } + + # + # NOTE: following two procedures _kinput_trace_root and _kinput_trace_over + # were originaly part of kinput.tcl. + # -- Tatuso Ishii 2000/08/18 + + # kinput.tcl -- + # + # This file contains Tcl procedures used to input Japanese text. + # + # $Header: /mnt1/local/src/repository/pgaccess/pgaccess.tcl,v 1.1.1.1.2.1 1997/11/27 03:24:17 t-ishii Exp $ + # + # Copyright (c) 1993 Software Research Associates, Inc. + # + # Permission to use, copy, modify, and distribute this software and its + # documentation for any purpose and without fee is hereby granted, provided + # that the above copyright notice appear in all copies and that both that + # copyright notice and this permission notice appear in supporting + # documentation, and that the name of Software Research Associates not be + # used in advertising or publicity pertaining to distribution of the + # software without specific, written prior permission. Software Research + # Associates makes no representations about the suitability of this software + # for any purpose. It is provided "as is" without express or implied + # warranty. + # + + # The procedure below is invoked in order to start Japanese text input + # for the specified widget. It sends a request to the input server to + # start conversion on that widget. + # Second argument specifies input style. Valid values are "over" (for + # over-the-spot style) and "root" (for root window style). See X11R5 + # Xlib manual for the meaning of these styles). The default is root + # window style. + + proc pgaccess_kinput_start {w {style root}} { + global _kinput_priv + catch {unset _kinput_priv($w)} + if {$style=="over"} then { + set spot [_kinput_spot $w] + if {"$spot" != ""} then { + trace variable _kinput_priv($w) w _pgaccess_kinput_trace_$style + kanjiInput start $w \ + -variable _kinput_priv($w) \ + -inputStyle over \ + -foreground [_kinput_attr $w -foreground] \ + -background [_kinput_attr $w -background] \ + -fonts [list [_kinput_attr $w -font] \ + [_kinput_attr $w -kanjifont]] \ + -clientArea [_kinput_area $w] \ + -spot $spot + return + } + } + trace variable _kinput_priv($w) w _pgaccess_kinput_trace_root + kanjiInput start $w -variable _kinput_priv($w) -inputStyle root + } + + # for root style + proc _pgaccess_kinput_trace_root {name1 name2 op} { + global PgAcVar + set wn [string trimright $name2 ".c"] + upvar #0 $name1 trvar + set c $trvar($name2) + Tables::editText $wn $c $c + unset $trvar($name2) + } + + # for over-the-spot style + proc _pgaccess_kinput_trace_over {name1 name2 op} { + global PgAcVar + set wn [string trimright $name2 ".c"] + upvar #0 $name1 trvar + set c $trvar($name2) + Tables::editText $wn $c $c + kinput_send_spot $name2 + unset $trvar($name2) } *** postgresql-7.0.3/src/interfaces/libpq/fe-connect.c.orig Mon May 22 06:19:53 2000 --- postgresql-7.0.3/src/interfaces/libpq/fe-connect.c Mon Dec 4 11:01:45 2000 *************** *** 1505,1514 **** { const char *env; - /* query server encoding */ env = getenv(envname); if (!env || *env == '\0') { if (!PQsendQuery(conn, "select getdatabaseencoding()")) goto error_return; --- 1505,1515 ---- { const char *env; env = getenv(envname); if (!env || *env == '\0') { + /* query server encoding if PGCLIENTENCODING + is not specified */ if (!PQsendQuery(conn, "select getdatabaseencoding()")) goto error_return; *************** *** 1516,1521 **** --- 1517,1535 ---- conn->setenv_state = SETENV_STATE_ENCODINGS_WAIT; return PGRES_POLLING_READING; } + else + { + /* otherwise set client encoding in pg_conn struct */ + int encoding = pg_char_to_encoding(env); + if (encoding < 0) + { + strcpy(conn->errorMessage.data, + "PGCLIENTENCODING has no valid encoding name.\n"); + goto error_return; + } + conn->client_encoding = encoding; + } + } case SETENV_STATE_ENCODINGS_WAIT: