トップページ⇒db
983コメント304KB

PostgreSQL Part.9

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001NAME IS NULL2012/05/26(土) 22:58:15.78ID:???
PostgreSQL (ぽすとぐれすきゅーえる, ぽすとぐれす) について語るスレです。

●関連サイト
PostgreSQL 本家
http://www.postgresql.org/
日本PostgreSQLユーザ会
http://www.postgresql.jp/
ドキュメント
http://www.postgresql.jp/document/current/html/
ダウンロード
http://www.postgresql.jp/PostgreSQL
Let's Postgres (ポータルサイト)
http://lets.postgresql.jp/
pgFoundry
http://pgfoundry.org/

●前スレ
PostgreSQL Part.8
http://toro.2ch.net/test/read.cgi/db/1294641578/
0002NAME IS NULL2012/05/26(土) 22:58:50.47ID:???
●過去スレ
PostgreSQL 2テーブル目 (WebProgから派生)
http://pc8.2ch.net/test/read.cgi/db/1056944337/
PostgreSQL & pgsql-jp ML 3テーブル目
http://pc11.2ch.net/test/read.cgi/db/1079771059/
【Windows】 PostgreSQL8 Part.1 【対応】 (実質part4)
http://pc11.2ch.net/test/read.cgi/db/1102247223/
PostgreSQL Part.5
http://pc11.2ch.net/test/read.cgi/db/1196512717/
PostgreSQL Part.6
http://pc11.2ch.net/test/read.cgi/db/1224318817/
PostgreSQL Part.7
http://hibari.2ch.net/test/read.cgi/db/1256300618/
PostgreSQL Part.8
http://toro.2ch.net/test/read.cgi/db/1294641578/

●関連過去スレ
■   PostgreSQLのことならここで聞け   ■ (初心者part1)
http://pc8.2ch.net/test/read.cgi/db/1056960249/
■   PostgreSQLのことならここで聞け   ■ (初心者part2)
http://pc8.2ch.net/test/read.cgi/db/1091523132/
PostgresSQLについて語ろう (雑談part1)
http://pc8.2ch.net/test/read.cgi/db/1056992724/
PostgreSQLについて語ろう where OID=2::oid (雑談part2)
http://pc8.2ch.net/test/read.cgi/db/1136805513/

●関連スレ
2ch検索
http://find.2ch.net/index.php?STR=PostgreSQL
WebProg/PostgreSQL 2テーブル目
http://pc11.2ch.net/test/read.cgi/php/1047317680/
0003NAME IS NULL2012/05/26(土) 23:00:27.17ID:???
テンプレはコピペだがよかったかな?
0004NAME IS NULL2012/05/26(土) 23:16:14.38ID:???
>>前スレ1000

構文解析が済んでいるからって、処理順をすべて無視して良いとは限らないでしょう。
つーか、なぜあなたは自分レス>>前スレ978の不都合さを無視するの?
0005NAME IS NULL2012/05/27(日) 03:30:16.07ID:???
そこは、内部的にそう展開されても問題ないといいたいんだろう
0006NAME IS NULL2012/05/27(日) 03:35:07.11ID:???
みなさん、ま、まさか
case文とか
countとか、sumとかの集約関数さえも知らん奴を相手にしてたのでは

ウンチクを語るならSQLの基本的な仕様を理解してからにして欲しいですな
0007NAME IS NULL2012/05/27(日) 11:49:56.28ID:???
それを抜きにしても(抜いちゃいかんけど)、
言語設計(概念レイヤとでも言うか)と実装レイヤがごっちゃなのよね、あの子。
0008NAME IS NULL2012/05/27(日) 13:58:50.33ID:???
言語仕様あっての実装であって、
そのための字句解析、意味解析なのに、
その仕様である実行順も各句の役割も無視してる

具体例に対してちゃんと検証しようともしてない。まあSQL知らないからしょうがないのかも知れないが、それならそれなりの応対があるだろうに。
0009NAME IS NULL2012/05/27(日) 15:53:45.14ID:???
いちおつ
0010NAME IS NULL2012/05/27(日) 17:45:00.71ID:???
SQL信者の必死さに涙が止まらない

>>4
>>>前スレ1000
>
>構文解析が済んでいるからって、処理順をすべて無視して良いとは限らないでしょう。

処理順を無視してなんかないですよ。where句から処理が始まったとして、それより前に別名を展開する処理を追加しただけですね。
どこをどうみたら、処理順をすべて無視したと感じたのでしょうか。

>つーか、なぜあなたは自分レス>>前スレ978の不都合さを無視するの?

978ってこれ?

978> > 例えば、初心者が何故以下のような文でエラーが起きるか理解できなくなる。
978> > SELECT COUNT(foo) AS cnt FROM hoge WHERE cnt > 2 GROUP BY bar;
978> この例だと WHERE COUNT(foo) > 2 としたところで何の違いもない。

これについてなら、すでに983にあるとおり。

983> 何の違いもなくエラーが出るよってことでいいのかな

WHERE cnt > 2 も WHERE COUNT(foo) > 2 も同じようにエラーになる。それだけ。「不都合」って言ってるけど何が不都合?
0011NAME IS NULL2012/05/27(日) 18:52:48.69ID:???
技術的に可能ならそのまま仕様にすれば良いと思ってるのか?
0012NAME IS NULL2012/05/27(日) 21:28:57.34ID:???
>>10
信者ってw
丁寧に汚い言葉を使わずに、丁寧に返信していたつもりだが、
もう、そう言うようにしかとっていただけないのなら、勝手にしてください。

あ、最後に

>>983> 何の違いもなくエラーが出るよってことでいいのかな
>>WHERE cnt > 2 も WHERE COUNT(foo) > 2 も同じようにエラーになる。それだけ。「不都合」って言ってるけど何が不都合?

そういう意味ね。失礼、取り違えてました。
0013NAME IS NULL2012/05/28(月) 02:19:09.68ID:???
闇雲に否定はしないけど、難しいだろうなと思うのはこういうの。

select
a as b,
b <- selectで別名解決はしないままでよい?
from tableA
where b = 3; <- 別名と、本来のカラム名との区別はどうやってつける?
0014NAME IS NULL2012/05/28(月) 03:24:14.95ID:???
select
rand()*3::integer as id
,val
from
a
where
id < 100
これは?aテーブルにid列があったらどうする?
selectは、物理テーブルと関係のないを作り出したり、
複数列から一つの列を作り出したり出来る。上の人のエイリアスがかぶる場合ってのもそうだし、人間様がどれが欲しいのか理解できるのか?
それとも全部エラーにしちゃうのか?現在の標準仕様ならばなんの不都合もなく実行できるのだが。
0015NAME IS NULL2012/05/28(月) 03:32:53.32ID:???
すまんpostgresだとrandom()だな
select floor(random()*1000)とかと読み替えてくれ
0016NAME IS NULL2012/05/28(月) 04:16:41.22ID:???
もし、前スレ>>990で書いてたようにもとのカラム見ないで
エイリアス優先とかルール作っちゃうと意図したことができなくなるよ
case文で例を、
念のために、aテーブルの構成は
id | subid1 | subid2 | val1 | val2

select
case
when val2 > 100 then subid1
else subid2
end as id
,val1
from
a
when
id > 50

aテーブルのidが50以上の行を抽出して、その行に対してだけcaseの条件文から新しいid列、val1列を導きたいんだけど、
勝手にselect句のcaseが適用されちゃう、どう解決しよう?
0017NAME IS NULL2012/05/28(月) 10:58:24.31ID:???
>>10
>それより前に別名を展開する処理を追加しただけですね。
正しく動作させるには「前」じゃなくて「スコープの外側」な

from
{
  �@
  where
  {
    �A
    select
    {
      �B
    }
  }
}

「別名を展開」する命令を�@〜�Bのどこに書けばいいか分かるだろ?

C言語なんかだとどんな馬鹿でも「前」に書けば自動的にスコープ内に入るから
君みたいなプログラミング初心者ほど「前」に書けばいいという固定観念に縛られて
こういうミスをやってしまうんだよ
君はもっと勉強して脳みそを鍛えたらSQLを使いこなせるんじゃないかなあ
0018NAME IS NULL2012/05/28(月) 11:51:04.41ID:???
ちょっと訂正
君はもっと勉強して脳みそを鍛えたらSQL「も」使いこなせるんじゃないかなあ
0019NAME IS NULL2012/05/28(月) 15:29:32.54ID:???
SQLにスコープという概念が存在するとは思わなかった。
0020NAME IS NULL2012/05/28(月) 16:18:18.30ID:???
>>19

SELECT table1.column1, table2.column2 FROM table1 INNER JOIN table2 ON ・・・

テーブル名で修飾してるのはスコープの概念そのものなんだが理解できるかい?
0021NAME IS NULL2012/05/28(月) 17:57:59.12ID:???
処理順無視してないとか言って
SELECT COUNT(foo) AS cnt FROM hoge WHERE cnt > 2 GROUP BY bar;
これを
WHERE COUNT(foo) > 2
こんな展開したら明らかに処理順無視してるじゃねーか・・・
WHEREの方が先に動くっていってんだからよう
たまたまWHERE句でcount関数が使えないだけだろ
0022NAME IS NULL2012/05/28(月) 19:29:41.44ID:???
>>19
サブクエリとか分かりやすいスコープ
0023NAME IS NULL2012/05/28(月) 19:31:34.32ID:???
>>21
彼は、そういうのはエラーになればいいだろ、展開して問題ないものだけ動けばいいんだという言い分だと思う。
展開して問題ないものの判断ができない場面があることに気づいてないみたいよ。
0024NAME IS NULL2012/05/28(月) 20:12:30.91ID:???
>>10は非手続き型言語をまったく理解してない
そもそも 列名 AS 別名 とはselect句の出力の属性を宣言しているのであって、プロシージャ(手続き)を宣言しているわけではない
それにも関わらず「それより前に別名を展開する処理を追加しただけですね。」というのはプロシージャを追加したということになり
もはや非手続き型言語ではない
そんな基本的な矛盾に気がつかないようではプログラマとして致命的だ
0025NAME IS NULL2012/05/28(月) 22:24:55.48ID:???
なんだ、楽しみにして帰ってきたのにもう来ないのか?なかなか強烈だったから振り返ってみよう。
いつも過疎で平穏な、DB板のPostgreSQLスレに彼は来た。

「試したところ、エラーになりました。
psql=> select id as ticket_id from tickets where ticket_id < 10;
ERROR: column "ticket_id" does not exist」

どうにもこのエラーが受け入れられないらしい。
思えば初めから他人の話にはほぼ全て否定的であった。
前スレ>>957,968,971,975,978
(そもそもやつがsqlに対して無知だからおかしてる間違いだろ?
字句解析・意味解析の知識はあるか知らんが(ほんとか?評価順の重要さも分かっていないようだが)、
SQLの知識が無いという自覚なしに、誰もsqlを持ち上げたりしてる訳じゃなく仕様を読めって言ってるだけなのに)そう俺は思った。

>SQL信者の必死さに涙が止まらない
あとからこんな言葉が吐かれることになるとは、
この時はまだ思いもしなかった。この言葉は、俺の今後の人生をきっと豊かにしてくれるだろう。

前スレ>>990
>構文解析や意味解析についての、簡単でもいいので基礎知識があれば、
>別名をwhere句で使えるようにするのが特に困難なことではないはずだ、
>というのがすぐにわかるんだけど。
>たぶん構文解析についての基礎知識がないやつが、SQLの仕様書がどうのこうの
>いっているのだろう。
>なぜそういう仕様になっているのかが聞かれているのに、SQLの仕様を読めと
>答えてるのは滑稽すぎる。

最高に恥ずかしい!!!この晩はこれをつまみに一杯やった。
評価順があると、具体例挙げてどう動くか考えろと、言っても無駄だった。
前スレ>>1000
>だーかーら、そのまえにSQLの構文解析と意味解析をしてるでしょうが。
>構文解析 → 意味解析 → FROM句→WHERE句→SELECT句・・・
>            ^^
>           ここで構文解析木を操作して別名を展開すればいいだけ。
>なんでwhere句やselect句の順番にこだわるの。whereやselectの処理に入るまえに別名を展開すればいいだけなのに、なんでこんなことがわからないの。
>なんで結果が変わると思ったの?
とか頓珍漢なこと言っちゃって結局クエリの内容見ないのだ。
(なんで順番にこだわんないの?)よいこのみんなは思ったはずだ。
その後も同じような主張を繰り返した。
(自信満々なのはいいが、人の話をちゃんと聞かないようじゃ何のために質問しに来たんだか…
何かもっと面白い提案でもでるのかと思ってたのに…まぁこんな日も有るか)
大変ワイルドな出来事でした。
0026NAME IS NULL2012/05/28(月) 23:23:23.59ID:???
なっが。
てか、元質問者と同一認定していいのか?
0027NAME IS NULL2012/05/29(火) 19:56:25.45ID:???
気付いて、顔から火吹いて逃げちゃったんだろうか。
正直なところどう感じたのかをお伺いしたい。
0028NAME IS NULL2012/05/29(火) 20:33:19.53ID:???
あれほど自信満々だったら、標準化してるISOなり
pgsql-jpで石井さんに詰め寄るくらいして頂きたかった。
0029NAME IS NULL2012/05/29(火) 20:42:50.92ID:???
ここで復讐を果たす為に専門的知識を必死に習得してるのではなかろうか
0030NAME IS NULL2012/05/29(火) 21:34:53.21ID:???
いや、きっとmysqlスレで同じ事を質問する
「試したらエラーになりました。簡単なことなんですけど、どうしたらできますか?」ってね
もはや何かの陰謀に違いない
0031NAME IS NULL2012/05/29(火) 23:11:12.20ID:???
mysqlだったらあの程度の出鱈目仕様、もう実装してんじゃね?
0032NAME IS NULL2012/05/30(水) 15:16:04.86ID:???
死者に鞭打つ真似はおよしなされ
0033NAME IS NULL2012/05/30(水) 16:47:44.19ID:???
叩くほうがここまで必死なのにはわけがあるんだろ。
0034NAME IS NULL2012/06/01(金) 14:48:03.25ID:???
9.2 32コアまでスケールは凄いな。
index only scanも導入されるし、
カスケードレプリケーション、range型とかも。
もうあれだな。
0035NAME IS NULL2012/06/01(金) 14:53:46.91ID:???
客にバージョン上げようぜっていいやすくなるな
0036NAME IS NULL2012/06/02(土) 00:17:26.28ID:???
やっぱりポスグレは最先端なのですね!
マイエスキューエラーに馬鹿にされなくて済みます
0037NAME IS NULL2012/06/03(日) 00:11:20.77ID:???
ちょっと前までMySQL使ってて、ポスグレちょぼちょぼ使い出したとこやけど、
WITHが便利過ぎてワロタ。

とあるテーブルAから、条件に合うレコード削除して
その内容を「削除済み」用のテーブルBに書いて、
ついでにテーブルCの該当レコードのフラグカラムを書き換え。

これが一文一発で出来て、明示的なトランザクション制御要らず。
気持ち良過ぎやろ。
0038NAME IS NULL2012/06/03(日) 08:31:40.10ID:???
writableCTEはpostgres独自だから意識して使うんだぞ
0039NAME IS NULL2012/06/06(水) 17:49:32.07ID:???
インストーラーで簡単セットアップのWebベースPostgreSQL管理「TeamPostgreSQL」
http://www.moongift.jp/2012/06/20120604-3/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+moongift+%28MOONGIFT+-+%3F%3F%3F%3F%3F%3F%3F%3F%3F%3FIT%3F%3F%3F%3F+-%29&utm_content=LocalHost
0040NAME IS NULL2012/06/08(金) 07:38:08.88ID:???
Windowsの32bit版と64bit版のベンチマーク比較の資料ってどこかにあるんでしょうか?
0041NAME IS NULL2012/06/13(水) 07:34:48.22ID:???
CentOS5.8とPostgreSQL8.4を使っています
logファイルにSQLが出力されるのを抑止し
たいのですが、どのようにすればよいで
しょうか?
0042NAME IS NULL2012/06/13(水) 09:42:39.93ID:???
postgresql.confをいじれ
見てわかんなかったらマニュアルを読め
0043NAME IS NULL2012/06/13(水) 12:13:08.03ID:???
>>41
http://www.postgresql.jp/document/8.4/html/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-WHEN
log_min_error_statement PANIC
かな
0044NAME IS NULL2012/06/13(水) 14:14:10.20ID:???
いやまあ、log_statement だと思うけど
わざわざ設定しないと出ないはずだが。
0045NAME IS NULL2012/06/13(水) 18:19:53.31ID:???
うん、デフォだと出ないよね
0046NAME IS NULL2012/06/14(木) 17:11:51.92ID:???
alter table テーブル名 add column カラム名
するときに、場所って指定できますか。
たとえばカラム「age」をカラム「name」と「gender」のあいだに追加したいとか。
0047NAME IS NULL2012/06/14(木) 18:24:58.88ID:???
>>46
普通はテーブル作りなおさないとできないんじゃなかったかな。
RDBはもともとカラムの位置を気にしないものだし。
0048NAME IS NULL2012/06/14(木) 18:56:18.06ID:???
SELECT時に順番決めるしね。
*指定したくて気になるならView作ればいいし、
DROPして作りなおすのもありっちゃあり
0049NAME IS NULL2012/06/14(木) 21:01:55.02ID:???
並べ替えが出来るdbもあるのよね
postgresの場合は出来たら便利なのは分かってるけど他に優先度が高いのがあって、手掛ける人がいないってどこかで読んだような
0050NAME IS NULL2012/06/14(木) 21:03:48.39ID:???
これだ
http://wiki.postgresql.org/wiki/Alter_column_position
0051NAME IS NULL2012/06/14(木) 22:10:32.27ID:???
1・2・3
0052NAME IS NULL2012/06/17(日) 14:29:53.21ID:???
順番が気になる人は、ほとんど初心者しかいないから
対応するのもアホくさいと思うがなあ
0053NAME IS NULL2012/06/17(日) 14:54:04.60ID:???
>>52
変更コストがどうかと言う問題はあるけれど。
20列のテーブルで3-5列に処理区分1,処理区分2,処理区分3とあり、
処理区分4だけが21列目。しかも、20列目の入力時刻の後になるというのは
いろいろな意味で好ましいことではない。
0054NAME IS NULL2012/06/17(日) 15:44:40.84ID:???
その考えの先には、
  :
 予備1  varchar(100)
  :
 予備2  varchar(100)
  :
があったりして。
0055NAME IS NULL2012/06/17(日) 17:29:01.34ID:???
>>53
すべてのユーザがviewを通してすべてのテーブルを管理しているという訳では
ないからね。やはり列の並び順も少なくとも管理しやすさには大きく関係する。
一般にはね。
0056NAME IS NULL2012/06/20(水) 15:38:39.38ID:???
pg9.1.4のpg_trgmを使った全文検索の速度について

CREATE TABLE documents
(
id serial NOT NULL,
document text,
CONSTRAINT pky PRIMARY KEY (id )
);
CREATE INDEX idx
ON documents
USING gin
(document COLLATE pg_catalog."default" gin_trgm_ops)

documentカラムには、
平均1000文字の英文が100万行格納されています。

上記の状態のテーブルに次のSQLを実行しました。

--「keyword etc」が含まれているかどうか確認
SELECT EXISTS(
SELECT * FROM documents WHERE document_text like E'%keyword etc%'
);

実行した結果は、0.5秒〜300秒を超えてタイムアウトするものまで様々です。
(「keyword etc」の場合10.8秒でした。)

設定ファイルの編集やSQLの改善でもう少し早くすることはできないでしょうか。

ちなみに、実行している間は、実行しているコアのCPU使用率が100%になっています。
0057NAME IS NULL2012/06/20(水) 16:54:48.99ID:???
速度改善とは関係ないけど、EXISTS使うと、1件見つかった時点で切り上げそうな気がする。
0058NAME IS NULL2012/06/20(水) 18:34:00.40ID:???
pg_trgmを使いたいのは複数の単語からなる語句を文章中から検索したいから?
トリグラムを使わずに
CREATE INDEX idx ON documents USING gin(to_tsvector(document));
として、
SELECT EXISTS(
SELECT * FROM documents WHERE document @@ ts_query('keyword & etc') and document like E'%keyword etc%'
);
としたらどうなる?
0059NAME IS NULL2012/06/20(水) 18:35:40.85ID:???

SELECT EXISTS(
SELECT * FROM documents WHERE to_tsvector(document) @@ ts_query('keyword & etc') and document like E'%keyword etc%'
);
のまちがいだった。
0060562012/06/20(水) 18:55:08.87ID:???
>57
ありがとうございます。

1件(1行)でもキーワードがあるかどうかを確認したいので、
そのように1件見つかった瞬間に処理を切り上げてもらえるのが助かります。

>58
ご提案ありがとうございます。
なるほど、一度vector検索してから
連語があるか確認するのですね。

一度テストしてから、またお返事させていただきます。
0061NAME IS NULL2012/06/21(木) 20:53:06.34ID:???
1000文字英文100万行くらいなら全然対したことなさそうだけどな

trgrm自体の検索は大体そこそこ早いんだよ
でもインデックスでヒットした後に実テーブル確認しに行ったりするとそこで速度が落ちる。
だからヒット数が多ければ多いほど遅くなるよ。 特にメモリに実テーブルがのっていない場合。
そんな感じじゃない?>>56
そうであれば、差し支えなければそもそもginでヒットする件数をgin_fuzzy_search_limitで抑えちゃうことができるのでそれを検討してみては?ここに書いてあるよ
www.postgresql.jp/document/9.1/html/gin-tips.html
0062NAME IS NULL2012/06/27(水) 17:48:43.01ID:???
56です。返答が遅くなって済みません。

>>58-59

いくつか検証してみましたが、
今より高速になるものもあれば、むしろ速度が落ちるものもありました。
原因としては、
to_tsvector(document) @@ ts_query('keyword & etc')
の段階で該当する行が大量にあった場合、
そこからは、シーケンシャルなlike検索が行われているような気がします。
(ただ、実行計画では、BITMAP HEAP SCANとなっていますので、
 インデックスを使ってなお遅いということなのかも知れません。)

>61
gin_fuzzy_search_limitを1に設定して実行してみました。
確かに実行速度は、早くなったのですが、有るはずの文字列がないと判断されるようになりました。
gin_fuzzy_search_limitを0、または9999999等の十分大きな値に設定すれば、
>56のクエリで[True]が帰ってくるSQLでも、
gin_fuzzy_search_limitの値を小さく(例えば1や10)にすると
[FALSE]が帰ってきます。

where句でヒットした行数を絞って返すという認識なのですが、
(1000件ヒットしても、gin_fuzzy_search_limitが10ならば、10件しか返さない)
間違っておりますでしょうか?
0063NAME IS NULL2012/06/28(木) 20:49:09.44ID:???
そこで設定した数字は正確に有効な行数を表す訳じゃないのよ。
なので小さく設定しすぎると、正しい結果が帰らないこともある。
事情を説明するのが面倒(というかソース追う時間が無くて自分も正確に把握してない)
なので、興味があれば調べてみて。

ということで、速度(と結果)が妥協できるところで、
小さく設定するのがよし。
0064NAME IS NULL2012/06/28(木) 21:19:43.23ID:???
あ、たくさんの行がヒットすると遅いってのは、

 ginインデックスのみからwhere句条件で探す(これは早い。転置なんで当たり前)
 →正しいかどうかヒープ(メモリに納められてる実タプル(もちろん無ければディスク読む))をもう一回条件で調べる
(bitmapの説明は省いた)

て手順だから。プランでrecheckって出てるでしょ?
インデックスっていつも正しい情報が入ってるって限らないのよpgは
0065NAME IS NULL2012/06/29(金) 11:17:17.20ID:Q8TsbVeK
os: CentOS 5.2 locale=C
postgresql 9.1.2 locale=C, DBの文字コードはUTF-8

接続クライアント
a. WindowsXP上のTeraTerm UTF-8
b. JDBC type4接続 Java文字コードはUTF16BE

2点質問があります。
(1) a.において、psqlが出力するエラーメッセージが文字化けします。
SELECT結果(UTF-8)は問題ありません。
文字化けを解消する、またはメッセージを英語にする方法をご存知であれば教えてください。

(2) b.において、JAVA例外(PSQLException)のメッセージが文字化けします。
ログファイルの文字コードはUTF-8。
SELECT結果(UTF-8)は問題ありません。
こちらも文字化けを解消する、またはメッセージを英語にする方法をご存知であれば教えてください。
0066652012/06/29(金) 11:19:28.71ID:Q8TsbVeK
追記です。
osのタイムゾーンは日本です。

よろしくお願いします。
0067NAME IS NULL2012/06/29(金) 16:30:32.16ID:???
http://www.postgresql.jp/document/current/html/multibyte.html#AEN24155
を参照して文字コードを指定する必要があるのかもしれない。
0068NAME IS NULL2012/06/29(金) 18:04:40.36ID:???
エラーメッセージの話でしょ?
CentOS 5.2 locale=C
て言ってるけど、具体的には何で判断して
どこに設定されてる?LC_ALL?LANGUAGE?LANG?

とりあえずそこら辺を確認して

それからpostgresql 9.1.2 locale=Cていってるけど、
postgresqlはソースから入れたんだよね?
ちゃんとインストールしたpostgresqlが動いてる?
(たまに、インストールしたのにシステムにデフォルトで入ってるpostgresあげてる人とかいるので)

何処に設定したものからCって判断してる?
"実際に動いてるpostgresの"postgresql.confで
lc_messages = 'C'
lc_monetary = 'C'
lc_numeric = 'C'
lc_time = 'C'
になってるかい?

psqlでの
select name, setting from pg_settings where name like 'lc\_%';
の結果
name | setting
-------------+---------
lc_collate | C
lc_ctype | C
lc_messages | C
lc_monetary | C
lc_numeric | C
lc_time | C
みたいにconf(と思っているもの)と一致してるかい?


それを確認した上で、
export LANG=C
してpsqlコマンド使っても化け文字?

0069652012/06/29(金) 21:27:43.37ID:CwgX9y5+
お二方ありがとうございます。
おかげさまで(1) については解決しました。
原因は、トラブルシュートのテスト用に用意した、意図的に壊した設定ファイルが読まれていました。
正しい設定ファイルに置き換えることで解決しています。

(2) については状況が変わりません。
どうも本体ではなくJDBCドライバの問題のような気がします。

0070NAME IS NULL2012/07/07(土) 15:32:17.19ID:???
Win7でレプリケーションうまくいかないなぁ。
0071NAME IS NULL2012/07/24(火) 13:30:06.59ID:???
pg_dumpでデータ以外のみをエクスポートする方法はないでしょうか?
0072NAME IS NULL2012/07/24(火) 19:06:10.69ID:???
>データ以外のみ
schemaのことだね?
オプションにあるべ
0073NAME IS NULL2012/07/24(火) 21:01:08.03ID:???
-s
0074NAME IS NULL2012/07/24(火) 21:07:44.77ID:???
ありがほー
0075NAME IS NULL2012/08/03(金) 16:19:20.68ID:???
http://www.postgresql.jp/document/pg823doc/html/datatype-numeric.html
ここに
integer 4バイト
bigint 8バイト
とありますが、これは64bit版でもそうなのでしょうか。
0076NAME IS NULL2012/08/04(土) 16:42:13.17ID:???
>>75
YES. 32/64bitで差はない。
0077NAME IS NULL2012/08/07(火) 10:10:03.88ID:???
>>76
ありがとうございます。
いちおう確認ですけど、x86_64ならintが64bitだから、PostgreSQL 64bit版でもintegerとbigintに性能の差はないと考えていいですよね?
0078NAME IS NULL2012/08/07(火) 11:13:07.24ID:???
CPUのビット数やコンパイラのintの長さと
DBのINTに関係は無いよ、環境に寄らずMDBSが決めたサイズになる。
0079NAME IS NULL2012/08/07(火) 16:56:07.46ID:???
(C)コンパイラのintのサイズにしても、
64bit環境だからって64bitとは限らないし。
というか32bitのままって方が多そう。
0080NAME IS NULL2012/08/15(水) 12:46:09.78ID:???
Postgres9.1.0をソースコンパイルでOSX山ライオンにインストールしようとした。
が、

configure: error: in `/Users/jiro/Downloads/postgresql-9.1.0':
configure: error: C compiler cannot create executables

と文句を言われ途中で止まってしまいます。
対処法をご存知のかたがいましたらご教授願います。
0081NAME IS NULL2012/08/15(水) 13:21:08.32ID:TlE9Z+hr
あげます。
0082NAME IS NULL2012/08/15(水) 14:06:21.38ID:???
試しに9.1.4ダウンロードしてビルドしてみたけど、問題なかったよ。
Xcodeとコマンドラインツールは入れてるよね?
0083NAME IS NULL2012/08/16(木) 12:45:21.74ID:???
postgresqlでLEFT OUTER JOINをしたいんだけど
片方のテーブルの型がtextでつなげる方の型がinteger
おまけにtextの方が0で頭が埋ってる10桁なんだがどうやるんですか?
教えて下さい偉い人

SELECT * FROM a LEFT OUTER JOIN b ON a.accountcode = to_char(b.id, '0000000000');
これじゃなぜかだめっす
0084NAME IS NULL2012/08/16(木) 13:48:01.64ID:???
どうだめだったの?
a.accountcode::INT とかでいかない?
0085NAME IS NULL2012/08/16(木) 19:01:32.33ID:???
これでどう?
to_char(b.id, 'FM0000000000');

偉くないので分からないけど、こっちの方が良いかもしれない。
to_char(b.id, 'FM0999999999');
0086NAME IS NULL2012/08/22(水) 01:02:20.86ID:???
不慣れなplpgでトリガ関数いっぱいつくらにゃあかんのですが、
デバッグのいい方法ないですかね?
PgAdmin�Vだと関数のデバッグのみでトリガ関数のデバッグができないようでして
0087NAME IS NULL2012/08/22(水) 02:06:49.47ID:???
RAISE文を使ってprintfデバッグくらいしか思いつかないなぁ。
0088NAME IS NULL2012/08/22(水) 08:02:55.65ID:???
そうですかー。んじゃ今日もトリガと格闘してきます。
0089NAME IS NULL2012/08/23(木) 16:35:57.98ID:???
textsearch_sennaで30個にパーティションに分割したテーブルを
selectすると、必ずpostgresのプロセスごと落ちるんだけど、
何か方法ないですか?

分割した個々のテーブルにならselectしても落ちないんですが、
個々のテーブルをselectするSQLを5つくらいunionでつなげてもやっぱり落ちます...
0090NAME IS NULL2012/08/29(水) 02:04:44.97ID:???
9.2が出たら起こしてくれ
0091NAME IS NULL2012/08/29(水) 10:19:16.67ID:???
PostgreSQL 9.2 RC1 Available for Testing
Posted on 2012-08-27

だいぶ先かな
0092NAME IS NULL2012/08/31(金) 08:57:08.31ID:???
マイエスキューエラーに虐められた時に言い返す方法教えて
0093NAME IS NULL2012/08/31(金) 13:07:04.38ID:???
>>92
比較スレへどうぞ。

MySQL vs PostgreSQL Part2
http://toro.2ch.net/test/read.cgi/db/1123011800/
0094NAME IS NULL2012/09/01(土) 19:25:06.73ID:???
>>92
飼い殺し乙

とか言ってやれ。事実だし。
0095NAME IS NULL2012/09/02(日) 11:52:33.57ID:hfAxyDdY
MySQLだと1つのDBに一人のユーザを閉じ込めるっていう隔離ができるんですが、
PostgreSQLでもできますか?
やりかた教えてください><;
0096NAME IS NULL2012/09/02(日) 11:59:14.43ID:???
initdbで作成するとき、場所変えればいい。
複数作れる。同時に起動するときは、それぞれのpostgresql.confで
ポート変えないとならんけどね。
0097NAME IS NULL2012/09/02(日) 12:31:47.63ID:???
superuserにしなければいいんでは?
0098NAME IS NULL2012/09/03(月) 00:12:18.97ID:???
>>96 のようにDBクラスタごと分ける
pg_hba.conf でログインできるDBを制限
スキーマ + ロールでアクセス制限

どれでもお好きに。ちなみに、MySQLのDB ≒ Postgresのスキーマ だと思ったほうがよいかも。
0099NAME IS NULL2012/09/06(木) 11:36:17.07ID:???
idをserialで作ったテーブルがあるんですけど、これをあとからbigserialに変えることはできますか。
alter tableだとsequenceが変わらないような気がします。
0100NAME IS NULL2012/09/06(木) 12:09:39.64ID:???
>>99
自己レスです。
¥d hogehoge_id_seq
すると、なんとシーケンスはbigintで作られているではあーりませんか。
これなら alter table hogehoge alter column id type bigint だけでいけそうです。
0101NAME IS NULL2012/09/06(木) 22:35:39.12ID:???
そもそも serial は、なんでデフォルトで bigserial 相当にならないんですかね?
歴史的な経緯?
0102NAME IS NULL2012/09/07(金) 05:15:46.93ID:???
"int" がデフォルトで32bitみたいなもんじゃないの。64bitはbigintだし。
0103NAME IS NULL2012/09/07(金) 12:01:00.99ID:???
そうころころ替えられないからだろう。
足りなくて困ってる人数ないだろうし。
0104NAME IS NULL2012/09/07(金) 17:04:23.71ID:???
相変わらずintが最速だからじゃない?
0105NAME IS NULL2012/09/17(月) 15:26:30.91ID:fmu2IRis
PostgreSQL 9.2 has been released!
http://www.postgresql.org/
0106NAME IS NULL2012/09/17(月) 15:49:57.08ID:???
>>90
おい、起きろ
0107NAME IS NULL2012/09/17(月) 19:18:56.82ID:???
ん、もうかい?
意外と早いんだな。
0108NAME IS NULL2012/09/17(月) 19:56:17.28ID:???
range 型キタコレ
0109NAME IS NULL2012/09/17(月) 21:56:19.47ID:4clxm/pY
はじめまして。postgresqlのことをあまり知らない初心者インフラ担当です。
質問があります。
postgresql8.1を使用しているDBサーバがあり、
毎日3:00からVACUUMとDBバックアップを行っています。
通常ではVACUUMに30分くらいかかっていたのですが、
1週間前あたりからVACUUMに6時間くらいかかるようになってしまいました。

今回、原因究明のため商用機を調査することになったんですけど、
VACUUMが急に時間がかかるようになることに心当たりがある方はいるでしょうか?
また、調査する場合はどのあたりから調査していくべきでしょうか。
0110NAME IS NULL2012/09/17(月) 23:45:11.49ID:???
いくら出す?
0111NAME IS NULL2012/09/18(火) 00:18:25.21ID:WP7LnWlO
解決しました
さーせんw
0112NAME IS NULL2012/09/18(火) 08:00:41.75ID:???
よかったね
0113NAME IS NULL2012/09/18(火) 11:13:20.04ID:???
確かjson使えるよな?待ってたよ〜ん。
0114NAME IS NULL2012/09/24(月) 03:06:22.66ID:???
配列を引数にして、WHERE節で使う関数のWHERE節はどう書きますか?

WHERE serial IN ?$1?
0115NAME IS NULL2012/09/24(月) 03:12:50.60ID:???
WHERE serial = ANY( $1 )
NULLへの対応が必要ならば、別途 調整がいる。
0116NAME IS NULL2012/09/24(月) 03:45:22.40ID:???
あざっす^^
0117NAME IS NULL2012/09/26(水) 20:42:11.37ID:wFrvL7PY
db_syntax_diffについて、知っている情報あれば、
教えてください!!
0118NAME IS NULL2012/09/28(金) 03:21:24.92ID:???
まずは知っている情報を出してくださいよ。
0119NAME IS NULL2012/09/30(日) 15:47:01.67ID:???
バージョンが9.2になって小文字に変えないとエラーになるコマンドとかあるな・・・。
LANGUAGE 'C'をLANGUAGE 'c'にしないと動かないってとこでハマったわ。'
0120NAME IS NULL2012/09/30(日) 19:58:41.68ID:???
テスト
0121NAME IS NULL2012/10/01(月) 10:52:13.58ID:???
9.2の前はいくつ使ってたの?
select * from pg_language; でCかcの違いじゃないのかなあ。
0122NAME IS NULL2012/10/01(月) 11:32:18.61ID:???
>>121
8.4使ってた。そこでインストール済みの拡張言語見れたのか・・・。
0123NAME IS NULL2012/10/04(木) 01:46:06.95ID:???
20年くらい前から Oracle 使ってて、10年くらい前に全面的にすべてのシステムを PostgreSQL に移行しました。
新規開発も全て PostgreSQL です。現在まで何も問題ありません。
ですが、最近、世界的に MySQL にシェアを奪われ続けており、この先ずっと PostgreSQL を使い続けるべきか、正直、迷っています。
どんなものでしょうか?
0124NAME IS NULL2012/10/04(木) 02:40:20.37ID:???
MySQL自体が存在しなくなる可能性を考えるべき。
0125NAME IS NULL2012/10/04(木) 02:53:14.19ID:???
>>124
なるほど。
よく分かりました。吹っ切れました。
ありがとうございます。
0126NAME IS NULL2012/10/04(木) 06:44:27.97ID:???
やけに納得するのがはえーなw
0127NAME IS NULL2012/10/04(木) 09:10:57.91ID:???
MySQLがなくなる可能性もPostgreSQLがなくなる可能性も同じようなもんでしょ
だから>>123は杞憂だよ
0128NAME IS NULL2012/10/04(木) 10:11:08.85ID:???
>>126
心情的には PostgreSQL と心中してもいいかな、くらい思ってるので。
0129NAME IS NULL2012/10/04(木) 11:38:42.60ID:???
今使ってるバージョンがいきなり使えなくなるわけじゃないからな。
無くなってから次考えりゃいい
0130NAME IS NULL2012/10/04(木) 13:20:44.90ID:???
むしろOracleに買われたMySQLのほうが消える可能性高かったりして。MariaDBが一応あるけどねぇ。
0131NAME IS NULL2012/10/04(木) 23:18:24.26ID:???
他人が書いたマニュアルをみながら、作業を進めてると壁にぶつかってしまいました。。。

>createdb -U Postgres -O ユーザ名 DB名
と入力すると、"createdb : コマンドライン引数が多すぎます。(始めは"?O")

と言われるのですが、何がダメなんでしょうか?
バージョンは9.0.4です。
(普段は電気屋さんしてます。)
0132NAME IS NULL2012/10/04(木) 23:44:33.46ID:???
>>131
ユーザ名はアルファベットオンリー?
0133NAME IS NULL2012/10/05(金) 01:20:55.65ID:???
いっつも

$psql -U postgres
#create user ユーザ名;
#create database DB名 owner ユーザ名;

でやってるけど、そんなコマンドあるんだな。
0134NAME IS NULL2012/10/05(金) 02:17:46.03ID:???
>>133
CREATE DATABAS は、 SQL コマンド
createdb は、CREATE DATABASE の shell スクリプトラッパー
0135NAME IS NULL2012/10/05(金) 08:57:01.29ID:???
>>131
はい、そうです。全部小文字。
この前にユーザ作成しました。
0136NAME IS NULL2012/10/07(日) 12:03:49.94ID:???
まず Postgres で蹴られると思うけどな、、、 postgres でやってる?
0137NAME IS NULL2012/10/09(火) 18:00:01.74ID:???
textsearch_sennaで前文検索するとき、
指定する単語は16個までって決まってる?

where col %% '単語1 or 単語2 or 単語3 or .... or 単語16'

の検索結果と

where col %% '単語1 or 単語2 or 単語3 or .... or 単語16 or 単語17'
や
where col %% '単語1 or 単語2 or 単語3 or .... or 単語16 -単語17'

などの結果が全部同じなんだけど、
postgresの仕様?
sennaの仕様?
textsearch_sennaの仕様?
0138NAME IS NULL2012/10/10(水) 04:00:10.34ID:???
>>136
あ、それはこのスレに書き込む時、携帯の自動処理で大文字になってしまったのです。。。
0139NAME IS NULL2012/10/10(水) 10:01:42.30ID:???
コマンドライン引数が云々、はシェルが出してるんかな
環境はWindows?
0140NAME IS NULL2012/10/10(水) 10:12:43.90ID:???
>>139
「>」ってなってるからWindowsっしょ
0141NAME IS NULL2012/10/12(金) 14:08:58.85ID:???
>>137
or検索だからなのでは・・・?
あと、postgresの全文検索はインデックスが壊れる事がちょくちょくあったような。

そもそもsenna使ってる時点でノイズは結構出るから、あまり気にしなくていいのでは?
0142NAME IS NULL2012/10/12(金) 16:43:38.89ID:???
みなさん、PostgreSQL のメジャーバージョンアップって
どうしてます?
うちの会社は基本的に24時間365日営業しているので、
ネット(システム)を停止できないです。
事情があれば、顧客に事前に通知して1日とか一斉休業するんですけど、
やっぱ、なかなかバージョンアップだけではそこまでできません。
セキュリティホールとか殆ど無いですからね、PostgreSQL…

0143NAME IS NULL2012/10/12(金) 16:48:35.98ID:???
>>142
そんな装備で大丈夫か?
0144NAME IS NULL2012/10/12(金) 18:25:20.96ID:???
psqlで変数って使えないの?
$name = 'foobar';
select * from table where name = $name;
とかしたい。
0145NAME IS NULL2012/10/12(金) 19:15:08.39ID:???
>>144
若干使いづらいところはあるが、 \set と :varname 。
http://www.postgresql.jp/document/9.2/html/app-psql.html#APP-PSQL-VARIABLES
0146NAME IS NULL2012/10/13(土) 00:44:44.96ID:???
>>145
さんくす
0147NAME IS NULL2012/10/13(土) 01:37:16.87ID:???
>>143
すいません、「装備」とは?
0148NAME IS NULL2012/10/13(土) 03:02:24.33ID:???
>>142
どういうシステムか知らないけど、普通に動いて特に困らないならバージョンアップはしなくていいんじゃない。
さすがに未だ7使ってるなら計画練ってアップデートしたほうがいいと思うけど。
0149NAME IS NULL2012/10/13(土) 07:14:23.17ID:???
質問者とは別人だけど興味深い質問なのでおれも知りたい。
>>148
それはうまい解決方法がない、ということでいいのかな。
0150NAME IS NULL2012/10/13(土) 14:31:39.67ID:???
>>149
そういえばこの質問は止めたらマズいシステムで止めずにアップデートするには?だったか。
Slonyとpgpool使えばノンストップでバージョンUPいけるらしいけど、テーブル増えるから俺は使いたくないなー。
1日止めるような要件の時に一緒にやっちゃうのがいいんじゃない。
0151NAME IS NULL2012/10/17(水) 01:34:55.10ID:I0xYCeC3
化学屋やってます。 PostgreSQL 8.4 です。
時々、大量のレコードを更新や挿入するのですが、
とても時間がかかるため、
BEGIN; DROP TABLE して、
COPY table FROM stdin;
....
\. COMMIT;
のようにしようと考えています。
この処理の実行中、tableにアクセスされても問題ないのでしょうか?
あるいは BEGIN; の直後に LOCK table; は必要なのでしょうか?
レベルの低い質問ですみません。
01521512012/10/17(水) 01:40:58.77ID:???
すみません、あまりにもレベルの低い質問で。その心情を吐露すれば、つまり
レコードレベルのロックであれば、テーブルそのものはなくなるわけではないので
普段は気にしないでSQLを書いていたのですが、今回初めて テーブルそのものを
DROP するため、不安になっているのです。トランザクションってのはつまり、
ROLLBACK さえすれば DROP そのものも無かったことにできるものだろうとは思うし、
DROP してしまう table をLOCK してもしょうがないだろうし・・・。混乱中です。
0153NAME IS NULL2012/10/17(水) 06:47:11.44ID:???
>>152
PostgresqlだとDROP TABLEやTRUNCATEやCOPYコマンドにもトランザクション制御ができるのはそのとおり。
DROP TABLEやTRUNCATEを実行すると、内部でACCESS EXCLUSIVE LOCKがかけられて、処理中は自分以外が
対象のテーブルにアクセスできなくなる。
http://www.postgresql.jp/document/8.4/html/explicit-locking.html#LOCKING-TABLES
01541512012/10/17(水) 12:09:59.64ID:???
>>153
ありがとう御座います。
自動的にACCESS EXCLUSIVE LOCKがかけられるのですね。すっきりしました。
ユーザー側からはリードオンリーの巨大なテーブルだったので
挿入や更新の度に >>152 を行おうと思います。
0155NAME IS NULL2012/10/17(水) 20:16:30.11ID:???
もっと基本的な部分を見直すと10倍ぐらいは速くなるとかいうパターンじゃないかねぇ。。。
0156NAME IS NULL2012/10/17(水) 23:20:15.92ID:???
>>155
何千件ものレコードを 更新または挿入するんです・・・。
インデックスをDROPしてからINSERT or UPDATE して、
またインデックスをCREATE するというのもやってみたんですが多勢に無勢でして。

状況としては管理者のみが編集できるマスターテーブルの更新です。
もちろん何千件といっても、実際の変更箇所は全レコードの数%なんですが、
変化したかどうかサーバーに問い合わせるのも時間かかるし、
そのマスターテーブルが Excel という仕様なので、>>151に考えが至ったのです。
0157NAME IS NULL2012/10/17(水) 23:48:10.34ID:???
業務アプリのバッチ系なんかだと、毎日何万件ものデータを
(複数の表に対してインサートやアップデートだけじゃなく計算したりして)
処理するというのを分のオーダーでやってるんですけど。。。

まともなプロに見せたら、1時間ぐらいで10倍速くしてくれると思うよ。
0158NAME IS NULL2012/10/17(水) 23:59:48.81ID:???
UPDATEにINDEXが使われてなくて遅いだけだったりして
0159NAME IS NULL2012/10/18(木) 00:02:00.85ID:???
たったの数千件なのか。普通のトランザクションかけるだけでいいんじゃないの。
0160NAME IS NULL2012/10/18(木) 01:17:19.92ID:???
>>157 >>159
いや、挿入更新処理を 遅くとも2〜3秒以内で終わらせたいのです。

>>158
そうなんです。状況によってそれもありえるのが厄介で・・・。
0161NAME IS NULL2012/10/18(木) 02:05:42.92ID:???
>>160
>いや、挿入更新処理を 遅くとも2〜3秒以内で終わらせたいのです
じゃ今、何秒かかってるの?
0162NAME IS NULL2012/10/18(木) 02:09:31.97ID:???
>>161
ひどいときだと20〜30秒くらいかかってました。
COPY で書き換えた所、1秒くらいで終わりました。
0163NAME IS NULL2012/10/18(木) 06:24:01.99ID:???
たぶん更新系のSQLを数千回発行してるから、毎回ディスクをflushしに行って遅くなってるんだと思う。
たとえDELETEとINSERTを使って20〜30秒かかっても、その間も他のユーザーは更新前のテーブルを参照できるんだから、
数秒のテーブルロックをかけるよりもシステムのロックがなくていい気がするけど、
COPY文を使って1秒テーブルがロックする程度のことを許容できるなら、そのやり方も早くて簡単でいいと思う。
0164NAME IS NULL2012/10/18(木) 07:43:14.99ID:???
>>160
それがわかってるならINDEXが使われるようにしたらいいだけでは?
0165NAME IS NULL2012/10/18(木) 13:35:17.43ID:???
>>163
おっしゃるとおりなんだと思います。今はまだマスターテーブルの管理者が一人だからいいですが、
そのうち別のキャンパスにもおきたい、とかなってくると話がややこしくなってきそうなので
そのときに備えて今から前任者の「Excelでマスターを編集」という状況から脱したいと思います。
ただ、やっぱ便利なんだな・・・いろいろと。

>>164
更新挿入の時にこちら(管理者)がWHERE句で参照する部分のINDEXはもちろん残しています。
ただ、他にも10以上のINDEXがはってあって、それの更新に時間がかかっているのかな?と
おもい削除してみたりしましたが、たいして変わらなかったんです。

今にして思うと COPY文でインデックスのCREATEもふくめて1秒で完了しているということは
INDEXの更新自体は殆ど関係無かったのでしょうかね。
0166NAME IS NULL2012/10/18(木) 14:42:58.91ID:???
UPDATEして、できなければ INSERT するという書き方は
なんとかすっきりできないものなのでしょうかねぇ。
MERGEをずっと心待ちにしているのだけど。

>>165
それにしてもインデックスの作成が早すぎて不思議な気分です。
ちょっと気味が悪いくらいです。と思って見直したら幾つかのインデックスを張り忘れていたw
それでもトータルで2〜3秒・・・やっぱ不思議だ・・・。
0167NAME IS NULL2012/10/18(木) 16:00:20.14ID:???
キャンパスって、、、大学かよ。
まさかパソコン詳しい先生が一人も居ない大学なの?

よくわからんが、多分統計情報が古いんだろ。
オラクルみたいなhintを埋め込むことができないのは不便だが、
例えば1000行INSした時点でanalyzeするとかしてみれば改善されるんじゃないか?
0168NAME IS NULL2012/10/18(木) 18:46:19.58ID:???
雰囲気からアップデートの要否判定とかしてないよね。
それならtruncate->copyでいいと思うわ。
何もdropする必要はないかと。
0169NAME IS NULL2012/10/18(木) 22:54:25.72ID:???
ひょっとして、SQLをクライアントから発行してるんではないだろうか。
INSERT
if not inserted then UPDATE
INSERT
if not inserted then UPDATE
INSERT
if not inserted then UPDATE
...
みたいな感じでクライアントから数千行INSERT/UPDATEしようとしているんなら遅くて当然だよな。
0170NAME IS NULL2012/10/18(木) 23:18:54.64ID:???
>>167
そう。大学系。試薬系のデータベスなんですけど、(あまりいうと特定されるのでよしときますが)
前任者の残していったシステムで、この板のみんなが見たらあんまりなテーブル設計で腰を抜かすと思いますよ?
プライマリ以外にインデックスが付いていないというのもビックリ。
素人の自分ですらガンガン高速化できて楽しめましたよ?
式インデックスをつけたときは本気で感動されました。

>>168
明日、早速 truncate で試してみます。

>>169
まさにそんな感じでぶらうざ経由でphpから更新する使い方ですた。
あまりにも遅いので業を煮やしてこないだターミナル経由でアップするように作り変えたという次第です。
0171NAME IS NULL2012/10/18(木) 23:21:11.10ID:???
>>167
8.4って統計情報の更新、自動じゃないんでしたっけ?
勝手に最適化されているんだと思ってました。
調べてみます、ヒントをありがとうございます。
0172NAME IS NULL2012/10/18(木) 23:27:31.18ID:???
>>170
PK以外でINDEX付けないのは良くある。
というか、たかが数千行程度ならINDEX要らん。
INDEX付けると、それが効いてるSQLが速くなって感動するかもしれんが、
INSERTやUPDATEが遅くなって、全体でみると却って遅くなってる場合がある。
0173NAME IS NULL2012/10/18(木) 23:40:56.52ID:???
>>172
なるほど!勉強になります。案外とそういう配慮があったりして・・・。
0174NAME IS NULL2012/10/19(金) 00:05:23.67ID:???
あと、テーブルが全部メモリに乗っかるようにチューニングした?
規模的に余裕だと思う。
0175NAME IS NULL2012/10/19(金) 06:35:36.65ID:???
式インデックス付けた???
そりゃINS/UPDが遅くなるわな。。。
0176NAME IS NULL2012/10/19(金) 11:09:05.06ID:???
開発環境で使っているpostgresqlのデータベースファイルを、ローカルのディスクから
NFSマウントしたディレクトリに移動しようとしています。
こんなことして大丈夫でしょうか。本番環境ではないので、負荷は心配しなくていいですが、
DBに不整合が発生するようなことはたとえ開発環境といえど避けたいです。
0177NAME IS NULL2012/10/19(金) 11:46:43.41ID:???
>>166
>UPDATEして、できなければ INSERT するという書き方は
>なんとかすっきりできないものなのでしょうかねぇ。
>MERGEをずっと心待ちにしているのだけど。

9.1からこういうことができるようになったらしい。へえー
http://lets.postgresql.jp/documents/technical/9.1/1#syntax
> 例2 : MERGE 文はまだサポートされていませんが、UPDATE できなかったキーを持つ行のみ後から INSERT を行うと、
> 他DBの MERGE や REPLACE 文と同等の機能を実現できます。

0178NAME IS NULL2012/10/19(金) 15:54:35.88ID:???
>>176
良いよ。
バックアップ&リストアなんて基本的にファイルコピーだし。
0179NAME IS NULL2012/10/19(金) 15:56:08.84ID:???
MERGEってのはUPDATEとINSERTを一つにして速くするって目的でできたものじゃないんだけど。
結果的に呼出しが1回になったからその分速くなっただけで。
0180NAME IS NULL2012/10/19(金) 19:55:44.50ID:???
>>176
NFSのsyncオプションを有効すれば不整合は起きないかもしれないけど、
更新がとても遅くなるかもしれない。
0181NAME IS NULL2012/10/22(月) 19:10:59.94ID:???
ユニークキーについて相談です。
こういうテーブルがあったとして、

create table example (
id serial primary key,
name varchar(255) not null,
created_at datetime not null default current_time
);

ここで、名前と日付(nameとdate(created_at))の組み合わせが一意になるように
ユニークキーを作ることはできますか。
dateカラムを作るのが簡単ではありますが、それを作らずに済む方法があれば教えてください。
0182NAME IS NULL2012/10/22(月) 19:20:39.09ID:???
これで作ったユニークキーって、何に使うつもり?
0183NAME IS NULL2012/10/22(月) 19:42:05.69ID:???
ふつうに
CREATE UNIQUE INDEX X ON example (name,created_at);
では駄目なのかい?
0184NAME IS NULL2012/10/22(月) 19:49:57.08ID:???
式インデックスを使って、
CREATE UNIQUE INDEX X ON example (name,date(created_at));
とすればできる。
0185NAME IS NULL2012/10/22(月) 20:11:47.91ID:???
名前と日付の組み合わせだけで、本当に一意になる?
0186NAME IS NULL2012/10/22(月) 20:22:16.56ID:???
そりゃdatetimeの精度でも同じ時刻になる可能性は0ではない。
0187NAME IS NULL2012/10/22(月) 20:22:50.35ID:???
>>184
uniqueにするだけだから、date()する必要ないよ。
0188NAME IS NULL2012/10/22(月) 20:39:57.29ID:???
「時刻」ではなく、同じ「日付」に同じ名前の人がいないことを保証したいんだと思うよ。
式インデックスでいいんじゃないかな。
0189NAME IS NULL2012/10/23(火) 07:05:40.81ID:???
同じ日に同姓同名の人は登録できないって意味とは考えにくいな。
むしろ同姓同名の人が登録した時に、それぞれを識別しようとして日付を足しただけに見える。
(なんで連番使わないんだってことになるけど、多分知らないんだろう)。
0190NAME IS NULL2012/10/23(火) 07:33:52.11ID:???
>>188
だね
0191NAME IS NULL2012/10/23(火) 07:36:34.96ID:???
>>189
人名かどうかなんてかいてないし、実際はユニークな型番かもしれない
まぁあれこれ推測して楽しむのを止めはしないけど
0192NAME IS NULL2012/10/23(火) 10:18:05.21ID:???
>>184
>CREATE UNIQUE INDEX X ON example (name,date(created_at));

おおっ、すばらしい!ありがとうございます。
どうせできないだろうと思ってたのに、できるんですね。きいてみるもんです。

>>188
>「時刻」ではなく、同じ「日付」に同じ名前の人がいないことを保証したいんだと思うよ。

はい、その通りです。同じ名前が1日に高々1件しか登録されないことを保証したかったので。
0193NAME IS NULL2012/10/23(火) 11:04:57.45ID:???
psqlコマンドを実行する時に、なぜかperlがらみのエラーがstderrに出てました。
psqlコマンドが内部でperlを呼び出すことはありますか。
なおpsqlコマンドを使って copy (select ...) to stdout as csv を実行しています。
0194NAME IS NULL2012/10/23(火) 11:57:07.21ID:???
PAGER何にしてる?
0195NAME IS NULL2012/10/23(火) 18:31:21.31ID:???
create_atを日付だけにすれば良いじゃないか。
なんでdate型じゃなくてdatetime型使うのよ?
0196NAME IS NULL2012/10/23(火) 18:32:53.05ID:???
そりゃ欲しいからだろ。
dateとtimeに分けておけばよかったかもしれないけどね。
0197NAME IS NULL2012/10/23(火) 18:41:11.89ID:???
いやいや、date型が別にあるなんて知らないって奴も居るかもしれんよ。
ここでunique indexの作り方聞いてくるぐらいだしな。
0198NAME IS NULL2012/10/23(火) 19:31:26.72ID:???
>>197
>>181
> dateカラムを作るのが簡単ではありますが
0199NAME IS NULL2012/10/23(火) 20:40:29.59ID:???
>>198
dateカラムってのはdate型という意味?
0200NAME IS NULL2012/10/29(月) 13:16:15.84ID:???
psqlで、read-onlyモードっつーものはないでしょうか。viのviewモードのようなやつ。
誤ってデータを改変してしまうのを、万が一でも防ぐために。
0201NAME IS NULL2012/10/29(月) 13:28:56.35ID:???
>>200
psql で最初に SET default_transaction_read_only=on; するとか?
0202NAME IS NULL2012/10/29(月) 14:41:58.89ID:???
selectだけ実行してる分には改変されることはないはずだが。
0203NAME IS NULL2012/10/29(月) 15:07:35.69ID:???
んーまーストアドとか
0204NAME IS NULL2012/10/29(月) 15:57:59.66ID:???
>>200
read-onlyなユーザを作る
0205NAME IS NULL2012/10/29(月) 15:58:49.54ID:???
>>202
serialが上がっていくのが気に食わない人もいるかもしれない
0206NAME IS NULL2012/11/02(金) 16:57:02.96ID:???
最近出たMac miniにCentOS+PostgreSQLをインストールしてpgbenchしてみたんだけど、すごく遅い。
何がいけないのだろうか?

Mac mini: Core i7 2.3GHz クアッドコア
HDD: 5,400rpm 1TB

CentOS release 6.3 (Final)
Linux localhost 2.6.32-279.el6.x86_64 #1 SMP Fri Jun 22 12:19:21 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
PostgreSQL: 8.4.13

$ pgbench -i test
$ pgbench -c 10 -t 1000 test
starting vacuum...end.
transaction type: TPC-B (sort of)
scaling factor: 1
query mode: simple
number of clients: 10
number of transactions per client: 1000
number of transactions actually processed: 10000/10000
tps = 84.380053 (including connections establishing)
tps = 84.399439 (excluding connections establishing)
0207NAME IS NULL2012/11/02(金) 18:40:21.67ID:???
diskが遅いんでは?
0208NAME IS NULL2012/11/02(金) 19:32:05.95ID:???
5400rpmってことは、90rps(秒)なんだから、commitする度に
律儀にdiskに書き込んでるとするならば、84.4tpsってのは妥当な線なんでは?
0209NAME IS NULL2012/11/04(日) 21:16:06.80ID:???
TABLEサイズ+INDEXサイズがshared_buffersの設定値を超えている状態で、
あまりアクセスされないデータを検索するSQLでexplain analyzeすると
INDEX SCANになってても初回のみ30秒ぐらいかかることがあります。
2回目以降は1秒以内に帰ってきます。これを最初から早くすることは可能ですか?

あるいはINDEXだけならshared_buffersに収まるサイズなので、INDEXだけでも
常時キャッシュされるようにすれば、早くなるのかな?とも思ったのですが、
考え方はあってますか?また、そのようなことは可能でしょうか。

postgresql9.1です。
0210NAME IS NULL2012/11/04(日) 22:23:53.56ID:???
>>209
あってると思うよ。
データを空読みすればいい。
0211NAME IS NULL2012/11/04(日) 23:06:30.53ID:???
>>210
データを空読みってcount(*)を取れってことでしょうか?
それだとテーブルデータがキャッシュされて、他のINDEXが
キャッシュから押し出されたりはしないのでしょうか?
0212NAME IS NULL2012/11/04(日) 23:11:53.45ID:???
>>211
INDEXのサイズは何100MB〜何TBぐらい?
数〜数十MB単位じゃないよね。
0213NAME IS NULL2012/11/04(日) 23:14:55.63ID:???
>>212
全テーブルのINDEXを合わせると3GBぐらいです。
メモリは16GB積んでてshared_buffersは4GBです。
0214NAME IS NULL2012/11/04(日) 23:23:20.01ID:???
buffer増やせば?
0215NAME IS NULL2012/11/04(日) 23:47:37.28ID:???
>>214
全テーブル+INDEXがのるだけのshared_buffersが確保できるだけの
メモリを積むことができるのなら最初から質問なんかしていません。
INDEXのみをキャッシュする方法はないということでしょうか。
0216NAME IS NULL2012/11/05(月) 00:37:44.19ID:???
たぶんない。9.2でやっと INDEX ONLY SCAN が追加された。
0217NAME IS NULL2012/11/05(月) 05:39:19.32ID:VQaCCwqV
postgreSQLの統計情報ビューの使いどころがわからないです。
ご存知であれば教えてください。
0218NAME IS NULL2012/11/05(月) 08:17:44.47ID:???
毎日眺めてれば半年もすればわかるようになる。
近道はないよ。
02192062012/11/05(月) 11:41:48.75ID:???
>>207
HDDは速くはないけど、それほど遅いとも思えないんです。

# bonnie++ -d /var/lib/pgsql/data/ -n 256:1024:1024:16 -u root

Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
localhost 7472M 970 97 63074 5 29105 2 4534 90 93805 4 251.2 4
Latency 8409us 395ms 1243ms 34163us 79412us 336ms
Version 1.96 ------Sequential Create------ --------Random Create--------
localhost -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
256:1024:1024/16 10872 21 119910 54 40953 45 11077 22 2487 1 1091 1
Latency 1873ms 492ms 1037ms 1903ms 7695ms 10302ms

Macbook(Core2Duo 2.26GHz)上の仮想環境にインストールしたCentOSだと、tpsは500〜600程度、
さくらのVPS(安いやつ)で試しても、同じくtpsは500〜600程度だったので、ひょっとしたら1000超えるかもと
思っていたので、遅すぎて途方に暮れてます。

HDD環境では、どの程度のtpsが普通なんでしょうか。
02202062012/11/05(月) 11:42:43.10ID:???
ちなみにSelect Onlyだと結構速いです。

$ pgbench -S -c 100 -t 10000 test
starting vacuum...end.
transaction type: SELECT only
scaling factor: 1
query mode: simple
number of clients: 100
number of transactions per client: 10000
number of transactions actually processed: 1000000/1000000
tps = 33454.043328 (including connections establishing)
tps = 33727.065343 (excluding connections establishing)
0221NAME IS NULL2012/11/05(月) 12:46:56.46ID:???
>>219-220
>>208
02222062012/11/05(月) 13:42:57.11ID:???
>>221
えっと、それは
while (true) {
  fputs("abc", fp);
  fflush(stdout);
}
が5400rpmのHDDだと、どうあがいても90回程度しかループできないということですか?
0223NAME IS NULL2012/11/05(月) 14:17:48.60ID:???
15000rpmのHDDに変えてみたらわかるじゃん。
0224NAME IS NULL2012/11/05(月) 18:57:06.60ID:???
RAM disk で試しても、HDD ネックかどうか位は分かるんじゃね。
0225NAME IS NULL2012/11/05(月) 23:00:18.12ID:???
>>222
HDDのキャッシュが無効化されていてかつ、fflushじゃなくてfsyncならそうなるかも
0226NAME IS NULL2012/11/05(月) 23:17:13.34ID:???
ついでにここも読んどけ。

ttp://www.postgresql.jp/document/9.1/html/runtime-config-wal.html
02272062012/11/06(火) 11:12:51.36ID:???
みなさま、いろいろな情報ありがとうございました。

今まで、なんとなくなんですが、HDD以外のハードのスペックが上がれば、それなりに更新性能も
上がるんだと思ってたんですが、HDDの性能で頭打ちになるんですね。

5,400rpm程度のHDDだと、最高でも5,400tpmしか出ないということか・・・。
0228NAME IS NULL2012/11/06(火) 12:42:02.32ID:???
SSDでやってみな
0229NAME IS NULL2012/11/07(水) 00:29:03.22ID:???
DROP DATABASEでは現在接続中のDBを削除できないので
dropdbコマンドを使って削除するとの事なんですが、
ではdropdbコマンドはどうやってDBを削除してるんでしょうか?
内部の動きが知りたいです
0230NAME IS NULL2012/11/07(水) 00:53:57.84ID:???
>>229
postgresかtemplate1
02312292012/11/07(水) 01:44:58.07ID:???
>>230
ではテンプレートデータベースも含めた全てのDBを削除することは出来ないってことですかね
0232NAME IS NULL2012/11/07(水) 11:59:51.35ID:???
ディレクトリごと消せばいいのでは
0233NAME IS NULL2012/11/07(水) 16:40:41.77ID:???
PostgreSQL8までは以下の正規表現が使用できましたが、PostgreSQL9.2からエラーになってしまいます。

 select cast( regexp_replace('123', '(.)(.)(.)*', '\\2') as int) as count

ERROR: 型integerの入力構文が無効です: "\2"
SQLステート:22P02

\\を\にすることでエラーを回避できました。

select cast( regexp_replace('123', '(.)(.)(.)*', '\2') as int) as count

プログラムでこのSQLを動かしているのですが、サーバの設定を変更しないでPostgreSQL8、PostgreSQL9.2両方に対応するには、
if文でいちいち分岐しなければならないのでしょうか?
0234NAME IS NULL2012/11/07(水) 16:55:58.95ID:???
>>233
http://www.postgresql.jp/document/9.2/html/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS-ESCAPE
0235NAME IS NULL2012/11/07(水) 19:39:35.88ID:???
>>227
いや、、、大抵はカーネルキャッシュ、デバイスのキャッシュがそこをひろうから。。。
0236NAME IS NULL2012/11/07(水) 21:32:02.99ID:???
書き込みをキャッシュしてしまうとcommitの意味がなくなるだろ。。。
バッテリー内蔵のRAIDカード使ってるとかなら別だが。
0237NAME IS NULL2012/11/07(水) 21:36:56.45ID:???
書き込みはOSが受け持つんじゃないのかな?
0238NAME IS NULL2012/11/07(水) 22:38:17.67ID:???
>>236
何言ってんだハゲ
0239NAME IS NULL2012/11/07(水) 22:38:26.31ID:???
>>237
>>226
0240NAME IS NULL2012/11/08(木) 20:39:45.85ID:???
>>236
>書き込みをキャッシュしてしまうとcommitの意味がなくなるだろ。。。

commit ってディスクにデータが書かれることを意味しないぞ。
0241NAME IS NULL2012/11/08(木) 21:23:35.34ID:???
そういう使い方もあるわな。
普通はディスクにLOGが書き込まれたということが重要なんだが、
同期レプリケーションなんかだとレプリカにデータ送っただけで良しとするのもありだな。
そもそもデータが壊れても気にしないよ、って使い方もあるだろしな。
どっちが普通なのかは議論になるかも知れないな。
0242NAME IS NULL2012/11/08(木) 23:00:28.23ID:???
>>241
話がずれてる
0243NAME IS NULL2012/11/11(日) 11:49:52.66ID:???
ジャーナルファイルシステムを信用しようぜ
0244NAME IS NULL2012/11/12(月) 22:57:25.03ID:???
デッドロックについて質問。PostgreSQL 9.1。
トランザクションAが、あるテーブルtable1にinsertします (updateではない)。
別のトランザクションBが、table2をupdateします。
そしてtable1とtable2は、どちらもcustomersテーブルへの外部参照をもっています。

このとき、以下のような「customersテーブルにshared lockがかかってデッドロックになった」というエラーが出るんですが、どういうことでしょうか。

DETAIL: Process 30798 waits for ShareLock on transaction 1779489; blocked by process 30802.
Process 30802 waits for ShareLock on transaction 1779490; blocked by process 30798.
HINT: See server log for query details.
CONTEXT: SQL statement "SELECT 1 FROM ONLY "public"."customers" x WHERE "id" OPERATOR(pg_catalog.=) $1 FOR SHARE OF x"

疑問点:
・トランザクションAでもBでもcustomersテーブルは更新されないのに、なぜshared lockが必要なのか?
・shared lockが必要だとして、(exclusive lockではない)shared lockだけでなぜデットロックが発生するのか?
・どう解決すればいいのか?あるいはどう深く調べればいいのか?

よろしくお願いします。
0245NAME IS NULL2012/11/12(月) 23:43:45.22ID:???
よくわかんないけど、ヒントくれてるんだから、その通りにしたら?

> HINT: See server log for query details.
0246NAME IS NULL2012/11/13(火) 10:27:26.48ID:???
>>245
サーバのログには、実行中のSQLが出ているだけでした。
つまり insert into table1 .... と update table2 set .... が表示されているだけで、
ほかに手がかりは載ってなかったので。
0247NAME IS NULL2012/11/13(火) 16:37:40.22ID:???
外部キーと共有ロックとデッドロック
http://itpro.nikkeibp.co.jp/article/COLUMN/20050904/220557/?ST=oss&;P=3
0248NAME IS NULL2012/11/13(火) 21:57:56.13ID:???
>244
 shared lock がかからなかった場合、どうなるか考えてみよう。

 table1 へ insert しているデータは、当然 customers テーブルを外部参照している関係上、
customers テーブル上に「レコードがある」ことが必要。
 仮に customers テーブルにロックをしない場合、
table1 insert → customers delete → table1 commit
って順序で処理が起きたら、table1 に、「対応する customers レコードがない」データが作ら
れてしまう可能性があるだろ?

 従って table1 への insert トランザクションが完了するまでは、customers テーブルを更新
されてはまずい。故に排他ロックがかかる。
0249NAME IS NULL2012/11/14(水) 00:02:41.77ID:???
長すぎて読む気がしない。。。
0250NAME IS NULL2012/11/14(水) 00:20:28.65ID:???
>>248
> 仮に customers テーブルにロックをしない場合、
テーブルロックする必要はないですよね。行ロックだけでいいはず。

> customers テーブルを更新されてはまずい。
テーブルの更新はいいのでは?該当行の更新がまずいだけで。

> 故に排他ロックがかかる。
あれ、shared lockって排他ロックのことなんでしょうか。
読み取り用のロックではないのですか?
0251NAME IS NULL2012/11/14(水) 00:23:52.68ID:???
>>247
ありがとうございます。そこを読む限り、排他ロックではなくshared lockだからデッドロックは起こらないはずなんですよね。
以下引用

> PostgreSQL 8.1では共有ロックによって問題を解決
>
>  このような外部キーの問題は、共有行ロックを導入することによって解決できる。
> 共有ロックでは、共有ロックを発行するトランザクションはお互いに相手をブロックしないため、
> 外部キーをめぐってトランザクションがお互いにブロックして並列実行性を損なうこともないし、
> 外部キーが原因のデッドロックをひきおこす心配もなくなる。

結局、原因はわからずじまいか。
0252NAME IS NULL2012/11/14(水) 04:11:24.02ID:???
>>244
table1かtable2にcustomersを更新or削除するトリガーでも張ってるんじゃない?
0253NAME IS NULL2012/11/14(水) 20:20:42.94ID:???
Postgresqlの入門書は今読むならどれがいいでしょうか。
0254NAME IS NULL2012/11/14(水) 21:24:23.67ID:???
ttp://www.postgresql.jp/document/9.2/html/
0255NAME IS NULL2012/11/16(金) 09:14:27.03ID:???
新しいシーラカンス本でないねぇ。
0256NAME IS NULL2012/11/19(月) 00:54:21.97ID:???
>>244
ログにShareLockと書かれているのはデッドロック時のお決まりの文言。
実際に何のロックがかかっているかはpg_locks見ないと分からないよ
0257NAME IS NULL2012/11/22(木) 20:47:19.28ID:???
OS X上で使用していますが、MySQLのSequel Proの様にGUI上でCSVのエクスポートとインポートができるアプリってありますでしょうか。
0258NAME IS NULL2012/11/24(土) 06:22:39.07ID:???
phppgadmin
0259NAME IS NULL2012/11/24(土) 23:22:07.15ID:???
pgAdmin
0260NAME IS NULL2012/11/25(日) 01:54:56.41ID:???
素のpgAdminではインポートはコマンドベースでしかできない
0261NAME IS NULL2012/11/25(日) 09:49:21.50ID:???
Navicat
0262NAME IS NULL2012/11/27(火) 14:42:11.58ID:???
話題は?
0263NAME IS NULL2012/11/27(火) 15:17:35.84ID:???
9.2どうよ?
0264NAME IS NULL2012/11/30(金) 17:57:53.06ID:???
Windows7 x64, PostgreSQL 9.2.1.1(x64)
でApache,PHP等と連携したデータベース構築を試みています。

UTF-8エンコードとしてdb作成し、そこにテーブルを作り
INSERT文を複数列作成したUTF-8文字コードのtextファイルを \i コマンドで読み込ませると
以下の2種類のエラー羅列で埋まります。。

character with byte sequense 0xef 0xbb in encoding "SJIS" has no equivalent in encoding "UTF8"
invalid byte sequence for encoding "SJIS": 0x82 0x30

このテキストファイルをSJISに無理やり変換すれば問題無くINSERTされますし(当然化ける文字も有り)、
エラーを吐く行などをペーストしてコマンドプロンプトから直接実行してもうまく行きます(ただし表示させると一部化け有り)
UTF-8テキストのまま実行するにはどうしたらよろしいでしょうか・・・助言のほどよろしくお願いします
0265NAME IS NULL2012/11/30(金) 20:49:46.55ID:???
コマンドプロンプトの文字コードをUTF8にすればいい。chcp 65001
そもそもコマンドプロンプトじゃなくてGUIツールを使いなさい。
02662642012/11/30(金) 22:20:00.03ID:???
レスありがとうございます

取り敢えずCMDの文字コードはchcpで変更してみましたが結果は同じでした
まあ、これは入出力・表示文字コードの問題なのでファイル入出力とは関係ないとは思ってましたが(合ってるかな??
GUIツール・・・ということで最初に思い立ったのはpgAdminIIIについてるSQLクエリ実行ツール?でやってみたら上手く行きました!!
今までTeraTermでLinuxのDBサーバにアクセスしてCUIで弄ってたので目から鱗です。
他にもGUIツールってあるんでしょうか。

が、、しかしあまり原因がはっきり解ってない上に
pgAdminIII が多機能過ぎてついて行けてない自分がいます。。orz...
0267NAME IS NULL2012/11/30(金) 23:35:32.21ID:???
コマンドプロンプトの文字コードだけ変えてもフォントの変更もしないと
UTF8の日本語はまともに扱えなかったはず。
DBもファイルもプログラムもCUIでの操作も全部同じ文字コードで扱わないと駄目。

>他にもGUIツールってあるんでしょうか。
ちょっと上にも書いてるがフリーでメジャーなのはpgAdminIIIとphpPgAdmin、
商用でもよければNavicatが便利。ただしNavicat Premiumじゃなければ機能的に微妙
0268NAME IS NULL2012/12/01(土) 00:33:57.86ID:???
>>266
psqlの\iはlinuxで言えばcat ファイル | psql -cと同じこと
クライアントの文字コードに引きずられる
0269NAME IS NULL2012/12/01(土) 06:48:18.80ID:???
>>266
psqlでログインした後、\iの前に
set client_encoding to 'utf-8';
すればINSERTスクリプトは通るんでは。

その後SELECTしたら文字化けしそうだけど。
0270NAME IS NULL2012/12/01(土) 16:26:32.67ID:???
話題は?
0271NAME IS NULL2012/12/02(日) 11:16:21.37ID:???
すいません、今考え中
0272NAME IS NULL2012/12/02(日) 13:59:51.45ID:???
テーブルの最後の50行だけ頂戴って時はどうしますか?
0273NAME IS NULL2012/12/02(日) 14:13:08.07ID:???
order 条件逆にして、top 50
順序が重要なら、その結果を元の orderでソート
0274NAME IS NULL2012/12/02(日) 15:15:40.15ID:???
>>273
あざっす^^

reverseのreverseってパフォーマンス的にどうなんすかね

�@PostgreSQLに両方やらせる
�APostgreSQLに最初のreverseを、クライアントプログラムで更にreverse

どっちが速いですかね?

※接続は1つだけの個人専用システム
0275NAME IS NULL2012/12/02(日) 15:29:32.31ID:???
今時 50件程度ならパフォーマンス云々はあまり気にしなくていいんじゃね。
0276NAME IS NULL2012/12/02(日) 15:59:22.92ID:???
あざっす^^
�@でいきます
ひょっとしたらよく判らん最適化されるかもしれないし
0277NAME IS NULL2012/12/07(金) 00:59:42.04ID:???
話題は?
0278NAME IS NULL2012/12/14(金) 01:23:44.44ID:yD0VPqJ9
すんません、質問です。

testテーブルはこんな感じのとき、

key ver value
--- --- -----
CPM 1.4 1000
CPM 1.2 500
OS2 5.0 2000
OS2 4.0 1600
WIN 3.1 50
WIN 95 200
WIN 98 2
--- --- -----

CREATE UNIQUE INDEX test_pkey ON test USING btree (key, ver);


以下の実行結果のように key ごとに、それらの ver が最大の value を選択するSQLを検討中です。

実行結果
key ver value
--- --- -----
CPM 1.4 1000
OS2 5.0 2000
WIN 98 2
--- --- -----

いまのところ2つ考えてみましたが、もっと速いSQLってありますか?

SQL1:Total runtime: 6.492 ms
SELECT key, ver, value FROM (SELECT key, ver, value, rank() OVER (PARTITION BY key ORDER BY ver DESC) AS rnk FROM test) AS temp WHERE rnk=1;

SQL2:Total runtime: 3.539 ms
SELECT * FROM test AS temp WHERE NOT EXISTS ( SELECT * FROM test WHERE key=temp.key AND ver>temp.ver );

ちなみに、テーブルは key が20種類くらい、keyごとにvalueが20個ぐらいです。
0279NAME IS NULL2012/12/14(金) 07:26:39.54ID:???
SQLの入門書を最後まで勉強してみると良いよ。
特別PostgreSQL用でなくても大丈夫だよ。
0280NAME IS NULL2012/12/14(金) 10:57:46.23ID:???
ちょい古いが、9.2.2リリース(2012-12-06)

http://www.postgresql.org/docs/9.2/static/release-9-2-2.html
0281NAME IS NULL2012/12/14(金) 21:10:37.40ID:???
>>278
SQL質疑応答スレ 13問目
http://toro.2ch.net/test/read.cgi/db/1343899481/4

これと比較してみたらどうでしょ
0282NAME IS NULL2012/12/14(金) 21:43:06.34ID:???
知ってりゃ凄く簡単なことでも、知らない奴は凄く複雑にするんだな。。。
02832782012/12/15(土) 10:28:22.52ID:???
>>281
同じ条件で試してみました。
Total runtime: 3.204 ms
おぉ、僅差かもしれないけど、これが一番速いですね。ありがとう。

>>279
考えてみたらSQLの本なんて1度も読んだことなかった。
自分には一読が向いているような気がしてきたよ。どうもです。

>>282
まさに、それだね。
0284NAME IS NULL2012/12/19(水) 22:48:14.21ID:/zfe6YaM
質問です。教えてください!!!

PostgreSQLの同期レプリケーションで、マスタサーバがダウンした時に、
実行されているトランザクションがスレーブでコミットされたか、
アボートされたかを確認する方法ってありますか?

ユーザにはコミット応答がかえって来ませんでしたが、スレーブを昇格させて
新マスタにしたところ、コミットされデータが更新されている事象が発生しています。。。

よろしくお願います。
0285NAME IS NULL2012/12/19(水) 23:06:59.58ID:???
同期取れてるんだから、コミット済みに決まってるだろ。
0286NAME IS NULL2012/12/20(木) 01:19:35.45ID:???
bit varying に対する set_bit とか get_bit って無いんですか?
PostgreSQL 8.4 です。
0287NAME IS NULL2012/12/20(木) 11:19:16.27ID:???
overlayとsubstringでやるとかかなあ、使ったこと無いが
0288NAME IS NULL2012/12/20(木) 14:18:18.70ID:???
そんなところですかねぇ・・・。
bytea だと簡単なのに、そうすると & とか | が使えない・・・。
0289NAME IS NULL2012/12/22(土) 04:03:32.30ID:???
>>280
英語の質問です

〉Fix the syslogger process to not fail when log_rotation_age exceeds 2^31 milliseconds (about 25 days)

not to じゃないの?
0290NAME IS NULL2012/12/23(日) 13:10:27.64ID:???
timestamp without time zone の【最遠の未来】を返す定数ってありましたっけ?
0291NAME IS NULL2012/12/23(日) 14:19:18.72ID:???
その型で使えるかどうかは知らんけど 'infinity' かな。

http://www.sraoss.co.jp/PostgreSQL/Manual/document/9.2/html/datatype-datetime.html#AEN5786
0292NAME IS NULL2012/12/23(日) 22:13:17.05ID:???
>>291
まさにそれでした。使えることを確認しました。ありがとうございます。
未定義をnull にしたくなかったので助かります。
0293NAME IS NULL2012/12/24(月) 06:14:37.49ID:???
物のついでに INT4 の最大値をあらわすものをググっているがこっちは発見できないな。
使い道は無さそうだから別に無くてもかまわないが。
0294NAME IS NULL2012/12/24(月) 06:17:01.96ID:???
>>292
だが、その方法を使うと、実際の日付がその値を超えたところで矛盾するから
気をつけたほうがいいな。だいたい2943世紀ごろだが。
0295NAME IS NULL2012/12/24(月) 10:45:27.97ID:???
のちの2943世紀問題である
0296NAME IS NULL2012/12/24(月) 12:03:55.54ID:???
どこに質問したらよいかわからなかったのでここに失礼します。
PostgreSQLのテーブル単位のレプリケートが必要になっていろいろと調べているところですが、
slony-Iは、多対一の非同期レプリケート(のようなこと)は設定で出来るか知っている方おります?
具体的には複数のサーバーにレプリケートしたいテーブルがあって、
それらはサーバー同士の間でもユニークなレコードを持っていて、
これらを1つのサーバーに UNION みたいに集めたいのです。
難しいようでしたら自作しようと考えているのですが
slonyで可能であれば楽できるなと思っているところです。
0297NAME IS NULL2012/12/27(木) 15:16:13.25ID:???
>>289
"fix * to not"でググると、良くある言い回しみたいだよ。
0298NAME IS NULL2012/12/27(木) 15:37:03.11ID:???
てか、not fail when 〜に修正したのでそもそもおかしくない
0299NAME IS NULL2012/12/27(木) 15:48:24.91ID:???
sysloggerプロセスが25日有効だったlogをrotationしようとするときに、今までは死んでたのを修正したってことじゃないの?
0300NAME IS NULL2012/12/27(木) 15:52:14.45ID:???
じゃなくて、rotationしそこなうのを修正したのか
0301NAME IS NULL2012/12/27(木) 18:01:33.83ID:???
Ubuntu12でPostgreSQL使ってるけど、apt-get installするより自前でコンパイルしたほうが速いバイナリができるとか、そういうびっくりなことってないかな。
だれか検証したひとがいたら教えて。
0302NAME IS NULL2012/12/28(金) 00:00:24.03ID:???
自前でコンパイルする方が速い可能性はある。
コンパイル時に、PCに載ってるCPUに応じたコードを生成させたりできるから。
0303NAME IS NULL2012/12/28(金) 17:04:37.34ID:???
>>302
速くなる可能性があるのは分かるんですが、実際速くなった人はいるかなと思って。
CentOSだとrpmパッケージがi386でコンパイルしてるから、いまどきのCPUならコンパイルし直したほうが速くなるけど
Ubuntuはdebパッケージがi686でコンパイルされてるようだから、変わらないかもしれない。
でもPostgreSQLのコンパイルはめんどくさいので、だれか試した人がいたら教えてください。
0304NAME IS NULL2012/12/28(金) 19:36:17.64ID:???
>>303
めんどくさいって、ふつーに configure;make;make install だけだろ
0305NAME IS NULL2012/12/29(土) 00:12:47.99ID:???
まぁGCC入れたりライブラリ入れたりしなくちゃならんから、面倒くさいというのも理解できる。
0306NAME IS NULL2012/12/30(日) 01:44:22.43ID:???
9.3出たら起こしてくれ
0307NAME IS NULL2012/12/31(月) 18:53:59.09ID:vZpLnkOO
  ●●●ケネディ大統領は何故、死なねばならなかったのか?●●●
  http://jbbs.livedoor.jp/bbs/read.cgi/study/3729/1226114724/53

  ¥¥¥¥¥¥¥『万有サロン』書き込み大賞・総額100万円¥¥¥¥¥¥¥¥¥¥¥¥

  この掲示板に優秀な書き込みをして、総額100万円の賞金をゲットしよう!(*^^)v
    万有サロン
      http://jbbs.livedoor.jp/study/3729/
    書き込み大賞の詳細
      http://jbbs.livedoor.jp/bbs/read.cgi/study/3729/1069922074/78-
    書き込み大賞の詳細(資料倉庫内)
      http://www2.tba.t-com.ne.jp/a-z/omake/banyu/taisho.htm

  また、あらゆる疑問に関する質問を、携帯電話やメールでも受け付けています。
    電話番号 080-4437-4187
    メール  [email protected]

  ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
0308NAME IS NULL2013/01/06(日) 02:51:40.46ID:???
通信したら膨大なデータはどういう仕組みで降りてくるの?

クライアントが『今はこれだけしか受け取りきれないよ』って時はどうするの?

データのポインタみたいなのをコネクション毎に保持しておくて
『ここまで送った』しおり代わりとするの?
0309NAME IS NULL2013/01/06(日) 03:08:34.28ID:???
どの層の話?TCPレベル?カーソルレベル?プレゼンテーション層でのPostgresのデータ表現がどうなってるかは知らないけど
0310NAME IS NULL2013/01/06(日) 09:31:42.51ID:???
データベースに限った話じゃないならスレ違い
TCPの確認応答とか、ウィンドウ制御の話。
0311NAME IS NULL2013/01/06(日) 14:05:43.74ID:???
ああじゃあデータベース側は、気にせずいつも通り
最寄りのノードにデータ送る作業するだけで
後はOSI参照モデルを実装した外部システムが巧いことやってくれる算段なんですね
0312NAME IS NULL2013/01/06(日) 14:15:26.01ID:???
状況がわからんけど
ミドルで全部受け取り済みな気がするなあ
0313NAME IS NULL2013/01/06(日) 16:17:39.96ID:PFtSFSQD
犯罪者個人に対して告訴状を違法派遣・偽装請負・偽装出向・多重派遣の被害者が作成(刑事告訴は無料) or 司法書士が代筆(料金は5万円ぐらい)※コピペ歓迎
↓
告訴状を【検察の直告班】に郵便局の内容証明付で送付(疎明資料・証拠にはICレコーダー、スマホによる録音が適しています)
↓
審査 → 不受理 → 告訴状再提出または刑法 第193条で訴えを起こす
↓
受理 → 告訴事実を認め示談交渉(↓) →示談成立 → 法廷相場50〜100万円の示談金 ※示談拒否が良い
↓                ↓
事案化← 前科あり ←示談不成立(↓)→ 示談外交渉→ 犯罪者の年収半額×最大懲役年数の和解金支払い※推奨
↓                ↓
↓               起訴 →公判 → 罰金刑=前科(起訴事実を認めてるため)→追討ち民事訴訟
↓                    
審査 → 起訴(強制捜査・留置場)→ 公判 → 懲役刑などの厳罰(反省が認められないため)→追討ち民事訴訟
↓
不起訴、起訴猶予
↓
検察審査会法第30条(検察審査会へ申し立て)→ 起訴 → 起訴後は同上
刑法 第193条(公務員職権濫用)で検察事務官を刑事告訴 → 同上

◎告訴→告訴受理→示談交渉→厳罰を求め示談不成立→示談外交渉→和解金支払い・和解契約(公正証書・即決和解で秘密保持契約)
◎偽装請負・出向・違法派遣事件では派遣・出向先両方の代表者、役員、現場責任者に告訴できます。
前科がついた犯罪者が法人の代表であれば公的な入札からの排除、取引先や顧客との契約解除など社会的制裁・批判に晒されることから辞職または解任が妥当、役員・社員であれば懲戒を想定。
◎事業者内部の加害関係者による刑事告発(刑事訴訟法239条1項)も可能です。
加害者本人、管理間接部門の社員が刑事告発に踏み切る場合も和解金による解決が妥当です。

注意:告訴が受理されない理由
●3年間(※)の時効が過ぎたもの ※違法派遣
●同一事実について過去に告訴取消しがあったもの
●関連する民事訴訟を有利に導く目的の場合
●証拠が希薄なもの ※被害者が契約時に違法派遣・偽装請負・多重派遣と知っていても刑事告訴は有効です。
0314NAME IS NULL2013/01/07(月) 07:50:49.15ID:???
>>308
外しているかもしれないが、
ORDER BYして LIMIT で クライアントがほしい分だけSELECT するという話?
テーブルによっては漏らさずとることは出来ないけど。
0315NAME IS NULL2013/01/07(月) 15:47:46.90ID:???
>>314
膨大なデータを、クライアントが遅延評価で受け取りつつ
クライアント側で専門の重い処理をしていくとき
0316NAME IS NULL2013/01/07(月) 16:44:48.89ID:???
カーソルでいいじゃん
0317NAME IS NULL2013/01/07(月) 17:52:04.82ID:???
クライアントの処理に合わせてサーバからデータを数行ずつ取得して行きたいとかならそうだな
0318NAME IS NULL2013/01/08(火) 11:52:03.98ID:5ntVS72y
告訴の趣旨
 被告訴人は、以下に該当すると考えるので、被告訴人の厳重な処罰を求めるため告訴します。
 職務経歴書を提示した事前面接を実施 または 偽装請負 または 偽装出向
  労働者派遣法第26条(契約の内容等)、職業安定法第44条(労働者供給)に違反
 多重派遣・多重出向
  労働基準法第6条(中間搾取の禁止)に違反
疎明資料
 事前面接日時、場所、出席者、資料のコピー、音声記録
 就業場所・就業期間・就業時間
 指揮命令
  指示を誰が行っているかの記録、音声記録
 仕事で使う道具や、資材の負担(所有)のあり方
  業務で使用しているパソコン・備品などの所有者
 契約書
  請負、雇用契約書、出向指示など書面のコピー

刑事告訴ガイダンス 
★痴漢も民事でなく刑事事案ですが、裁判所が和解金を被害者に支払わせて解決するのが絶対的過半数です。和解で解決しない事案、つまり公訴までいって判例となる事例を探すほうが難しいことでしょう。
★録音は一方の当事者が取る限り合法です。※加害者に録音の同意を求める必要はありません。
★告訴状を検察に提出しても受理されなければ加害者側には知られることはありません。不受理の場合は何事も起きてないように粛々と振る舞ってください。
★告訴を取り下げるとき検察に提出した資料は全て返却されます。また検察があなたが提出した証拠をあなたの許可なく裁判の証拠として使用はできません。告訴を取り下げたのちの録音資料には当事者の立場が失われるため証拠能力はありません。
★和解時に告訴した事実は秘匿事項となります。犯罪者が秘密保持契約に違反した場合の損害賠償金は「即決和解」か「公正証書」で最低5000万円〜にしましょう。支払いを拒否すれば強制執行手続きを(裁判不要)してください。
★派遣会社や事業会社が同業者に貴方の情報をリークしたなら同業者(又は競合他社)に弱みを握られることになります。
余程信用のおける相手でなければ、リークはできないでしょう。信頼のおける方にしても、その方の口が軽ければ、いずれ事実は分かります。
★リークの情報を得た事業者のなかには、リークの事実を貴方に教えてくれる方がいるかもしれません。その際は損害賠償金で得たお金の3割程度を謝礼金として渡してください。
0319NAME IS NULL2013/01/09(水) 08:16:56.38ID:4HXcyysT
※コピペ歓迎です。
違法派遣(偽装請負・多重派遣・偽装出向・事前面接等)についての刑事罰
【告訴権者=業務委託、準委任、共同受注、業務請負契約および特定派遣(契約・正規)、一般派遣、正規社員】

�@職業安定法第44条の労働者供給事業の禁止規定に違反(1年以下の懲役または20万円以下の罰金)
 ■偽装請負・多重派遣・偽装出向・多重出向
 ■事前面接(顔合わせ・面談・職場見学等)と履歴書・職務経歴書・スキルシート等提出による労働者の特定(※)
(音声録音で立証可能)
�A労働基準法第6条(中間搾取の禁止) (1年以下の懲役又は50万円以下の罰金)
 ■多重派遣・多重出向

※違法派遣(派遣労働者の特定)→派遣法で認められた派遣労働者ではない→労働者供給事業→職業安定法44条違反というの
が前提となる法解釈となります。派遣法における罰則が軽微なのは法律の不備や労働者軽視などが原因ではありません。
違法派遣は全て職業安定法44条で裁くことが可能なため、刑罰の重複を避けるために派遣法には軽微な罰則(主に裁量行政による)しかないのです。

使用者に有利な民事訴訟や労働関係諸局への通報等の対極にあるのが書面(告訴状)による刑事告訴(※告訴先は検察の直告班)です。
労働関係諸局への通報・斡旋による軽微な「適正化」や監督・指導に対して、法律に定められた刑事罰を問うことになり、
違法派遣業者にとって有罪は考えられる限り最大の処罰となります。同時に刑事罰を受けた
担当者が取引先に与える悪印象を考慮すれば、通常会社側は告訴が受理された時点で告訴取り下げに
動くのが妥当でしょう。懲役、前科がつく刑罰が下される可能性から、告訴取り下げの和解金は高額となることが多いのです。

告訴の流れとしては、

刑事告訴⇒告訴受理⇒告訴取下げ要請⇒取下げ和解金入金⇒告訴取下げ

となります。告訴の懲役刑適応は犯罪者個人に対してのみですので、告訴する対象は

派遣先・派遣元 社長
派遣先・派遣元 責任者・管理役員・取締役
派遣先・派遣元 人事管理担当者・人事管理役員・取締役

が妥当です。刑事告訴取り下げの和解金額は犯罪者個人と交渉するとよいでしょう。(告訴状は人数分提出する必要あり)
0320NAME IS NULL2013/01/12(土) 13:36:06.00ID:???
PostgreSQLで、あるSQLが「条件で絞ってからjoinしている」のか「joinしてから条件で絞っている」のかを調べる方法ってありますか。
あるいはexplainで分かるとして、explainの出力のどれを見ればいいですか。

10個くらいjoinしているけども、条件で絞ってからjoinすれば (レコード数が
少ないので) 大した時間がかからないだろうと思われるSQLがあります。
しかし計測してみるとそれなりの実行時間がかかっていました。joinを外したところ、大幅に高速化できました。
なので、もしかしたら内部では「joinしてから条件で絞っている」のではないかと
疑っています。それを調べたいです。
0321NAME IS NULL2013/01/12(土) 13:46:02.17ID:???
sql書いてるならexplain見ればだいたい把握できるだろ
理解力・想像力が乏しいのであればpgadminのグラフィカルな奴でも使えば。
0322NAME IS NULL2013/01/12(土) 18:10:15.12ID:???
>>320
joinのために使われたアルゴリズムによる。
問い合わせ計画の読み方を一通り理解すればわかると思う。
http://www.postgresql.jp/document/9.2/html/using-explain.html
0323NAME IS NULL2013/01/13(日) 08:47:41.37ID:???
>>322
ありがとうございます。
explainで調べたところ、limitより先にjoinされてました。
これだと相当な量のレコードがjoinされてしまい、遅くなって当然でした。

そこで今度は、joinより先にlimitで絞り込む方法について教えてください。

手元で試したところ、副問い合わせを使って先にlimitで絞り込み、
その結果を使って外側でjoinすると、確かに速度は改善されました。
しかし副問い合わせを使うよう変更したSQLは、カラム数が多いこともあって
内側と外側のselect文で重複したカラム名がたくさんでてしまい、
メンテナンス性の悪いSQLになってしまいました。
できればもとの素直なSQLのまま、joinのタイミングだけlimitよりあとにするよう
変更したいです。
そのようなことはPostgreSQL (9.1) でできますか?
0324NAME IS NULL2013/01/13(日) 08:49:24.84ID:???
一応できると答えておく。
やり方は自分で考えろ。
0325NAME IS NULL2013/01/13(日) 09:27:23.04ID:???
>>323
ワイルドカード"*"を使えばいいんじゃないかな。
0326NAME IS NULL2013/01/13(日) 11:56:46.89ID:???
>>324
こういう負け惜しみ回答がつくということは、joinのタイミングを指定することがPostgreSQLではできないということですね。

>>325
いえ、ワイルドカードは使えません。たとえば:

select x.a, x.b bar.name, baz.name
from (select a, b, bar_id, baz_id from maintbl where a>=:var1 and b<=:var2) as x
join bartbl on x.bar_id = bartbl.id
join baztbl on x.baz_id = baztbl.id

ここでワイルドカードを使うと、内側のSQLでのみ必要なカラムが外側にも出てきてしまうので、だめです。

select x.*, bar.name, baz.name
from (select a, b, bar_id, baz_id from maintbl where a>=:var1 and b<=:var2) as x
join bartbl on x.bar_id = bartbl.id
join baztbl on x.baz_id = baztbl.id
0327NAME IS NULL2013/01/13(日) 12:52:23.28ID:???
>>326
それで、limitをどこに書くって言ってるわけ?
0328NAME IS NULL2013/01/13(日) 13:15:47.98ID:???
そもそも limit で絞り込んで join するのと、join して limit するんじゃ結果が違うことがあるから、
「joinのタイミングだけlimitよりあとにする」なんてできる DBMS はないと思うが…
0329NAME IS NULL2013/01/13(日) 14:09:07.33ID:???
>>327
説明不足でしたので、サンプルのSQLで説明します。

-- もとのSQLは、joinしてからlimitで絞るので遅かった
select main.id, main.value, main.foo, main.bar, main.baz,
   aaa.name, bbb.name, ccc.name, ddd.name, eee.name
from main
join aaa on main.aaa_id = aaa.id
join bbb on main.bbb_id = bbb.id
join ccc on main.ccc_id = ccc.id
join ddd on main.ddd_id = ddd.id
join eee on main.eee_id = eee.id
where main.value >= :value_from
 and main.value <= :value_to
order by main.value
limit 10
offset 0

-- これを、limitで絞ってからjoinするように変更すると速くなった
-- しかしselectで指定するカラム名に重複が多く、メンテしにくくなった
select tmp.id, tmp.value, tmp.foo, tmp.bar, tmp.baz,
   aaa.name, bbb.name, ccc.name, ddd.name, eee.name
from (
  select main.id, main.value, main.foo, main.bar, main.baz,
     main.aaa_id, main.bbb_id, main.ccc_id, main.ddd_id, main.eee_id
  from main
  where main.value >= :value_from
   and main.value <= :value_to
  order by main.value
  limit 10
  offset 0
) as tmp
join aaa on tmp.aaa_id = aaa.id
join bbb on tmp.bbb_id = bbb.id
join ccc on tmp.ccc_id = ccc.id
join ddd on tmp.ddd_id = ddd.id
join eee on tmp.eee_id = eee.id
0330NAME IS NULL2013/01/13(日) 14:12:48.96ID:???
>>328
>そもそも limit で絞り込んで join するのと、join して limit するんじゃ結果が違うことがある

それはその通りなのですが、結果が同じ場合もあるわけで、その場合は人間が判断してjoinのタイミングを指定できるようにしてくれたほうがうれしいです。
0331NAME IS NULL2013/01/13(日) 14:15:12.31ID:???
limit以外に絞り込む手段は無いの?
最終結果以外でlimitが入るのは何かがおかしい。
0332NAME IS NULL2013/01/13(日) 14:39:33.51ID:???
>>331
>limit以外に絞り込む手段は無いの?
where句でも絞ってますよ。
ただwhereで絞っても数百〜数千件くらいまでしか絞れないです。
order+limitでは10件とか20件に絞りこみます。

>最終結果以外でlimitが入るのは何かがおかしい。
そうなんですか?
まあ別に「最終結果以外でlimitを使いたい」というわけではなく、「可能な場合はlimitを先に実行してからjoinを行う」ことをPostgreSQLが自動的にやってくれるくらい賢ければそれでいいです。
今はやってくれないので、仕方なく人間が指定するしかなくて、その方法を質問しています。
0333NAME IS NULL2013/01/13(日) 14:52:44.54ID:???
>>330
>>329 のクエリが両方常に同じ結果になるというのなら、mainとaaa〜eeeまではすべてn対1対応になっているのだろうから、
left joinの外部結合に書きなおせばいい。
0334NAME IS NULL2013/01/13(日) 15:02:18.50ID:???
>>326
> ここでワイルドカードを使うと、内側のSQLでのみ必要なカラムが外側にも出てきてしまうので、だめです。

俺は >>325 じゃないから、>>325 の本心はわからんが、内側のこと言ってるんじゃないのか

select x.a, x.b bar.name, baz.name
from (select * from maintbl where a>=:var1 and b<=:var2) as x
join bartbl on x.bar_id = bartbl.id
join baztbl on x.baz_id = baztbl.id
0335NAME IS NULL2013/01/13(日) 15:27:51.87ID:???
>>329を見る限り駆動表がmainでlimit 10が普通に効きそうなもんだが。
explainの先頭の表がmainでなかったり、nested loop joinじゃなくて
hash joinが出てきたりしたら、統計がとられていないかjoinするテーブルの
idにindexが張られていないことが思いつくが。
あと、joinするテーブル数が12以上だったらgeqoで最適化がはしょられているとか。
0336NAME IS NULL2013/01/13(日) 18:15:06.71ID:???
>>335
329では「order by main.value」と書いてますが、実際にはここがちょっと複雑な計算式になってます。
そのせいでプランナがうまく効いてくれないのでしょうか。

また副問い合わせにする前のSQLだと、explainの先頭は Limit になってます。
hash joinは出てこずNested LoopとIndex Scanがばかりです。
joinするテーブル数は12まではいかないですし、どれもidはprimary key (sequence) なのでindexは作成されてます。
0337NAME IS NULL2013/01/14(月) 10:23:48.76ID:???
その複雑な式でインデックス作るとか?
0338NAME IS NULL2013/01/17(木) 19:16:36.78ID:3WZzA8BL
win8pro 64bit
postgres 9.2
の環境でログのローテーションが機能しないんですが
同様の症状の方いませんか?
ファイルサイズ指定でローテーションしようとしてます
設定は何度も確認しました

win7 postgres8.4では動いてて
同じ設定なのですが
0339NAME IS NULL2013/01/17(木) 19:19:55.28ID:???
>>338
基本的な問題の切り分けでもやってみたら?
OSかPostgreSQLのバージョンをどちらか合せてやってみてどうなるか
0340NAME IS NULL2013/01/17(木) 19:49:16.56ID:3WZzA8BL
win8 64bit
postgres9.1ではローテーションが機能しました。
9.2のバグ?

9.1に戻すか、次を待つか考えます
とりあえず報告まで
0341NAME IS NULL2013/01/17(木) 20:04:12.76ID:EwS78HY0
パワハラ犯罪にたいする刑事罰(※本投稿のコピペ歓迎です)
人事原則
1 現行法では、社員が仕事を怠けたり、能力不足、就業規則違反、目標を達成できなくても解雇をしたり叱責することは違法です。どんな駄目社員、嘘つき社員、怠け者も定年まで解雇が違法なのが現行の正社員制度です。
2 パワハラは社風にあわない社員、成績の振るわない社員を自主退職に追い込む言わば人事的措置として用いられることが多い。
※違法な解雇の和解金相場は、労働審判で3ヶ月、通常裁判で1年以上の報酬、さらに社員が和解を拒めば復職が可能です。弁護士への着手金は12〜15万円、和解拒否なら20〜50万円程度。

人事部・ホットライン・御用組合へ直訴
メリット: 一時的緩和や人事異動
デメリット: 役員へ情報筒抜け、危険分子の烙印(情報漏洩がホットライン直訴者に多いのは人事部の常識)、パワハラ放置で自主退職に追い込まれる

民事訴訟・調停・労働審判
メリット: 損害賠償
デメリット: 裁判費用、解雇措置、民事不介入で刑事事案化を阻止、長期係争、パワハラ上司の継続雇用

刑事告訴
メリット: 1パワハラ上司の解雇・懲戒、または2多額の和解金、1と2どちらでも被害者の雇用は維持
デメリット: 人事異動(出世コースから外れる)
◎録音は一方の当事者が取る限り合法です。※加害者に録音の同意を求める必要はありません。
◎告訴受理後の和解金は加害者の資産・収入に応じて変えてください。犯罪者の昨年の年収の半額程度×最大懲役年数が妥当です。
◎パワハラの被害についての告訴は1侮辱罪2脅迫罪3強要罪4威力業務妨害罪5傷害罪の順序で行ってください。警察・検察の協力(犯罪者の自宅・職場の強制捜査、留置所勾留)により罪の立証が楽になります。
◎刑事告訴した社員を解雇したり処遇面で著しい差別を行うことはないでしょうが、出世や管理職以上の昇進の可能性はあきらめるべきでしょう。
◎刑事告訴は民事訴訟と違って裁判による被害者への2次被害にありません。検察庁が被害者に代わって訴えをおこすので、無料で、時間と手間も告訴状をかくことと音声録音を残すだけです。
◎和解契約(公正証書・即決和解)では告訴した事実は秘匿事項となります。犯罪者が秘密保持契約を違反した場合の損害賠償金は、最低5000万円〜にしましょう。
03426732013/01/18(金) 16:00:00.26ID:???
すいません。pg_hdaを以下のように設定しているのですが、
外部に対してもリッスンしています。

local all all password
host all all 127.0.0.1/32 password

あと、postgresql.confのlisten_addressesはコメントアウトしています。

ここ以外に変更しなければならない場所はあるのでしょうか?
宜しくお願いします。
03433422013/01/18(金) 16:00:58.58ID:???
あ、すいません。pg_hdaではなく、pg_hba.confでした。
0344NAME IS NULL2013/01/18(金) 17:43:44.93ID:???
postgresql.confの設定をミスってるか、外部からアクセスできると勘違いしてるかのどっちかじゃないの?
03456732013/01/18(金) 17:58:18.27ID:???
>> 344
postgresql.confは未設定で、
外部からnmapで見たら開いていて、更にTELNETでもつながる状態です。
0346NAME IS NULL2013/01/18(金) 18:04:31.85ID:???
>>345
何言ってるのかわかんない。

grep listen_address /path/to/postgresql.con
と
netstat -a | grep postgres
の結果を貼って。
0347NAME IS NULL2013/01/18(金) 18:08:07.46ID:???
まさか、postgresql.confを変更してから、デーモンを再起動してないとかいうことじゃないだろうな
03486732013/01/18(金) 18:12:00.19ID:???
>> 346
以下のようになりました。

[grep listen_address postgresql.conf]
#listen_addresses = 'localhost' # what IP address(es) to listen on;

[netstat -a | grep postgres]
tcp 0 0 *:postgresql *:* LISTEN
tcp 0 0 localhost.localdo:35514 localhost.lo:postgresql TIME_WAIT
tcp 0 0 localhost.localdo:35519 localhost.lo:postgresql TIME_WAIT
tcp 0 0 localhost.localdo:35517 localhost.lo:postgresql TIME_WAIT
tcp 0 0 localhost.localdo:35516 localhost.lo:postgresql TIME_WAIT
tcp 0 0 localhost.localdo:35512 localhost.lo:postgresql TIME_WAIT
tcp 0 0 localhost.localdo:35513 localhost.lo:postgresql TIME_WAIT
tcp6 0 0 [::]:postgresql [::]:* LISTEN

宜しくお願いします。
03493422013/01/18(金) 18:13:36.36ID:???
>>347
一応再起動はしています。
0350NAME IS NULL2013/01/18(金) 18:21:49.50ID:???
>>348
確かに、postgresql.confでコメントアウトしていて、*でlistenしてるな。
うーん、わからんわ。ごめん。

PostgreSQLを複数インストールしていて、編集したpostgresql.confが今起動しているサーバのものじゃ
ないのかなぁ。
0351NAME IS NULL2013/01/18(金) 18:25:36.72ID:???
>>342
> すいません。pg_hdaを以下のように設定しているのですが、
> 外部に対してもリッスンしています。
で、どうしたの? って話なんだけど。何を困ってるのか分からん。
クライアントから接続できないとかなら、各種ログ出せば?
0352NAME IS NULL2013/01/18(金) 18:28:00.00ID:???
>>351
localhostからのconnectだけを受け付けたいのだが、それができないというのが困ってることだと。
もちろん、Firewallで制限したり、pg_hba.confで制限したりはできるけど、localhostだけでlistenできた方がいいでしょ。
03533422013/01/18(金) 18:28:08.04ID:???
>>350
> PostgreSQLを複数インストールしていて、編集したpostgresql.confが今起動しているサーバのものじゃないのかなぁ。
念の為確認してみます。

>> 351
ローカルからのみの接続にしたいのです。
0354NAME IS NULL2013/01/18(金) 18:29:34.56ID:???
例えば、VPSでWebアプリが使用する為にPostgreSQLを起動したいんだけど、デフォルトで
全IPアドレスからのconnectを受け付けることしかできないんじゃ困るでしょ。
03553422013/01/18(金) 18:30:25.15ID:???
>>350
今findしてみたらpostgresql.confは1つしか存在しませんでした。
0356NAME IS NULL2013/01/18(金) 18:34:26.63ID:???
>>355
pg_hda.confに書いてあるのは >>342 だけで後は全部コメント行なの?
postgresのサービスを再起動して設定を有効にした?
外部からpostgresにアクセスした状態で
netstat -a | grep postgres
とすると結果はどうなる?
0357NAME IS NULL2013/01/18(金) 18:43:06.32ID:???
348のnetstatの結果を見ると、
ひょっとしてWebアプリとかで内部経由でpostgresにアクセスしようとしてる?
postgresのpg_hda.confの設定は認証の許可を設定できるけど、ポートを閉じたりできないし、telnetのアクセスにも関係ないよ。
0358NAME IS NULL2013/01/18(金) 18:44:27.48ID:???
psqlで接続してSHOW listen_addresses;してみる
起動オプションでパラメータを上書きしてるんじゃね?
03593422013/01/18(金) 18:53:53.15ID:???
色々とありがとうございます。
それぞれ確認してみますので、少し待って下さい。
0360NAME IS NULL2013/01/18(金) 20:52:21.73ID:???
どのレイヤーで弾かれてるのかまず明らかにしろよ
0361NAME IS NULL2013/01/18(金) 21:09:41.96ID:???
どのレイヤーで弾かれてるのかまず明らかにしろよ
0362NAME IS NULL2013/01/18(金) 21:10:47.37ID:???
大事なことなので連投してしまいました
すみません
0363NAME IS NULL2013/01/18(金) 22:55:38.17ID:???
アホが一人いるだけで普段の数倍盛り上がるな。
0364NAME IS NULL2013/01/19(土) 03:26:05.97ID:???
>>351のことかなぁ
0365NAME IS NULL2013/01/19(土) 13:26:50.72ID:???
レコードの有無を調べるSQLは、
  SELECT 1 FROM <table_name> WHERE <条件>
で良いのでしょうか?
0366NAME IS NULL2013/01/19(土) 15:56:51.66ID:???
>>365
SELECT 1
じゃ常に1が返るだろう。
SELECT COUNT(1) > 0 FROM ・・・
とか?
0367NAME IS NULL2013/01/19(土) 16:00:24.38ID:???
って0件で判別するのなら 1 だけでいいか
03683652013/01/19(土) 16:20:51.92ID:???
count使うと遅いですよね。たぶん。

365の方法が最速な気がしないので質問する次第です。
言葉が足りず、すみません。
0369NAME IS NULL2013/01/19(土) 16:54:10.47ID:???
limitでも付けなきゃcountとたいして変わらんだろ
0370NAME IS NULL2013/01/19(土) 17:05:30.79ID:???
existsつかってみたら
03713652013/01/19(土) 19:19:32.77ID:???
>>369
その通りですね!
0372NAME IS NULL2013/01/20(日) 09:51:14.88ID:???
INDEXありゃ一発だしな
exists はlimitあわせればなんとか
0373NAME IS NULL2013/01/21(月) 22:03:40.94ID:???
>>348
postgresql.conf の listen_address をコメントアウトしてるみたいだけど
逆にコメント外して listen_addresses = 'localhost' にしたらどうなるの?
それでも netstat が変化しなかったら、読まれてないか上書きされてるかのどちらか
localhost 以外にも自分の普通のIPつけるとかしてみたらいいんじゃないかな
あと netstat には -n つけるのがオススメ
0374NAME IS NULL2013/01/22(火) 16:58:15.13ID:???
で、原因はなんだったの?
0375NAME IS NULL2013/01/22(火) 18:40:50.69ID:???
NAPTで思ってたのと違うホストにつながってた可能性もあるな
>>356はその辺も解決できる提案だとおもうけど、結果はられてないし結論は不明だけど。
0376NAME IS NULL2013/01/27(日) 00:41:09.08ID:wayacMrf
VACUUMが回収できる行だと判断する条件について質問があります。

実行中のトランザクションの最も古いxidの値が、
行のxmaxより大きい場合にVACUUMしてよい行と判断していると考えてよいですか?
0377NAME IS NULL2013/01/27(日) 00:44:44.45ID:wayacMrf
ストリーミングレプリケーションの、スレーブで実行する参照処理には、トランザクションIDが発行されないようですが、
行の可視性はどのように保証しているのでしょうか?
スナップショットを取得して判断している?マニュアルを読んでも、スナップショットについて理解できなかったので、可能であればスナップショットについて教えてください。
0378NAME IS NULL2013/01/27(日) 16:54:37.24ID:???
ソース読めばエエやん。
0379NAME IS NULL2013/01/27(日) 18:44:34.73ID:???
スレーブにはトランザクションって概念が無いじゃない。
0380NAME IS NULL2013/01/30(水) 15:05:04.04ID:???
PostgreSQLのレプリケーションは非同期だから
確実に最新の値を読む必要があるならばマスターを読みにゆくしかないのでは?
0381NAME IS NULL2013/01/31(木) 02:44:30.11ID:???
datetimeの表示で、秒未満を切り捨てて表示するにはどうしたらいいでしょうか。

たとえば
select created_at from exampletable where id = 1;
を実行したら
2013-01-01 12:34:56.389940
と表示されます。
これを
2013-01-01 12:34:56
と表示させたいです。
0382NAME IS NULL2013/01/31(木) 08:34:43.72ID:???
単にピリオド含めて右側を捨てるような文字列操作でいけるんちゃう?
少数以下一位で四捨五入とかしたいならもうちょっとややこしいだろうけど。
0383NAME IS NULL2013/01/31(木) 09:56:34.74ID:???
そんな定番な質問は調べればすぐに出てくるでしょうに・・・

to_char(created_at, 'YYYY-MM-DD HH24:MI:SS') でいいんでない?
0384NAME IS NULL2013/01/31(木) 10:18:02.79ID:???
TIMESTAMP(0)でキャストするとかね。
元からテーブル作成時にそうしてしまう手もあるけど。

SELECT NOW()::TIMESTAMP(0);
とか
CREATE table (t TIMESTAMP(0),・・・・
とかね
0385NAME IS NULL2013/01/31(木) 10:20:10.63ID:???
おっと、
CREATE TABLE table名・・ね
0386NAME IS NULL2013/01/31(木) 15:03:36.36ID:???
>>382-383
説明がたりませんでした。
いちいちキャストとか変換とかせずに、一括して秒未満を切り捨てて表示するような方法はないでしょうか。

>>384
テーブルスキーマでそのような指定ができるんですね。なるほど。
うーん、スキーマを変更する権限が自分にあればよかったんですけど。
0387NAME IS NULL2013/01/31(木) 15:16:36.55ID:???
オプション替えてPostgreSQLをビルドしなおすとか?
0388NAME IS NULL2013/01/31(木) 15:19:50.44ID:???
というか、君は何ができるの?
あれもできない、これもできないって後から言うくらいなら
どこまでできるのか先に提示してよ。
0389NAME IS NULL2013/01/31(木) 15:26:53.99ID:???
VIEWが作れるならVIEWはさめばいいし、UPDATEできるなら
一発で今のデータの小数点以下を消してしまえばいいし
0390NAME IS NULL2013/02/14(木) 17:09:45.13ID:???
select count(*) と select(id) では前者のほうが速いようなんですが、これはよく知られたことなんでしょうか。
PostgreSQL 9.1で実験したら:

select count(id) from users; -- 45ms
select count(*) from users; -- 34ms

自分の間違いじゃないかと思うんですが、もし違いがあるなら教えてください。
0391NAME IS NULL2013/02/14(木) 17:41:15.84ID:???
昔ならともかく、今は同じじゃないかなぁ。
ちなみに順番逆にしても*の方が速い?
0392NAME IS NULL2013/02/14(木) 17:45:55.29ID:???
>>390
同じだと思うよ。

参考URL:
http://wiki.postgresql.org/wiki/Slow_Counting/ja

ちなみに、上のページにも書かれているけど、9.2からはインデックスオンリースキャンが実装されているので
事情が違う。
0393NAME IS NULL2013/02/14(木) 17:48:00.11ID:???
9.2以降のCOUNT(*)におけるインデックスオンリースキャンに関する情報:
http://lets.postgresql.jp/documents/technical/9.2/1
0394NAME IS NULL2013/02/14(木) 18:38:15.00ID:???
>>391
何度か実行してみた結果です。順番変えても変わらず。analyzeしてもそう。

>>392
> 同じだと思うよ。
ですよねー。

> 9.2からはインデックスオンリースキャンが実装されているので事情が違う。
9.2からは count(id) と count(*) のどっちが速くなるんですか?
本来ならインデックスオンリースキャンでも変わらないようにみえます。実験してないけど。
0395NAME IS NULL2013/02/15(金) 10:29:28.66ID:???
>>394
> 9.2からは count(id) と count(*) のどっちが速くなるんですか?

9.2で何の事情が違うというのは、9.1までのCOUNT(*/id)との動作が違うということで、どちらかが
どうということではないよ。

> 本来ならインデックスオンリースキャンでも変わらないようにみえます。実験してないけど。

そう、インデックスを使えるなら、COUNT(*)もCOUNT(id)も9.1より速くなる。
0396NAME IS NULL2013/02/15(金) 17:03:26.06ID:???
>>395
> COUNT(*)もCOUNT(id)も9.1より速くなる。
そういうことを聞きたいんじゃなくて、count(*)とcount(id)で速度に違いはあるのかということです。
9.2になっても、違いはないはず -- Yes or No?
0397NAME IS NULL2013/02/15(金) 17:15:42.66ID:???
どちらが速くなるかと聞かれたので、どちらも速くなるとコメントした。
COUNT(*)とCOUNT(id)は、インデックススキャンが使われるなら、やっぱり同じだろう。
0398NAME IS NULL2013/02/15(金) 18:14:31.46ID:???
実行計画はどちらも同じなの?
0399NAME IS NULL2013/02/20(水) 12:35:12.92ID:???
ソースからmakeして、バイナリしか残ってないんだけど
configureオプションに何を指定したか、バイナリのオプションで表示できないのかな?
0400NAME IS NULL2013/02/20(水) 13:32:01.40ID:???
pg_config も無いの?
0401NAME IS NULL2013/02/20(水) 13:42:59.33ID:???
>>400
ありました。そしてオプション表示されました。ありがとうございました。
http://www.postgresql.jp/document/8.4/html/app-pgconfig.html
0402NAME IS NULL2013/03/14(木) 21:24:41.85ID:???
9.3出たら呼んで
0403NAME IS NULL2013/03/16(土) 21:42:31.11ID:???
pg_trgm更新遅くなりすぎて使い物にならん
0404NAME IS NULL2013/03/20(水) 01:20:39.20ID:???
INSERT SELECTした時、SELECT部分で帰ってきたデータを取得する事って出来ますか?
テーブルA,B,Cてあって、BはAのIDを、CはBのIDみたいに親子関係に有った時、
テーブルAで採番されたIDを持つコピー後データをBに、テーブルBで採番されたIDを持つコピー後データをCに
て感じにしたいんだけど、今のテーブル構造だとコピー元、コピー後のマッピングができなくてどうにも出来ないんだ。
それぞれのテーブルにold_idみたいに、コピー前IDを持つようにしたほうが早い?
0405NAME IS NULL2013/03/20(水) 03:01:36.92ID:???
バージョン書いてないから対応してるかどうかわからないけど、returningで調べるといいよ
0406NAME IS NULL2013/03/20(水) 06:31:51.52ID:???
404じゃないけど。

この板、ほんとスキルが高くて親切な人が多いなあ。
Letsの人かな。
感謝してます。
04074042013/03/20(水) 15:41:52.97ID:???
>>405
こんな物が有ったなんて!
バージョンは9.2なので使えそうです
本当に有難うございます!
0408NAME IS NULL2013/03/27(水) 23:37:45.57ID:???
9.0でラージオブジェクトを含む初期データをpsql -f でファイルから読み込んで作ろうと思っています
lo_importで画像を登録するにはpostgresユーザー権限が必要だけど
実際そのDBを使うのはhogeユーザーっていう状況です

importした後にalter lrage objectを使ってhogeユーザーに変えようと思っているんですが、
この時lo_importで発行したoidを変数的なものに入れておくことは出来ないでしょうか

今やっている方法としては、lo_import('ファイル', 1);
alter lrage object 1 owner on hoge
てかんじでIDを直打ちしているんです
0409NAME IS NULL2013/03/31(日) 11:22:15.98ID:???
lo_create でつくるとか?
一時テーブル作って、INSERT文でlo_import 使えばそのテーブルにid入ることは入るけど
そう言う手はどう?
0410NAME IS NULL2013/04/02(火) 14:29:15.00ID:???
セセセセキュリティホールが見つかったとか聞いて飛んできました!
だだだ大丈夫ですかぁあああ!?
0411NAME IS NULL2013/04/05(金) 09:12:17.06ID:???
認証不要でDB破壊できちゃうみたいだからかなりヤバげ。
外に晒してなくて信頼できるところからしか接続されないようになってるなら
それほど影響ないかもしれないけど。
0412NAME IS NULL2013/04/24(水) 19:09:55.83ID:???
おまいら、ご存じでしたら教えてください。

ストアド(pl/pgsql)の定義を厳密にチェックするように設定出来ますか?
lintに相当するチェック機能はありませんか?
0413NAME IS NULL2013/04/24(水) 20:13:18.47ID:???
元々Cとかに比べるとかなり厳密。
0414NAME IS NULL2013/04/25(木) 12:35:08.00ID:???
https://github.com/okbob/plpgsql_lint
こういうのとかどうかね
0415NAME IS NULL2013/04/27(土) 16:13:16.72ID:???
javaのほうから誘導されてきました。

windows7Pro
PostgreSQL9.2.1
で開発しています。

教えてください。

javaでsqlのinsert文を発行するとき

String str1 = (String) table.getValueAt(row, 1);
String str2 = (String) table.getValueAt(row, 2);

String str = "insert into test_numbers (number, date) values ('"+ str1 + "', '" + str2 + "')";

(1)str1が'1'でstr2が'20130427'ならinsertできて
(2)str1が'1'でstr2が'2013/04/27'ならinsertできないのですが
どうしてなのでしょうか?

コンソールから上記sqlを発行すると、(1)も(2)も問題なく処理されます。
0416NAME IS NULL2013/04/27(土) 21:59:14.36ID:jltwdQnB
>>415
コンソールはクライアントのロカールを見て、日付の書式を自動的に年/月/日に
設定してくれている。
Javaからの接続はこの設定を変えないので、サーバ側で指定された書式(たぶん
月/日/年になっている)が使われている。
年/月/日形式の日付書式を使うには、
サーバのpostgresql.confにある設定を
datestyle = 'iso, ymd'
とするか、毎回接続開始時に
set datestyle to 'iso, ymd';
とすればよい。
0417NAME IS NULL2013/04/28(日) 10:48:30.26ID:???
どのデータベースでも言えることだけど、
商用ソフトとして作ってるなら、日付書式は予めプログラム側でやっとく方が良いよ。
0418NAME IS NULL2013/04/28(日) 16:40:46.97ID:???
to_date('$str2', 'yyyy/mm/dd') かな。
0419NAME IS NULL2013/04/29(月) 14:07:33.75ID:???
日本人の払った貴重な血税から
ゴキブリ在日朝鮮人に生活保護が支払われている

ゴキブリ在日朝鮮人の一家族で年間600万円である

ゴキブリ在日朝鮮人の2人に1人は生活保護だ

これより安い給料で働いている日本人が
少ない給料から支払った税金が
ゴキブリ在日朝鮮人の生活保護になっている

ゴキブリ在日朝鮮人は生活保護をもらって
感謝もせず 当然のような顔をして
毎日パチンコをして遊び暮らしている

ゴキブリ在日朝鮮人の犯罪者も非常に多い
ヤクザの2人に1人はゴキブリ在日朝鮮人だ

日本社会の寄生虫 ゴキブリ在日朝鮮人
日本から出て行け! ゴキブリ在日朝鮮人
0420NAME IS NULL2013/04/29(月) 23:36:02.70ID:???
>>416
>>417
>>418
ありがとうございます!
0421NAME IS NULL2013/05/12(日) 05:40:49.34ID:xkZS/dht
PostgreSQL 9.3-beta1
0422NAME IS NULL2013/05/13(月) 23:12:55.27ID:???
本来の使い方ではないかもしれませんが・・・

integer型1カラムで主キーを設定してテーブルを作成しました。
ここに特定のIDをINSERTできれば、排他ロックを取得、
エラーが起これば、他のクライアントで排他処理中としようかと。

INSERT INTO TESTTABLE SET ID=123 ;
とSQLを投げて、エラー(例外)をキャッチしているのですが、
もっとスマートな方法はありませんか?

エラーが返ってくるのではなく、INSERTが成功すればTRUE、
失敗すればFALSEを返すようなSQL文ってないでしょうか?
0423NAME IS NULL2013/05/13(月) 23:19:28.28ID:???
INSERTしないでSELECT FOR UPDATE NOWAITしろよ。
0424NAME IS NULL2013/05/14(火) 00:03:43.40ID:???
FOR UPDATEを知らなかった・・・ お恥ずかしい。
ちと調べてきます。
0425NAME IS NULL2013/05/14(火) 00:50:56.20ID:???
>>421
起こせよ寝坊しただろ
0426NAME IS NULL2013/05/14(火) 06:51:13.88ID:???
beta版だからまだ寝てていいよ。
0427NAME IS NULL2013/05/14(火) 12:28:25.59ID:???
おれもbetaだからまだいいかと思ってた
0428NAME IS NULL2013/05/14(火) 16:10:31.76ID:???
単にbetaと付いているだけで気にせず使ってねっていうソフトも結構多いけど、
PostgreSQLはそういうソフトじゃないしねい
0429NAME IS NULL2013/05/14(火) 16:45:29.41ID:???
betaだからと気にしながらも、どんどん使えってことか。
0430NAME IS NULL2013/05/15(水) 19:34:48.52ID:???
7.3で、毎日vacuumdbしてんだけど、最近重い。
年に一度くらいは、pg_dumpしてpsqlリストアとかすべき?
あんまり関係ないですかね?
0431NAME IS NULL2013/05/15(水) 20:17:13.34ID:???
何が重いの?vacuum?
0432NAME IS NULL2013/05/15(水) 20:28:27.65ID:???
参照系全般です。
0433NAME IS NULL2013/05/15(水) 21:38:42.58ID:???
reindexはしてないの?
0434NAME IS NULL2013/05/16(木) 00:07:46.22ID:???
なんとreindexを定期実行しなきゃいけないのか。
無知だったわ。
でも止められないシステムだから、気軽にできないなぁ
0435NAME IS NULL2013/05/16(木) 00:10:40.67ID:???
7.3ならダンプレストアするのが早いかもなー
0436NAME IS NULL2013/05/16(木) 19:55:22.39ID:???
古いバージョン使い続けている事自体が問題かもな。
0437NAME IS NULL2013/05/16(木) 21:27:47.08ID:???
もちろんそれは気になるけれど、それ自体が問題というのはちょっとな
0438NAME IS NULL2013/05/16(木) 21:48:44.28ID:???
止めずに使ってるんだから大したもんだよ。
他所だと止めてない、っていうとパッチ当ててないのか?とか批判されそうだけど。
0439NAME IS NULL2013/05/16(木) 22:04:00.81ID:???
それは環境によるとしかいえないなぁ
非難すべき状況かもしれないし、そうじゃないかもしれないし
0440NAME IS NULL2013/05/17(金) 00:56:07.32ID:???
postgresql 9.2でも、textsearch_senna は問題なく使用できますか?
0441NAME IS NULL2013/05/17(金) 07:17:48.85ID:???
世の中何でも24時間稼働という風潮になってきていて
その核となるDBMSは止められないことが多いからなあ…
セキュリティ確保のためオンライン自動アップデート系の
メンテ方法も採用できないことも多いし…
運用はいつの世でも大変だ
0442NAME IS NULL2013/05/17(金) 15:41:04.62ID:???
>>441
いまどき運用サイドから見て止められないシステムを作っちゃうのが悪いわ。
04434302013/05/18(土) 16:17:51.60ID:???
孫請けだから、要件通り7.3を止めずに動かしてお金もらうだけだわ。
怖いからFWや別のレイヤーで色々ガチガチには固めてるけど。
トラブっても責任逃れする準備も含めて周到にやってる。

で、ここの人達はみんな9.2とか使ってるのか。裏山
0444NAME IS NULL2013/05/18(土) 17:30:41.27ID:???
有効に使われているシステムほど、古くなってもバージョンアップが
できないですよね。
0445NAME IS NULL2013/05/19(日) 17:40:28.78ID:???
>>440
9.2どころか8.3でもダメじゃなかったっけ?
0446NAME IS NULL2013/05/20(月) 08:54:04.38ID:???
え?
これだけじゃレプリケーションは勿論駄目だけど一応使えてるよ
0447NAME IS NULL2013/05/20(月) 13:28:12.96ID:???
>>440
textsearch_jaだけど若干のソースの書き換えと文字コードをutf-8bom無しへの変換でいけたよ。
ソースの書き換えはsqlの大文字を小文字に直した程度だったと思う。
0448NAME IS NULL2013/05/20(月) 17:49:13.70ID:???
>>443
うちは8.2だわ
0449NAME IS NULL2013/05/22(水) 08:44:10.45ID:sZW/XsQO
自動バキュームの恩恵を受けられる8.3以降を使わないのは勿体ない。
0450NAME IS NULL2013/05/22(水) 09:17:11.25ID:???
更新も検索も常に走るようなシステムだとキツいからずっとoffったままだなauto
0451NAME IS NULL2013/05/22(水) 09:19:18.16ID:???
もったいないつーても
止められない事情と天秤にかけての判断になるからな
無理矢理止めて入れ替えてトラブったら目も当てられん
現実は厳しいぜ
0452NAME IS NULL2013/05/22(水) 09:21:51.73ID:???
もとい、朝方だけ落ち着くのでその時間にvacuumするのがやっぱ運用しやすかった
いちいち調整するのも大変だし、
autoじゃ拾いきれなくてどっちみち手動vacuumするしかなかった。
0453NAME IS NULL2013/05/22(水) 12:25:38.36ID:???
9.0ぐらいからかvacuum自体あまりしなくてよくなったんだっけ。
0454NAME IS NULL2013/05/22(水) 15:05:32.48ID:sZW/XsQO
HOTが有効な更新が多いならバキューム自体あまり気にしなくていいはず。
0455NAME IS NULL2013/05/22(水) 16:08:44.22ID:???
最近は参照があるたびにcountカラムをインクリメントするような事してるけどデッドタプル結構貯まるんだよなぁ。
まぁ以前のバージョンに比べればデッドタプル多少貯まってもパフォーマンスに影響そんな無いみたいだから気にしてないけど。
0456NAME IS NULL2013/05/23(木) 11:18:18.71ID:???
8.3よりも前のバージョンの自動バキュームは何がダメなの?
0457NAME IS NULL2013/05/23(木) 14:11:26.77ID:CmgD6Bce
>>456
たしか自動バキュームのワーカープロセスが1つしかないから
大きいテーブルの自動バキュームが走ると、それが終わるまで
他のテーブルへの自動バキュームが出来なくなるとかだった気がする。
で、8.3からは複数ワーカープロセスが動けるようになった。
0458NAME IS NULL2013/05/31(金) 03:38:01.00ID:???
>455
一般論で言えば、テーブルにFILLFACTORを設定すれば、そんなにデッドタプルが溜まることはなくなるはず。
0459NAME IS NULL2013/05/31(金) 05:51:48.57ID:???
テス
0460NAME IS NULL2013/05/31(金) 06:03:46.91ID:bz/a3XA7
初心者質問で恐縮です。
バージョン9.2です。
例えばwhere id=? and code=? という条件を
codeのパラメーターの値が無ければすべて抽出するという書き方はありますか?
0461NAME IS NULL2013/05/31(金) 07:58:45.54ID:???
あるよ。
04624612013/05/31(金) 08:00:38.15ID:???
ヒントも書いとく。
WHERE ID=? AND ( X )
Xの部分は自分で考えろ。
0463NAME IS NULL2013/05/31(金) 20:54:33.02ID:laXbRm2m
>>462
()で括っているのがヒントですか?
0464NAME IS NULL2013/05/31(金) 22:20:53.49ID:???
code = ? or code is nullかなあ
0465NAME IS NULL2013/05/31(金) 23:02:30.51ID:laXbRm2m
>>464
パラメーター値がある時は抽出できますが
すべて抽出はできませんでした
0466NAME IS NULL2013/06/01(土) 03:28:14.99ID:???
IF文使えばいけるけど、プログラムで実行するSQL文制御した方がいいよ。
0467NAME IS NULL2013/06/01(土) 07:35:46.87ID:???
select * from R where id=? and code=? or not exists (select * from R where id=? and code =?)
0468NAME IS NULL2013/06/01(土) 08:49:31.94ID:gkJE/QhY
書いてくれた方ありがとうございます!
>>467 だとほんとにすべて抽出されます。

私の書き方がまちがっていたようです。
すいません。

例えば
where id=? and code=? という条件で

code=0 の時

where id=?

code=1以上 の時(値があるとき)

where id=? and code=?

と、したいのです。
0469NAME IS NULL2013/06/01(土) 09:35:50.62ID:???
>>468
>>462
0470NAME IS NULL2013/06/01(土) 09:48:40.81ID:???
whereにor使えること知らないの?
0471NAME IS NULL2013/06/01(土) 10:04:02.82ID:???
ORを知らないんだろ。
0472NAME IS NULL2013/06/01(土) 10:11:04.56ID:???
>>468
もしパラメータがないことを表す値がcode = 0のようにわかっているなら
select * from R where id=? and (code=0 or code=?)

そうでないなら、467にかっこを加えて
select * from R where id=? and (code=? or not exists (select * from R where id=? and code =?))
0473NAME IS NULL2013/06/01(土) 10:16:30.29ID:???
うちの会社じゃSQLの新人(中途でも)に1日目に教えるような簡単なことなのに。
0474NAME IS NULL2013/06/01(土) 10:25:06.96ID:gkJE/QhY
>>472
できました!ありがとうございます。

これって相関サブクエリでcode=?以外を抽出するって意味でしょうか?
04754742013/06/01(土) 10:29:08.37ID:gkJE/QhY
書き忘れましたが、下記のSQLでです。
select * from R where id=? and (code=? or not exists (select * from R where id=? and code =?))
0476NAME IS NULL2013/06/01(土) 10:50:15.78ID:???
>>473
外野は黙ってろ
そういうくだらない茶々入れが荒れる元になるんだ
お前のところの教育がどうこうなんてこの流れで言うことか
話の流れに沿わない書き込みはするな
0477NAME IS NULL2013/06/01(土) 16:16:29.67ID:???
そういう口調も荒れる原因になったりするんだけどね。
穏やかに行こうよ。
0478NAME IS NULL2013/06/01(土) 22:23:59.30ID:???
>>474
いや相関ではない。
手続き的に言えば
最初にサブクエリが実行され、その結果(true/flse)に置き換えて
メインクエリが実行されるというイメージ。
(よっぽど駄目なDBMSでなければ)
04794742013/06/01(土) 23:28:51.60ID:gkJE/QhY
>>478
丁寧な説明とわかりやすい指導ありがとうございます。
0480NAME IS NULL2013/06/03(月) 02:34:33.27ID:???
ホントにできたのかな…
0481NAME IS NULL2013/06/03(月) 02:39:01.34ID:???
だけって言うのもあれなので、、

前者は質問者の話の流れで行くと、code=0は常に偽となるだろうから
select * from R where id=? and (code=0 or code=?) は
select * from R where id=? and (FALSE or code=?) となって
select * from R where id=? and code=? と同じかなと。

後者なら回りくどいけど、動きそうか。
0482NAME IS NULL2013/06/03(月) 09:23:40.91ID:???
>>461 = >>462だけど、>>481には正解がないよ。
0483NAME IS NULL2013/06/03(月) 10:28:05.38ID:???
わかってる
0484460, 4742013/06/03(月) 19:14:11.67ID:2r5NLX9l
>>481は、間違い?
0485NAME IS NULL2013/06/03(月) 20:32:31.77ID:???
>>484
あなたが希望したとおりに動いてるのなら正解
そうじゃないなら間違い
0486460, 4742013/06/03(月) 20:45:51.67ID:2r5NLX9l
select * from R where id=? and (code=? or not exists (select * from R where id=? and code =?))
このsqlで、

code=0 すべてのレコードを抽出
code=1 codeが1のレコードを抽出
code=2 codeが2のレコードを抽出

というかたちで希望どうりの動きができています。
0487NAME IS NULL2013/06/03(月) 22:19:10.74ID:???
code=ナントカって、渡すパラメータのことを言ってたのか?
だったらサブクエリなんか使わんでも

select * from R where id=? and (code=? or ?=0)

でいいんじゃね?
04884612013/06/03(月) 23:18:49.53ID:???
>>487
正解
0489NAME IS NULL2013/06/03(月) 23:29:01.79ID:???
だね。何で回りくどい書き方をしたのか
0490NAME IS NULL2013/06/04(火) 08:17:27.14ID:???
>>460
0491NAME IS NULL2013/06/05(水) 02:59:27.46ID:???
?
0492NAME IS NULL2013/06/05(水) 19:02:19.75ID:???
??
0493NAME IS NULL2013/06/05(水) 19:09:28.06ID:???
文字化けがひどいな。
0494NAME IS NULL2013/06/05(水) 20:41:39.33ID:???
???
0495NAME IS NULL2013/06/11(火) 16:13:30.71ID:???
おまいら、質問です。
CREATE FUNCTIONでストアド作る時にフィールドやらテーブルの存在チェックをする方法はありませんか?
もしくはビューやストアドに使われてるフィールドやらテーブルの存在チェックを一括で実行する方法はありませんか?

デフォルト設定のMacOSX用9.2.4と、Windows版pgAdminIIIの組み合わせでストアドを作っています。
設定変更でチェック出来るなら変更します。

今は1個1個実行してバグ出ししてます。
(命名規則違反が見つかった時とかは修正後ストアドのテストやり直し><;;)
0496NAME IS NULL2013/06/11(火) 16:27:20.52ID:???
>>495
> CREATE FUNCTIONでストアド作る時にフィールドやらテーブルの存在チェックをする方法はありませんか?
無い。
> もしくはビューやストアドに使われてるフィールドやらテーブルの存在チェックを一括で実行する方法はありませんか?
無い。
> (命名規則違反が見つかった時とかは修正後ストアドのテストやり直し><;;)
自動テストにしておけばいい。
0497NAME IS NULL2013/06/11(火) 16:31:27.36ID:???
>>496
�dクス。VBAのExplicitに慣れすぎた体にはストアドのこの仕様(?)は堪える。orz
0498NAME IS NULL2013/06/11(火) 22:27:06.62ID:???
質問です
pg_restoreでエラーが出るんですが、原因がわかりません。

CentOS 5.3
PostgreSQL 7.3.6
pg_restore -h localhost -p 5432 -U postgres -v -d "mydb" "/home/root/xxx.backup"

エラーメッセージ
pg_restore: [archiver] unsupported version (1.10) in file header

RedHatでバックアップしたやつなんだけど同じ7.3.6のをバックアップしたのに「unsupported version」ってなんで??
Windowsで PostgreSQL8.? を入れてあるやつでバックアップしたんだけどそれが原因?
この場合、無理やりリストアする事はできない?
0499NAME IS NULL2013/06/12(水) 01:49:31.84ID:???
>>495-496
Function作る時にTableがなければerrorでるだろ?
0500NAME IS NULL2013/06/12(水) 02:47:25.94ID:???
>>498
そのエラーメッセージでググると
それっぽいQ&A記事が引っかかるよ
05014982013/06/12(水) 09:04:13.53ID:???
>>500
ググったんだけどそもそも日本語の結果がほとんどヒットしなくて、
違うバージョンのにリストアする方法しか見つからなかった

因みに諸事情によりdumpのオプション変えて取り直しとかは不可な状況です
0502NAME IS NULL2013/06/12(水) 09:12:37.22ID:???
>>501
訳せよ。
0503NAME IS NULL2013/06/12(水) 10:52:41.81ID:???
>>498
> pg_restore: [archiver] unsupported version (1.10) in file header
>
> RedHatでバックアップしたやつなんだけど同じ7.3.6のをバックアップしたのに「unsupported version」ってなんで??
> Windowsで PostgreSQL8.? を入れてあるやつでバックアップしたんだけどそれが原因?
1.10になってるということはPostgreSQL 8.0以降のpg_dumpを使ってしまったみたいだね

> この場合、無理やりリストアする事はできない?
PostgreSQL 8.0以降の版でいったんリストアしてからテキストダンプして古い方に取り込むとか
0504NAME IS NULL2013/06/12(水) 14:37:34.23ID:???
>>499
LANGUAGE SQL の時はね。
LANGUAGE plpgsq lの時は出ない。
0505NAME IS NULL2013/06/12(水) 16:41:34.53ID:???
どっち準拠に従うべき?
0506NAME IS NULL2013/06/12(水) 22:23:32.26ID:???
PostgreSQLだけしか使えない奴って居るの?
0507NAME IS NULL2013/06/12(水) 22:40:13.45ID:???
何の意味があんのその質問
0508NAME IS NULL2013/06/13(木) 00:22:06.60ID:???
全くだな
質問にもそれなりの仕方・手順というものがある
聞かれた方が「何でそんなこと聞くの?」って
目を白黒させるようなものはいただけない
0509NAME IS NULL2013/06/13(木) 04:28:12.64ID:???
いたところで、どうすんのって思うわけで。
0510NAME IS NULL2013/06/13(木) 14:56:45.22ID:???
喧嘩はやめて!(´;ω;)
0511NAME IS NULL2013/06/13(木) 19:35:13.46ID:???
ふたりをを止めて!(´;ω;)
0512NAME IS NULL2013/06/13(木) 21:02:19.46ID:???
サーバーも止めて!
0513NAME IS NULL2013/06/13(木) 21:20:49.50ID:???
私のために争わないで!
ヌルかナルかなんてどっちだっていいじゃない!
0514NAME IS NULL2013/06/13(木) 21:56:47.86ID:???
もぉ、こ〜れ〜い〜じょお〜♪

てか、古いな
0515NAME IS NULL2013/06/14(金) 04:15:07.05ID:???
>>512
(お……Fullか……?)
0516NAME IS NULL2013/06/16(日) 19:39:58.89ID:???
(forever love…?)
0517NAME IS NULL2013/06/18(火) 03:05:22.33ID:???
実行計画が同じなのに実行時間が倍以上違うのは何が原因?
キャッシュなどはすべてクリア済みっす
0518NAME IS NULL2013/06/18(火) 04:54:47.40ID:???
キャッシュのクリアって具体的にどうやってんの?
カーネルが持ってるキャッシュもあるし、OS再起動後に計ってるってこと?
マシンのスペック、postgresql.confは全く一緒なの?
05195172013/06/18(火) 14:31:42.81ID:???
>>518
キャッシュクリアの方法ですがOS再起動しています。
以下、作業手順になります。

1.測定
2.OS再起動
3.SQLで使用しているテーブルに対して、VACUUM ANALYZEとREINDEXを実施
4.測定

このとき、1と4の結果で実行計画が同じなのに、処理時間は倍以上あったりします。

ちなみに、4のあとOSを再起動して、
再度、VACUUM ANALYZEとREINDEXを実施後に測定すると、
実行計画や処理時間が1の結果と同じになったりします。(ならないときもあり)

何が原因でここまで不安定になるのでっしょう?
0520NAME IS NULL2013/06/18(火) 14:57:57.12ID:???
同じとか倍とか言うけど、それは10msのオーダーなのか100秒のオーダーなのかわからん。
あと、他のプロセスが忙しかったりはしないのか?
0521NAME IS NULL2013/06/18(火) 14:59:32.20ID:???
あと、vmstat, iostat, ifstat, netstat, dstat, top, htop, sarとかを駆使して、実行環境に違いがないか確認しろ。
0522NAME IS NULL2013/06/18(火) 15:00:07.19ID:???
おっと、そういやOSは何なんだ?
05235172013/06/18(火) 15:16:20.98ID:???
>>520
>>521
測定時間は速いときは約30分、遅い時は約1時間です。
測定時裏で動いている各プロセスの動きとかは確認していないので確認してみます。

>>522
OS は CentOS5.6 てす。

あとPostgresSQLのバージョンは 9.2.4.1 です。
0524NAME IS NULL2013/06/18(火) 19:05:32.67ID:???
30分と1時間っていうのは、1つのSQLの1回の実行時間じゃないだろ!
ディスクアクセスの所要時間(待ち時間)の差だけでも30分ぐらいになるんだろう。
0525NAME IS NULL2013/06/18(火) 21:53:22.09ID:???
一回かもしれないじゃないか(ガクガク
0526NAME IS NULL2013/06/18(火) 22:15:05.43ID:???
まさかクライアントとかから同じSQLを何万回も呼び出したりしてるのかしら?
connectして、execして、disconnectしてたりして。
0527NAME IS NULL2013/06/18(火) 23:35:51.98ID:???
うむ、OLTP系とOLAP系の人ではタイムスケールが合わないな
0528NAME IS NULL2013/06/18(火) 23:55:22.91ID:???
なるほど、同じマシンでってことか
まさかとは思うが、autovacuumが動いてて影響してるとか…
0529NAME IS NULL2013/06/19(水) 00:16:12.98ID:???
>>519
1. の方が早いのかな?
当てずっぽうだけど4. の方は、ヒープのヒット率が低くてディスクI/Oが増えてるとか。
0530NAME IS NULL2013/06/19(水) 08:23:36.43ID:???
つか、俺らがそのPCの前に行けば、多分5分もあれば原因わかるようなことだろうな。
0531NAME IS NULL2013/06/19(水) 10:25:52.29ID:???
こじれてる初心者質問はどの分野でもそうだけどなw
0532NAME IS NULL2013/06/21(金) 00:07:09.32ID:???
久々に笑ったw
ttp://ml.postgresql.jp/pipermail/pgsql-jp/2013-June/016379.html
0533NAME IS NULL2013/06/21(金) 12:35:42.96ID:???
>>532

この人、MLで質問する前に楽天で質問してた

ttp://qanda.rakuten.ne.jp/qa8137892.html
だいじょぶか、この会社
0534NAME IS NULL2013/06/22(土) 14:15:50.88ID:???
>>533
MLに入ってなかったんじゃないの?
2chに慣れてしまっているせいかメールクライアントやMLのスレッド表示はなんか見づらい
0535NAME IS NULL2013/06/22(土) 15:30:37.80ID:???
MLって初心者には敷居が高いしな。
0536NAME IS NULL2013/06/22(土) 15:36:45.93ID:???
9.2でまともに使えるN-gram系の全部検索ライブラリとかあったら教えて欲しい
※標準で入ってるN-gram検索は2文字以下では使い物にならないのでそれ以外で
05375362013/06/22(土) 16:51:43.46ID:???
自己解決した
Ludiaで終わってたと思ってたNTTデータがやってくれてました
ありがたやありがたや
これで、MySQLからPostgreSQLに戻ってくることができる
0538NAME IS NULL2013/06/23(日) 00:18:51.92ID:???
>>534

レプリケーションしてるかどうかも確認できないレベルで運用してたってスゴくね?

ド素人がなんでレプリケーション組んだんだろ?
故障してから24時間、どこから手をつけていいか全然見当つかなかったようだし、
監視ツールも使ってないみたいだし。
0539NAME IS NULL2013/06/23(日) 00:34:34.73ID:???
>>538
世の中のシステム管理者のレベルってそういうのが結構多いよ。
この前、お客さんところ行ってサーバー見たらさ、
RAIDの管理ツールも入ってるのに、SATAのHDDが1台入ってるだけなんだよ。
そこの会社のサーバー数十台全部そういう状態。
担当者は、RAID組んであるはずなのになぁ、、、って言ってたわ。
0540NAME IS NULL2013/06/23(日) 06:07:11.57ID:???
構築する人と運用する人は別だったりするしな。
0541NAME IS NULL2013/06/23(日) 09:17:35.68ID:???
>>539
それ、最初からRAIDになってなかった臭いな。
刑事事件に発展しそうな案件だな。
0542NAME IS NULL2013/06/23(日) 10:26:49.19ID:???
RAIDマネージャー入れたらOKと思ってただけなんじゃないの?
0543NAME IS NULL2013/06/23(日) 16:36:46.10ID:???
嘘でしょ
0544NAME IS NULL2013/06/23(日) 17:15:30.25ID:???
ちゃんと入れたほうが金になるから業者もちゃんと入れるだろうに、、、
思いっきり安い見積もりでオプションのHDD入れてないとかかな
0545NAME IS NULL2013/06/23(日) 17:21:26.07ID:???
>>537
pg_bigrm?
標準のginってfastupdateでもやっぱちょっと遅くない?(更新が)

そう言えば9.2でamが追加になってたけど、txtsearchsennaって9.2いけんのけ?
0546NAME IS NULL2013/06/23(日) 21:12:11.11ID:???
発注する時に総務が一番安いモデルにしたとか。
昔勤めていた会社ならやりそうだ。
0547NAME IS NULL2013/06/24(月) 21:27:18.96ID:???
>>545
textsearchsennaはインスコでこける
0548NAME IS NULL2013/06/24(月) 22:03:24.95ID:???
あぁやっぱり。
多分追加になったamを書き足せばいけるだろ。
帰ったらやってみるかな。
0549NAME IS NULL2013/06/24(月) 23:03:39.09ID:???
書いたままクエリを実行する(gccの-O0のような)隠しオプションはないのかな
自分でソース書き換えるしかない?
0550NAME IS NULL2013/06/24(月) 23:05:49.57ID:???
意味不明すぎる。
0551NAME IS NULL2013/06/24(月) 23:18:17.54ID:???
俺も十回読んだが理解できなかった
俺の理解力が足らないのかと少し悩んだ
0552NAME IS NULL2013/06/24(月) 23:20:26.48ID:???
クエリを最適化せずに(書いてある通りに)実行するオプションってことじゃないの
0553NAME IS NULL2013/06/24(月) 23:56:07.85ID:???
join_collapse_limitとかの話?
0554NAME IS NULL2013/06/25(火) 00:03:38.85ID:???
確かそれを1にしても選択と結合の交換などは止められなかったはず
0555NAME IS NULL2013/06/25(火) 07:34:53.19ID:???
"クエリ最適化なし"の定義が分からん
0556NAME IS NULL2013/06/25(火) 11:25:15.44ID:???
コストベースじゃなくてルールベースってことかも。
0557NAME IS NULL2013/06/25(火) 13:25:32.79ID:???
実行計画を自分で決めたいってことか?
でも、「書いたまま」ってのがイミフだな・・・・・・。
0558NAME IS NULL2013/06/25(火) 14:46:00.13ID:???
結合順とか絞り込み順とか、そのままの順番で動いてほしいんじゃないの
結合に関しては()使えば強制できるんだっけ?
0559NAME IS NULL2013/06/25(火) 15:02:43.04ID:???
本人の説明なしにあれこれ推論してもあんま意味ないな
0560NAME IS NULL2013/06/25(火) 15:05:50.75ID:???
大方の見方は一致してるようだけどね
0561NAME IS NULL2013/06/25(火) 20:20:25.03ID:???
説明不足ですみません。
書いたままというのは
select A from R1,R2 where F
みたいな形の式を「R1,R2を結合(直積)して条件Fで選択してAで射影」という素朴な順序で評価する
という意味です。
RDBMSは通常ここから、関係代数式の等価規則を使って演算順序を組み替えるとか、
統計情報をもとにハイパーグラフのリダクションや動的計画法で効率的な順序を決める
といった最適化をして実行計画を作るわけですが、その効果をみる上でもベースとなる
素朴な評価順序での計測ができないかなと思って質問しました。
0562NAME IS NULL2013/06/25(火) 20:33:41.30ID:???
DBMSの比較表でもつくんのかな
0563NAME IS NULL2013/06/25(火) 20:34:00.52ID:???
素朴な順序じゃないだろ。
漢字で表現するなら「愚直な順序」の方が適切だな。
0564NAME IS NULL2013/06/25(火) 20:36:14.59ID:???
というかな、その程度のことなら、SQL3回流せば終わりだろ。
�@SELECT R1.*,R2.* FROM R1,R2;
�ASELECT R1.*,R2.* FROM R1,R2 WHERE F;
�BSELECT A FROM R1,R2 WHERE F;
これで561の計測したいことは全部計測できるだろ。
0565NAME IS NULL2013/06/25(火) 20:43:06.86ID:???
結合方法も比較したいかもなぁ。
enable_hashjoin とか使うといいかもね。そこまでの強制力はなかったと思うけど。
0566NAME IS NULL2013/06/25(火) 20:53:07.62ID:???
>>564
これは各段階に常にMaterializeを入れた結果になるから駄目だろ。
0567NAME IS NULL2013/06/25(火) 20:55:33.27ID:???
>>563
select文をパースして最初にできる問い合わせ木の順序と考えると
「素朴」でもいいんじゃない。
0568NAME IS NULL2013/06/25(火) 22:01:36.25ID:???
>>566
>>561は差を知りたいだけなんだろ?
0569NAME IS NULL2013/06/25(火) 22:17:41.86ID:???
pg_hint_plan使えば試したいプランを実行できんじゃないの?
よく知らんけど。
0570NAME IS NULL2013/06/26(水) 00:14:55.71ID:???
そういやそんなんあったな
0571NAME IS NULL2013/06/26(水) 03:24:05.11ID:???
>>561

>>RDBMSは通常ここから、関係代数式の等価規則を使って演算順序を組み替えるとか、
>>統計情報をもとにハイパーグラフのリダクションや動的計画法で効率的な順序を決める
>>といった最適化をして実行計画を作るわけですが、

ポスグレのプランナとオプティマイザは不可分で、最初っからダイナミックプログラミングで
ごりごりプランツリーをつくってくから、「後から最適化」って概念がないんじゃないの。

因みにポスグレはプラン処理の前処理で"1+1"を2にしたり、可能ならサブクエリをJOINにするとかの最適化を行うらしい。
某書籍の受け売り。
0572NAME IS NULL2013/06/26(水) 05:41:33.52ID:???
プランニングの前処理で既にクエリ書き換えちゃうよ
主にやってること


■スカラー表現の簡素化
主に定数たたみ込み(
2 + 2 -> 4

CASE WHEN 2+2 = 4 THEN x+1
ELSE 1/0 END

-> ERROR: division by zero にはなりませんように・・・
はい。なりません。
->x+1です。


■簡単なSQL関数の展開
CREATE FUNCTION incr(int) RETURNS int
AS
'SELECT $1 + 1' LANGUAGE SQL;

SELECT incr(col) FROM table;
-> SELECT col + 1 FROM table;

■ジョイン木の簡素化
・フラット化("pull up")タイプのサブSELECTs 出来るだけ
出来なければ、サブプランを再帰的に生成する。

・UNION ALLをフラット化する、継承木を展開する
・ジョインの長さを削減する(outer join -> inner join)
・IN、EXISTS サブSELECTsをセミジョインに変換する
・非joinを識別する

■簡単なviewのフラット化
CREATE VIEW v AS
SELECT a, b+c AS d FROM t WHERE x > 0;
SELECT v.a, v.d FROM v WHERE v.a = 42;


Rewriterによる生成:
SELECT v.a, v.d FROM
(SELECT a, b+c AS d FROM t WHERE x > 0) v
WHERE v.a = 42;


サブSELECTフラット化による生成:
SELECT t.a, t.b+t.c FROM t
WHERE t.x > 0 AND t.a =42;
0573NAME IS NULL2013/06/27(木) 22:44:31.96ID:???
間抜けな質問がないと、盛り上がらんな。
0574NAME IS NULL2013/06/30(日) 00:45:46.63ID:???
>>541
刑事事件じゃなくて、民事だろ!

って、おもってから、数秒後・・・あぁ、なるほど、刑事事件か。と納得した。
0575NAME IS NULL2013/06/30(日) 02:04:40.16ID:???
単に管理ソフト入れたらRAIDになると勘違いしてただけだろ。
0576daisuke2013/07/01(月) NY:AN:NY.ANID:???
すみません。初心者です。

update文で教えてください。
顧客情報のテーブル→t_client
注文内容のテーブル→t_orderがあります。

注文内容と顧客情報を合体させて、
顧客情報にカートIDを入れたいです。

ご教授よろしくお願いします。
0577NAME IS NULL2013/07/01(月) NY:AN:NY.ANID:???
これは酷いw
0578NAME IS NULL2013/07/01(月) NY:AN:NY.ANID:???
>>576
SQLの基礎さえできていないようだけど
どういう経緯でそんなことをやる羽目になったの?
もし業務でやらされているのならば
明日朝一番にギブアップ報告しろと言いたくなるレベル。
0579NAME IS NULL2013/07/02(火) NY:AN:NY.ANID:???
これはレスした方が負けだろ。
0580NAME IS NULL2013/07/02(火) NY:AN:NY.ANID:???
メアドといい、怪し過ぎる
レスしたら負けだ
0581NAME IS NULL2013/07/02(火) NY:AN:NY.ANID:???
up pu
0582NAME IS NULL2013/07/02(火) NY:AN:NY.ANID:???
>>576
あなたが設計したの?
他の人が設計したんじゃなきゃもう一度勉強してやり直した方がいいよ
0583NAME IS NULL2013/07/02(火) NY:AN:NY.ANID:???
>>576
それならテーブル構成ぐらい晒せや
0584NAME IS NULL2013/07/03(水) NY:AN:NY.ANID:???
過去に構築したPostgreSQL 7.4.16がRedhatで稼働しています。
この度、ハードウェア更新することになり、Linuxもバージョンアップします。
その際に過去のDBを移行するのですが、7.4.xxをインストールするのが
最も作業量ミニマムでしょうか?
0585NAME IS NULL2013/07/03(水) NY:AN:NY.ANID:???
まあそうかもね
ダンプ→りストアでだいたい済むけど
7->8はキャストしてないと通らなかったりするからなあ

って同じサーバに複数のバージョンのpostgreSQL入れて試してみりゃいいじゃん
0586NAME IS NULL2013/07/04(木) NY:AN:NY.ANID:???
新しいハードにESXi入れて、VMWare Converterで古いハードをP2Vするのが
一番作業量が少ないと思う。
0587NAME IS NULL2013/07/09(火) NY:AN:NY.ANID:???
7 を入れるなんて、恐ろしいからやめてくれ。
こないだ重大な脆弱性に対する緊急アプデがあったばかりで
7とかはアプデ対象外だというに。
0588NAME IS NULL2013/07/09(火) NY:AN:NY.ANID:???
脆弱性なんて、他の手段でなんとかなるだろ。
0589NAME IS NULL2013/07/09(火) NY:AN:NY.ANID:???
表にそのまま出すケースのが少ないしな
0590NAME IS NULL2013/07/09(火) NY:AN:NY.ANID:???
新しいものに移行することに労力を割くか、
古いものを運用し続けることに労力を割くか、
0591NAME IS NULL2013/07/09(火) NY:AN:NY.ANID:???
ま、ポート変えりゃいろんなバージョン同時にいくつも動かせるんだから
検証しながらやればいいよなあ
0592NAME IS NULL2013/07/09(火) NY:AN:NY.ANID:???
>>591
アホなH社に全プログラムをタダで再検証させられたぜよ。
H社のDBのスペシャリストが本番と違うバージョンでテストしてたくせに。
0593NAME IS NULL2013/07/10(水) NY:AN:NY.ANID:???
Hって国産DBやってるとこ?

あそこのオープンソース系の連中、腐ってるだろ
なんのアウトプットも無い
0594NAME IS NULL2013/07/10(水) NY:AN:NY.ANID:???
>>593
オープンソース?
そんなんやってたっけ?
昔、S○ がちょっとやってたぐらいしか知らない

オープンアーキテクチャ (と、彼らがほざいてる) のことなら、同意
0595NAME IS NULL2013/07/10(水) NY:AN:NY.ANID:???
この辺じゃないの?
http://www.hitachi.co.jp/products/it/linux/opensource/index.html

SystemTapはお世話になった
0596NAME IS NULL2013/07/11(木) NY:AN:NY.ANID:???
>>595
なるほど、それなりにやってるんだな。
0597NAME IS NULL2013/07/11(木) NY:AN:NY.ANID:???
やるのは構わんが自分とこのミスを他所に押し付けるのが困る。
0598NAME IS NULL2013/07/14(日) NY:AN:NY.ANID:???
責任転嫁する為に外注するんじゃないの?
0599NAME IS NULL2013/07/14(日) NY:AN:NY.ANID:???
まあそのために金出してるんだしなw
0600NAME IS NULL2013/07/14(日) NY:AN:NY.ANID:???
つまり、まともな客じゃねぇんだな。
0601NAME IS NULL2013/07/16(火) NY:AN:NY.ANID:???
ちょっとしたソーシャルゲームをつくろうとおもっています。
1000ビットくらいあるフラグのアレイを bit varying型 で格納するべきか、
それとも1フラグ1レコードで記憶すべきか・・・。

bit varying の nビット目が 0か1か調べたり、0や1を直接書き込む効率的な関数ってありましたっけ?
0602NAME IS NULL2013/07/16(火) NY:AN:NY.ANID:???
両方試した方が早いよ。
0603NAME IS NULL2013/07/16(火) NY:AN:NY.ANID:/QqZF5MJ
>>601
http://www.postgresql.jp/document/9.1/html/functions-bitstring.html

> &、|、#のビット文字列オペランドは同一長でなければなりません。
という記述を見てまずいかと思ったけど、キャストで解決できるようだ。
効率的な関数とやらはよく調べてないのでわかんないけど、一般的なフラグ処理でいいんじゃないのかな。
それでも必要だとおもい、調べても見つからないなら作ればいいかと。
0604NAME IS NULL2013/07/17(水) NY:AN:NY.ANID:???
>>602 なるほど、もっともです。ありがとう。

>>603 どうも無さそうなので、PL/pgSQLの関数を作ってみました。
ただ、自分の方法はすごく頭の悪い方法かもしれないです。
5ビット目とか6ビット目ならシフトで気にならないですが、
800ビット目とか900ビット目とかになると、
その回数シフトさせるオーバーヘッドが気持ち悪いです。

もっとも、EXPLAIN ANALYSE で見るボトルネックはもっと他にあるようで、
5ビットも900ビットも大差なかったです。
そして、1フィールドに全フラグを押し込める方式も、フラグごとに1レコード用意する方式も、
全体のデータが少ない現在の試験環境では処理コストそのものに大差ないようです。
というわけで、今後は

・複数のフラグを(たとえば10個や20個を)まとめて処理する状況が頻発するのか
・フラグごとに集計する必要があるのか
・1レコード1フラグにしてメモリーにのりきるのかどうか

このあたりから熟考してみます。>>602-603 ありがとう。
0605NAME IS NULL2013/07/17(水) NY:AN:NY.ANID:???
.NETサポートまだですか
0606NAME IS NULL2013/07/17(水) NY:AN:NY.ANID:???
Npgsqlとかじゃなくて公式でってこと?
06071/32013/07/18(木) NY:AN:NY.ANID:???
はじめまして。よろしければ、何点かお教えいただきたいことがございます。
イレギュラーな質問が多くて恐縮なのですが。


1/3 64bitサーバで32bit版のPostgreSQLは動作するのか

具体的には、x86_64のサーバ(CentOS5)で、32bit版のPostgreSQL8.2のRPMは正
常に動作できるのでしょうか?

x86_64の仮想サーバ(CentOS5)で試したところ、32bit版のPostgreSQL8.2の
postgresql, postgresql-lib, postgresql-server
をインストール、動作させることができました。
どうやら動作自体はするもののようです。

ただ、原理的に正常に動くものなのか、どなたかお教えいただけないでしょう
か。
06082/32013/07/18(木) NY:AN:NY.ANID:???
2/3 PostgreSQLの8.2と9.1のRPM版は共存できるか。

具体的には、32bit版の8.2と、64bit版の9.1のです。

RPMで複数バージョンのPostgreSQLをインストールしてみよう ? Let's Postgres
http://lets.postgresql.jp/documents/tutorial/new_rpm

この記事は9.0以降のRPM同士についてのようですが、インストール先ディレクトリが
/usr/pgsql-<メジャーバージョン>
となっているなら、それより前のバージョンのRPMもひとつは共存できるかと思い
試してみました。

先に8.2(32bit)をインストールした環境に、9.1(64bit)の
postgresql, postgresql-lib, postgresql-server
のRPMをインストールすると、
> エラー: 依存性の欠如:
> postgresql < 7.4 は postgresql-server-8.2.22-1PGDG.rhel5.i386 と競合します。
というエラーが出ました。

そこで、 --force --nodeps というオプションをつけるとインストールでき、
9.1のポート番号を変えると、8.2, 9.1のどちらも動作しました。

update-alternatives が設定されるので /usr/bin/psql などは9.1系になって
しまうかと思いましたが、実際には8.2系のままでした。
rpm -ql でファイルのインストール先を確認したところ、どれもかぶってはい
ませんでした。

ただ、これもかなり変則的な使い方のようなので、原理的に動作するものなのか
お伺いしたいのです。
06093/32013/07/18(木) NY:AN:NY.ANID:???
3/3 OpenJDKを使う場合、RPMファイル postgresql-jdbc のインストールは必要か

これだけは変則的でない質問かもしれません。

postgresql-jdbc の内容を見たところ、JDBCのjarファイルの他は、GCJのライ
ブラリだけのようでした。これならこのRPMはインストールする必要がなく、
Download
http://jdbc.postgresql.org/download.html
からJARファイルを取得するだけで良いのではないかと思うのですが、いかがで
しょうか?

実は、8.2(32bit)のpostgresql-jdbcのインストールに失敗しました。
> エラー: 依存性の欠如:
> libgcj_bc.so.1 は postgresql-jdbc-8.2.512-1PGDG.rhel5.i386 に必要とされています
32bit版のgcjとの依存関係があったのです。使わないGCJ(32bit)をサー
バに入れずに済ませたくて、質問させて頂きました。


以上です。変則的な質問が多くて恐縮ですが、どうかよろしくお願いいたします。
0610NAME IS NULL2013/07/18(木) NY:AN:NY.ANID:???
質問するまでも無いことまで質問してるな。
0611NAME IS NULL2013/07/19(金) NY:AN:NY.ANID:???
9.4出たら起こして
0612NAME IS NULL2013/07/20(土) NY:AN:NY.ANID:???
9.3はいいのかw
0613NAME IS NULL2013/07/20(土) NY:AN:NY.ANID:???
>>607 いいんじゃない?
>>608 いや、ポート番号を変えるのが常道であって、それで正解だと思うが?
0614NAME IS NULL2013/07/20(土) NY:AN:NY.ANID:???
マテビューってすごく待ってたんだけどよく考えたら使い道無かった。
自動更新とか無いと一時テーブルと何も変わらんよなあ…
マテビュー(ポスグレの)リフレッシュするときって排他ロック掛かるよね?
0615NAME IS NULL2013/07/21(日) NY:AN:NY.ANID:???
うちはランキングのテーブルとかに使おうかなと考えている。
とはいっても、現時点で既に cronで定期的に 実表にランキングを書き出しているから
新たにマテビューをつかうメリットなんて思いつかないが。

それはそうと、
ttp://www.slideshare.net/hadoopxnttdata/postgre-sql93-24136770
このスライドいいね。 9.3 とか 9.4 がよくわかった。
06166072013/07/21(日) NY:AN:NY.ANID:???
>>613
ご回答ありがとうございます。

そもそも自分は、64bitサーバで32bitバイナリが動くということ自体、知りま
せんでした。

64bit環境での32bitプロセスの動作 - Linuxカーネルメモ
http://wiki.bit-hive.com/linuxkernelmemo/pg/64bit%B4%C4%B6%AD%A4%C7%A4%CE32bit%A5%D7%A5%ED%A5%BB%A5%B9%A4%CE%C6%B0%BA%EE

動かない場合はないのか、PostgreSQLは大丈夫なのか、お伺いしたかったので
す。

8.2(32bit)と9.1(64bit)でインストール先のファイルがかぶらないことは確認
できたのですが、ポートの他に競合するものがないか不安で、質問させていた
だきました。

--

お詫びしますが、実は >>607-609 はマルチポストです。申し訳ありません。

先に7/15(月)にpgsql-jp に加入、投稿させていただいたのですが、「 メール
に不審なヘッダがあります」とのことで「リスト司会者のチェックのために投
稿が保留されました。」という状態になってしまいました。

3日待っても進展がなかったので、こちらのスレッドに同じ内容を書き込ませ
ていただいた次第です。

ちなみに現在も進展がありません。どうなってしまったんだろう…。
0617NAME IS NULL2013/07/21(日) NY:AN:NY.ANID:???
答えるまでも無いと思われてるか、ここで質問されてるからいいやと思われたのか。
0618NAME IS NULL2013/07/22(月) NY:AN:NY.ANID:???
9.2のMVって、一体どういう風に使われるのを想定してるんだろうか?
triggerなんかで更新が必要なら、実表とそう変わらん気がする。
0619NAME IS NULL2013/07/22(月) NY:AN:NY.ANID:QpLqH1LE
参照の高速化じゃない?
今のところ自動リフレッシュがなさそうに見えるので用途は限定されるかも
0620NAME IS NULL2013/07/22(月) NY:AN:NY.ANID:???
正直、9.1で十分だと思う。
0621NAME IS NULL2013/07/22(月) NY:AN:NY.ANID:???
インデックスオンリースキャンはガチ
0622NAME IS NULL2013/07/23(火) NY:AN:NY.ANID:???
正直8.1で十分だと思う

そうほざいてた時期が俺にもありました
0623NAME IS NULL2013/07/26(金) NY:AN:NY.ANID:???
ポスグレってオラクルの何パーセントくらい凄いの?
0624NAME IS NULL2013/07/27(土) NY:AN:NY.ANID:EswCpdfC
それを知ってどうしたいのかにもよるけど、たぶん3%ぐらいって答えておくのがいいパターンだと思う
0625NAME IS NULL2013/07/27(土) NY:AN:NY.ANID:???
そっかー(´・ェ・)ちなみにMySQLはポスグレの何%ぐらい凄いのー?
0626NAME IS NULL2013/07/27(土) NY:AN:NY.ANID:???
まちがったー(´・ェ・)MySQLはオラクルの何%ぐらい凄いのー?
0627NAME IS NULL2013/07/27(土) NY:AN:NY.ANID:???
過疎ってると思ったら、突然馬鹿が二人現れたな
0628NAME IS NULL2013/07/27(土) NY:AN:NY.ANID:???
(´・ェ・)
0629NAME IS NULL2013/07/28(日) NY:AN:NY.ANID:???
>>627
一人はぼくだとして(´・ェ・)もう一人は誰ー?
0630NAME IS NULL2013/07/28(日) NY:AN:NY.ANID:???
>>629
もう一人もキミだよ。
0631NAME IS NULL2013/07/28(日) NY:AN:NY.ANID:???
(・3・)アルェー
0632NAME IS NULL2013/07/31(水) NY:AN:NY.ANID:???
>>630
なんだー(´・ェ・)ぼくは一人じゃなかったのかー
0633NAME IS NULL2013/08/24(土) NY:AN:NY.ANID:???
話題は?
0634NAME IS NULL2013/08/24(土) NY:AN:NY.ANID:83q6fySG
最近ちょっと太った。
0635NAME IS NULL2013/08/24(土) NY:AN:NY.ANID:???
今ままでOracle、SQL Serverをやってきたんだけど、日本語DBだったんだ
だから、ポスグレはちゃんと英単語を使いたいと思ってる
項目名どうやって決定してるよ?
0636NAME IS NULL2013/08/25(日) NY:AN:NY.ANID:???
日本語で問題ないよ。テーブル名はさすがに英語にしてるけど。
0637NAME IS NULL2013/08/25(日) NY:AN:NY.ANID:???
全て日本語で問題なし
ソフトが対応していないならともかく
日本人なのにわざわざ英語を使う必要はない
0638NAME IS NULL2013/08/26(月) NY:AN:NY.ANID:???
>>636
さすがに、ってどういう意味で言ってるの?
マルチバイトサポートしてるだろ?
0639NAME IS NULL2013/08/26(月) NY:AN:NY.ANID:???
>>638
カラム名だけを日本語にするのとテーブル名も日本語にするのでは、心理的障壁の高さが違うんでしょう。
0640NAME IS NULL2013/08/26(月) NY:AN:NY.ANID:???
すみません。
slony-iの導入について、教えていただけませんでしょうか。

Windows2008R2にPostgreSQL(32bit) 9.0.13をインストールし、
さらに、スタックビルダを使ってslony-I 2.0.7-1をインストールしました。

C:\Program Files (x86)\PostgreSQL\9.0\bin
内に slon.exeが追加されたのはいいのですが、
コマンドプロンプトでslon.exeをたたくと、

「コンピューターに MSVCR90.dll がないため、プログラムを開始できません。
この問題を解決するには、プログラムを再インストールしてみてください。」

というエラーメッセージが表示されます。
※VC++ランタイムは、2003〜2013まで入っています。

そこで、参照がうまくいっていないのだと思い、
システムフォルダから「MSVCR90.dll」を上記binフォルダに入れてみましたところ、
下記のようなエラーとなりました。

「Microsoft Visual C++ Runtime Library

Runtime Error!

Program: C:\Program Files (x86)\PostgreSQL\9.0\bin\slon.exe
R6034
An application has made an attempt to load the C runtime library incorrectly.
Please contact the application's support team for more information.」

導入方法や検証方法に誤りがあれば、ご指摘いただきたく思います。

よろしくお願いします。
0641NAME IS NULL2013/08/27(火) NY:AN:NY.ANID:???
http://www.microsoft.com/ja-jp/download/details.aspx?id=29
ランタイム入れなおしたら?
0642NAME IS NULL2013/08/27(火) NY:AN:NY.ANID:???
Windows自体が 64bit で、32bit の dll 持ってないとかじゃないの?
システムフォルダからコピーしてくる、ってのは割と悪手な気がする…
0643NAME IS NULL2013/08/27(火) NY:AN:NY.ANID:???
ところで2ちゃんねるが閉鎖された場合の避難所ってどうなってるの?
オープンソースなPostgreSQLなら、やっぱ、おーぷん2ちゃんねる?
06446402013/08/28(水) NY:AN:NY.ANID:???
>641
何度も入れなおしてみましたが、結果は同じでした。

>642
Winは64bitです。
ただ、641が張ってくれてるリンクがx86用だから、
それをインストールしたら、32bitのdllを持ってるって事ですよね...?
0645NAME IS NULL2013/08/28(水) NY:AN:NY.ANID:???
Winが64bitなのは
>C:\Program Files (x86)
これでわかるって。
実行してるものは32なのか64なのか
06466402013/08/28(水) NY:AN:NY.ANID:???
>645

PostgreSQLは32bitです。
slonも、スタックビルだでインストールしたので、32bitだと思います。


一応64bit用の「msvcr90.dll」もbinフォルダに入れて見ましたが、
以下のようなエラーが出ました。
※640のエラーはx86の「msvcr90.dll」を入れた際のエラーです。

「アプリケーションを正しく起動できませんでした (0xc000007b)。
[OK] をクリックしてアプリケーションを閉じてください。 」

ランタイムエラーが出てる->DLLを読み込めてはいる?
だと思うので、Slonも32bit用だと思います。


勘違いしてて、レスにあっていない返答になってたらすみません。
0647NAME IS NULL2013/08/28(水) NY:AN:NY.ANID:???
Dependency Walker で見てみたらどうなるかなあ、MSVCRT90だけかな?
0648NAME IS NULL2013/08/28(水) NY:AN:NY.ANID:???
おっと、MSVCR90か
06496402013/08/28(水) NY:AN:NY.ANID:???
>647

Dependency Walkerで見てみると、
「LIBEAY32.DLL」も足りないといわれたので、

http://slproweb.com/products/Win32OpenSSL.html

から、「Win32 OpenSSL v1.0.1e」と「Win64 OpenSSL v1.0.1e」を
インストールしてみようとしましたが、

両方とも次のエラーが出ました。

「The Windows OpenSSL Installation Project setup has detected that the following critical component is missing:
Microsoft Visual C++ 2008 Redistributables」

どうにもこうにもVC++2008ランタイムが、正しくインストールされていないようです。

もう少し試行錯誤してみます。
0650NAME IS NULL2013/08/28(水) NY:AN:NY.ANID:???
http://www7a.biglobe.ne.jp/~kasachan/VCrt_Check.html
これの
※VC のランタイムチェック の補足
かなあ、サーバはあまりいじくりまわさないからなあ。
0651NAME IS NULL2013/09/04(水) 07:02:13.41ID:???
話題は?
0652NAME IS NULL2013/09/08(日) 20:50:28.78ID:???
$ postgres --version
見せてほしい。
0653NAME IS NULL2013/09/08(日) 23:33:46.40ID:???
7.3.4
0654NAME IS NULL2013/09/08(日) 23:48:52.23ID:???
>>653
ちょっと安心した
postgres (PostgreSQL) 8.4.12
0655NAME IS NULL2013/09/08(日) 23:52:19.41ID:???
1.2.3
0656NAME IS NULL2013/09/09(月) 09:55:09.03ID:???
Lotusかよ
0657NAME IS NULL2013/09/09(月) 12:08:48.94ID:???
9.2.4
0658NAME IS NULL2013/09/09(月) 12:18:59.02ID:???
Porscheかよ
0659NAME IS NULL2013/09/09(月) 18:13:02.47ID:???
252
0660NAME IS NULL2013/09/09(月) 23:32:06.27ID:???
>>656さんの体臭からノネナールを検出
0661NAME IS NULL2013/09/10(火) 03:09:52.86ID:???
PostgreSQL 9.3 released!
http://www.postgresql.org/about/news/1481/
0662NAME IS NULL2013/09/10(火) 08:40:09.41ID:???
ウリは?
0663NAME IS NULL2013/09/10(火) 18:19:37.26ID:???
Windowsに先んじてversion 9.3になりました。
0664NAME IS NULL2013/09/10(火) 18:24:34.66ID:???
ウリって売りかw
9.3 はビューに直接UPDATEかけられるとか
0665NAME IS NULL2013/09/10(火) 18:26:13.62ID:???
SUMしたVIEWにもUPDATEかけれるのか?
0666NAME IS NULL2013/09/11(水) 04:04:52.58ID:???
ttps://wiki.postgresql.org/wiki/What's_new_in_PostgreSQL_9.3#Updatable_Views

Simple views can now be updated in the same way as regular tables.
The view can only reference one table (or another updatable view)
and must not contain more complex operators, join types etc.
0667NAME IS NULL2013/09/11(水) 09:40:36.68ID:???
>>666
ようやくOracle 8i並みになったってことか?
0668NAME IS NULL2013/09/12(木) 21:24:15.62ID:???
>>306
起きろ
0669NAME IS NULL2013/09/12(木) 21:58:40.11ID:???
pgpool2使ってんだけどさ、障害時はもちろん、復旧時も完全にノンストップってのは出来るもんなの?
postgre鯖とpgpool2鯖はそれぞれ複数台づつあって、全部同時に壊れる事は無いとして。

pgpool2が1台にpostgre複数台ならまだ少し情報あるけど
pgpool2も複数台の構成は全然情報見つからない
0670NAME IS NULL2013/09/12(木) 22:02:12.04ID:???
イミフ。ハートビートがあるじゃん。
0671NAME IS NULL2013/09/12(木) 22:49:54.13ID:???
PostgreSQLは、そのへんのtoolが不安定というか、雑魚っぽいのが何種類もあるのが
ネガティブイメージなんだよな。
Replicationみたいに、どれかを本体に組み込んで欲しいよな。
0672NAME IS NULL2013/09/13(金) 04:28:43.65ID:???
なんでピジプーを本体のフロントエンドに入れないかねぇ。
インストール時に選択できるようにすればいいのに。
0673NAME IS NULL2013/09/13(金) 20:32:33.93ID:???
そんな怪しいプログラムが好きなのは、日本人のなかのごく一部だからなんじゃないの?
あの会社や、その会社の関係者だけだろ。
0674NAME IS NULL2013/09/15(日) 04:30:46.50ID:KpcWKA8r
あの会社だけ〜とかほんま性格悪いわ〜、引くわ〜。
ど〜せゾウさん関係にたいした知識もなく言ってんだろ〜?老害だわ〜。
0675NAME IS NULL2013/09/15(日) 08:53:24.80ID:???
みんなひどいわ
0676NAME IS NULL2013/09/18(水) 03:09:17.82ID:???
データベーサー同士仲良くやりたまえ
0677NAME IS NULL2013/09/18(水) 07:49:02.35ID:???
ダースベイダー?
0678NAME IS NULL2013/09/18(水) 20:42:14.61ID:???
こー こー こー 
0679NAME IS NULL2013/09/19(木) 09:23:20.82ID:+7crO47r
postgresqlのGIN検索が2文字だとインデックス使ってくれない問題って治ってます?
textsearch-ja使ってるんだけど2文字検索遅すぎなんだがぁ
0680NAME IS NULL2013/09/23(月) 04:16:05.35ID:e8g5Zb/W
NoSQL使わずこれ使う理由ある?
0681NAME IS NULL2013/09/23(月) 07:19:13.20ID:???
基本的に目指す方向性が違うだろ
用途によるとしかいえない
0682NAME IS NULL2013/09/23(月) 08:11:55.49ID:e8g5Zb/W
すまん初めて使ってみるんだデーターベース
オンラインゲーを作りたいんだけど、保存するのはユーザー情報と各種ゲーム内パラメーター
Postgresじゃ厳しいよね?
0683NAME IS NULL2013/09/23(月) 08:36:40.57ID:???
うん、かなり厳しい。





Postgres じゃなくて、君の方が
0684NAME IS NULL2013/09/23(月) 09:41:39.55ID:???
KVSで済むならまあそれでいいんじゃない?

実はデータベースが本体で、サーバの提供する機能とか
ゲームクライアントはそのデータベースのデータを書き換える
補助ツールにすぎない、と考えることもできる。
0685NAME IS NULL2013/09/23(月) 13:35:31.32ID:???
>>684
おーまさにそんな感じだ
とりあえずmongodbでやってみるよ
0686NAME IS NULL2013/09/23(月) 17:29:50.24ID:???
>>682
バンバン稼ぐつもりなら、俺なら最初からオラクル使っとくな。
最初の内はXE使って、順調に行けばAmazonのRDSとかを使う前提で。
稼げるかどうかわからないなら、PostgreSQLにしとく。
0687NAME IS NULL2013/09/23(月) 18:20:01.49ID:e8g5Zb/W
>>686
結局SQL推しか
0688NAME IS NULL2013/09/23(月) 18:29:42.23ID:???
SQLは使いこなせる人にとっては実に便利だからな。
使いこなせねー奴は、流行りの言語やツール使っとけば良いよ。
0689NAME IS NULL2013/10/01(火) 16:04:14.65ID:???
話題は?
0690NAME IS NULL2013/10/01(火) 17:41:02.14ID:QrPbc1sj
PostgresQL + Redis が最強だと思う今日この頃
0691NAME IS NULL2013/10/07(月) 13:46:31.99ID:m7Wu6fio
CentOS5で、yumから8.1をインストールしてあります。
デフォルトでpg_dumpがインストールされていると思ったのですが、入っていませんでした。
pg_dumpだけをインストールするにはどうすればいいでしょうか?
0692NAME IS NULL2013/10/07(月) 14:14:07.77ID:???
>>691
たぶんpostgresql-serverパッケージしかインストールされていないから
yum install postgresql
としてクライアントのパッケージをインストールする必要がある
0693NAME IS NULL2013/10/07(月) 17:28:22.73ID:ANQ3Kcai
>>692
ありがとうございます。
解決しました!
0694NAME IS NULL2013/10/07(月) 17:33:26.41ID:???
>>693
蛇足だけど、あるファイルをどのパッケージが持ってるか検索するには、
yum provides "*/pg_dump"
とかするといいよ。

postgresql-8.4.13-1.el6_3.x86_64 : PostgreSQL client programs
postgresql92-9.2.3-2PGDG.rhel6.x86_64 : PostgreSQL client programs and libraries
...
みたいに検索してくれる。
0695NAME IS NULL2013/10/08(火) 07:21:42.78ID:???
蛇足だ
スレッドの疎結合を徹底させろ
yumの話はyumのスレでやらせろ
0696NAME IS NULL2013/10/08(火) 16:52:30.94ID:???
データフォルダをサブバージョンのリポジトリに入れるのはナンセンスですか?
0697NAME IS NULL2013/10/08(火) 17:10:29.77ID:???
>>696
別にそれで要求を満たしてるなら、それでいいよ。
0698NAME IS NULL2013/10/08(火) 17:16:35.20ID:???
データに破損など何かあったとき
同じ環境ならサブバージョンで元に戻せるのですか?
0699NAME IS NULL2013/10/08(火) 17:35:11.61ID:???
いつコミットするんだ
WALログ管理するだけでいいだろ
0700NAME IS NULL2013/10/08(火) 17:54:06.86ID:???
ファイルシステムのスナップショット使えよ。
0701NAME IS NULL2013/10/08(火) 18:19:52.48ID:???
>>698
コールドバックアップなら元に戻せる
0702NAME IS NULL2013/10/08(火) 21:00:41.76ID:???
ありがとうございました
0703NAME IS NULL2013/10/09(水) 22:00:02.50ID:???
psql -v で変数渡しながらsqlを流し込んだら
ローカルホストだとうまくいくんだけど
リモートホストだと2バイト文字がうまく流れませぬ。

対処方法とかない??
0704NAME IS NULL2013/10/10(木) 12:03:08.03ID:???
>>703
client_encoding合ってる?
07057032013/10/10(木) 13:13:07.67ID:???
>>704
ローカル、リモート共に同じ環境なので特に設定変更してませんが…
どこか設定した方がいい場所とかありますか?
0706NAME IS NULL2013/10/10(木) 17:08:22.26ID:???
ワラタ
0707NAME IS NULL2013/10/10(木) 18:04:35.64ID:???
>>703
「psql -l」で、データベースのencodingが見られる。
あと、ローカルやリモートのOSやLANGなんかがわからないけど、
psqlの\encodingの設定とかが必要なのかも。
http://www.postgresql.jp/document/9.2/html/app-psql.html
0708NAME IS NULL2013/10/11(金) 09:53:59.22ID:???
ネタなの?本気だとしたら(ry
07097072013/10/11(金) 14:17:57.55ID:???
>>708
ひょっとして俺のこと?
何かおかしい?
0710NAME IS NULL2013/10/11(金) 20:24:08.45ID:???
>>707
707氏はまともだろ?俺もそうしてるけど。。。
SET client_encoding TO 'SJIS'; みたいに。
0711NAME IS NULL2013/10/12(土) 06:34:56.97ID:9bkwkB92
>>690
hstoreじゃRedisの代替はやっぱり厳しいかな?
0712NAME IS NULL2013/10/14(月) 03:38:24.85ID:???
知らん。Redisしか使ってない
0713NAME IS NULL2013/10/31(木) 19:48:50.61ID:???
Visual Studio 2010 のデータベースエクスプローラで PostgreSQL にOLE DB接続する
方法を教えてください。
(ODBCは、PCに設定が必要なのでOLE DBで)

Npgsqlを使用してOLE DB接続しようとすると、
 複数ステップのOLE DB の操作でエラーが発生しました。
と表示されてしまうのです。

宜しくお願いします。
0714NAME IS NULL2013/11/01(金) 13:42:33.66ID:???
PCに設定しろよ
0715NAME IS NULL2013/11/01(金) 19:05:37.69ID:???
Npgsqlを使用すんならクライアント個々のPCの設定なんていらないが
0716NAME IS NULL2013/11/03(日) 21:40:27.09ID:WS2i8ToB
事前面接の事実をおさえて職安法44条で刑事告訴
http://wiki.algomon.com/wiki/%E4%BA%8B%E5%89%8D%E9%9D%A2%E6%8E%A5
0717NAME IS NULL2013/11/04(月) 09:50:46.60ID:???
psqlコマンドで、たとえば次のような内容のスクリプトを実行します。

begin;
create table tbl ....;
insert into tbl ...;
update tbl set ...;
commit;

ここで、どれかのSQL文が失敗したときに、後続のSQL文をスキップする機能はありませんか。
今だと、たとえば create table 文が失敗したときに、後続のinsert文やupdate文も実行されようとして、エラー出力が増えてしまいます。こんなかんじで。

$ psql < foobar.sql
ERROR: current transaction is aborted, commands ignored until end of transaction block
ERROR: current transaction is aborted, commands ignored until end of transaction block

希望としては、SQLがエラーになった時点でメッセージを出してpsqlコマンドが終了してほしいです。
こういうことはできますか。よろしくお願いします。
0718NAME IS NULL2013/11/04(月) 10:33:58.83ID:???
>>717
ttp://www.postgresql.jp/document/7.2/programmer/plpgsql-control-structures.html
0719NAME IS NULL2013/11/04(月) 12:27:00.52ID:???
>>718
さすがに
ttp://www.postgresql.jp/document/9.3/html/plpgsql-control-structures.html

最新版にしてくれ
0720NAME IS NULL2013/11/04(月) 12:44:43.26ID:???
>>719
多少迷ったけどバージョンが分からんかったから古いの出しとけばええやろ的な。
0721NAME IS NULL2013/11/04(月) 12:57:57.87ID:???
>>720
しかし、なんぼなんでも 7.2 はないわなw
0722NAME IS NULL2013/11/04(月) 15:13:13.86ID:???
>>718,719
そのページはいろんな制御構文があるのでどれを使えばいいのでしょうか。
・エラーがあったらreturnする
・エラーがあるかどうかif文でたしかめる
0723NAME IS NULL2013/11/04(月) 15:21:20.18ID:???
実行する環境は?
pgbashとか使えそうな気が
0724NAME IS NULL2013/11/04(月) 15:28:17.81ID:???
>>722
どれを使えばいいのかは作ってる本人にしか分からんよ。
例えば1つ目の処理を行ってエラーが出たらreturnするとか、もしくは別の処理するのかとか、そんなの仕様次第。
分からんなりに一つ一つ試していけばいいんじゃね?
0725NAME IS NULL2013/11/04(月) 15:30:15.96ID:???
>>721
実行環境が7.2かもしれんし(震え声
一番上のほうに出したgoogle先生が悪いということで一つ。
0726NAME IS NULL2013/11/05(火) 01:02:17.27ID:???
え? それって、PL/pgSQL の説明だよね
psql コマンドで 一連のSQL 流し込む時に どうやったら その場で中止できるか、が元の質問でしょう?

たぶん ON_ERROR_STOP 環境変数を (適当に) 設定すればいいんじゃないかな
0727NAME IS NULL2013/11/05(火) 07:14:06.37ID:???
>>724
えー?
ちゃんと>717で
> ここで、どれかのSQL文が失敗したときに、後続のSQL文をスキップする機能はありませんか。
> 希望としては、SQLがエラーになった時点でメッセージを出してpsqlコマンドが終了してほしいです。
って書いてますよね?これで伝わらないのかよ…
0728NAME IS NULL2013/11/05(火) 07:44:06.17ID:???
>>726
ありがどうございます!
\set ON_ERROR_STOP ON を先頭につけたら、
エラーが発生した時点で終了するようになりました!
まさに希望する動作そのものです。
ttp://stackoverflow.com/questions/4480381/postgres-sql-fail-on-script-error
重ねて、ありがとうございました。

#それに比べて、的外れな回答を上から目線でする>724って・・・
#これだからエンジニアはコミュ障(r
0729NAME IS NULL2013/11/05(火) 09:01:39.23ID:???
>>727
おおすまんな、それ見落としてたわ。
0730sage2013/11/05(火) 19:52:33.00ID:yhatM0Qn
今週末のPostgreSQL Conferenceに行く奴いる?
0731NAME IS NULL2013/11/12(火) 14:38:33.22ID:???
postgresqlでクラスタ組むならpgpool2が安定?
0732NAME IS NULL2013/11/12(火) 14:59:53.32ID:???
クラスタってなにができればクラスタなの?
レプリケーションなら本体だけでできるし
0733NAME IS NULL2013/11/12(火) 17:10:06.33ID:g6OOuhKa
クラスタの種類によるよ
0734NAME IS NULL2013/11/13(水) 08:45:21.37ID:???
ちょっとしたExcel製の社内システムをDB化したい
→Oracleは高いし、無償版は容量制限がねぇ…
→Postgresにしよう、でも壊れたら業務が止まるんでしょ?
→じゃあ多重化しよう、ググったらpgpool2ってのがいいらしいぞ ←イマココ

社内システムだから切り替えは手動でも構わないので、
標準のストリーミングレプリケーションを使っての
Active-Standbyでも十分っぽいですね。
0735NAME IS NULL2013/11/13(水) 09:08:05.49ID:???
そのくらいの規模だと、多重化よりもむしろバックアップのほうが大事な気がする。
停止時間よりも、ハードディスク故障かアプリ側のバグでの論理的なデータ破壊が怖そう。
レプリケーションを使うにしろ、そのあたりも考えたほうがいいよ。
0736NAME IS NULL2013/11/13(水) 11:48:12.27ID:???
「ちょっとしたExcel製の社内システム」なのに、Oracle無償版の容量制限(11GB)に引っかかるのか?
0737NAME IS NULL2013/11/13(水) 12:02:24.10ID:???
>>734
前提が全ておかしい
「壊れたら業務が止まる」のはどのDBでもいっしょ
0738NAME IS NULL2013/11/13(水) 12:05:19.59ID:???
ちょっとしたExcel製の社内システムなんかどうでもいいわ
0739NAME IS NULL2013/11/13(水) 13:50:55.92ID:???
Oracleでも壊れるときは壊れるし
0740NAME IS NULL2013/11/13(水) 14:27:41.05ID:???
休日や夜に誰も使ってないシステムだとしても
自分が有休取ってる時に止まって電話がかかってこない程度には
しておいたほうがいいな
0741NAME IS NULL2013/11/13(水) 14:31:17.29ID:???
ひょっとしてすごい Excel マスターがいて、複数の Excel が互いに連動することでフォールトトレラントになっているシステムかもしれない (w
0742NAME IS NULL2013/11/13(水) 17:06:05.24ID:???
壊れたらExcelでやればいいじゃん
って気はしたけど、どうでもいい
0743NAME IS NULL2013/11/13(水) 19:33:11.18ID:???
734ですが、1個1〜5MBくらいのExcelファイル100個/1日を
日次トランザクションデータのフォルダに置いて、
プログラムからそれをテーブルっぽく参照・更新している
と言う画期的?なシステムなので、RDB化したいのです…。
色々皆さんのおっしゃるとおりおかしなシステムなので、
もうちょっと前提条件から詰めなおしてきます。
0744NAME IS NULL2013/11/13(水) 22:00:26.49ID:???
その腐海はそっとしておくべき
下手にいじると大海嘯が起きるぞ
0745NAME IS NULL2013/11/13(水) 23:08:34.25ID:+r/WxRJl
確かにデータベースとしての側面はあるけどさ。。
前任?はそこまでの規模になる前にどうにかすべきだったね。

まぁ、一回でRDBMSに移行しようとせずに、部分的にはじめるのが吉。
0746NAME IS NULL2013/11/14(木) 06:00:58.70ID:???
ポスグレにしてexcelみるfdwをつくるw
0747NAME IS NULL2013/11/14(木) 20:13:03.46ID:???
>>736
プロが作れば100MBぐらいで収まるものでも、
アホが作ると11GBぐらいすぐに無くなっちゃうんだよ。
0748NAME IS NULL2013/11/15(金) 23:03:11.62ID:6G3KwFUp
9.3.1はインストールすら出来んorz
XPでも7でも結果は同じ、\dataの中のポスグレconfが見つからないってさ・・・
ググリまくって丸1日やったけどもう疲れたあきらめて寝ますzzz
あ・・・上のほうに何か書いてあるっぼい?けどもう眠いやw明日見ヨット
0749NAME IS NULL2013/11/16(土) 08:12:06.32ID:???
>>748
> \dataの中のポスグレconfが見つからないってさ・・・

これ某システムのポスグレで発生して困ってる
0750NAME IS NULL2013/11/16(土) 20:04:38.45ID:C6OwC7TP
よっぽど切羽詰ってるんだろうけど、まぁあきらめて寝てるといいよ。
もしくは情報を出そう
0751NAME IS NULL2013/11/16(土) 22:45:41.80ID:???
>>750
ああ、すまん
普通に動作してたんだが、ちょっと不注意でディスクフルにしてからおかしくなったんよ
仮想マシンでスナップショットとってて、そこまで巻き戻して今は正常に動作してるから切羽詰まってる訳じゃないんだが、再発するとやだから誰か似たような経験した奴いないかなぁって
postgresql.conf はちゃんとあるし、権限も問題ないし、原因が全く特定できない
0752NAME IS NULL2013/11/24(日) 20:13:40.54ID:???
PostgreSQLのSUBSTR関数のstart,lengthって、バイト数ですか?
それか、文字セットに応じた文字数をカウントしてくれてますか?
0753NAME IS NULL2013/11/24(日) 21:45:19.99ID:???
>>752
文字数。EUCでもUTF8でも「あ」は長さ1としてカウントされる
0754NAME IS NULL2013/11/24(日) 22:52:31.59ID:???
>>753
ありがとうございます。安心しました。
やっぱりPostgresは日本語(マルチバイト?)対応最強ですね。
心強いです
0755NAME IS NULL2013/11/25(月) 15:39:37.81ID:???
どこに質問しようか迷ったんですが、ここが一番まとも?で初心者を蔑んだりされないんで、ここで質問させめ下さい。
PostgreSQLとPHPで私が組んだ業務システムがあります。
この度、多言語化(とりあえず中文)してくれとの要望が出てきたのですが、今、OS(Linux)もPostgresもPHPも全て文字セットはEUC-JPで統一してます。
やはり全てをUTF-8とかに変換する必要がありますか?
現在のEUCで格納されてるPostgresのデータをUTFに変換することは可能ですか?
0756NAME IS NULL2013/11/25(月) 15:51:38.28ID:???
DB止められるなら、ダンプ-リストアでいけるよ
クライアントの文字コード指定できるしね。
pg_upgradeとかリカバリーとかは使えない

何かとあるからUTF8に統一した方がいいと思うよ
0757NAME IS NULL2013/11/25(月) 15:52:24.98ID:???
>>755
必要性はちとわからんが

変換方法は
pg_dumpでエンコーディング指定してダンプを取ってリストアすればいけるよ
07587572013/11/25(月) 15:53:05.91ID:???
すまん被った
0759NAME IS NULL2013/11/25(月) 21:44:00.13ID:???
>>756
>>757
pg_dump の ーE オプションで encoding を指定して出力できることを確認しました。
ありがとうございます。
話はそれますが、私は1.0未満のバージョン時代から Linux を利用してきた経緯から、ずっと EUC-JP で通してきたのですが、いまでは端末が Mac、サーバが Linux になってしまい、けっこう苦労してます(笑)
途中何度も UTF に移行しようと思ってたんですが、のびのびになってました。
こんな大規模で国際的なシステム(笑)になる前に移行しておけば良かった…
申し遅れました。私 >>755, >>752 です。
0760NAME IS NULL2013/11/25(月) 23:00:07.84ID:1RY9W7N4
kernel 1.0 未満?
0761NAME IS NULL2013/11/25(月) 23:14:30.82ID:???
>>760
そうですよ
たしか 0.96
0762NAME IS NULL2013/11/25(月) 23:41:11.09ID:???
へぇぇ。大先輩だ。
まぁ、なぜEUC-JPで通してしまうようなことをしてしまったかは、過ぎたことなので置いといて、
ちょこちょこリフレッシュしたほうが何かと苦労せずに済むと思います。
0763NAME IS NULL2013/11/25(月) 23:52:06.52ID:???
スレチになってしまい申し訳ありませんが、
当時、Linux 上で日本語を使う場合は、JE というものを別途インストールする必要があり、それが EUC-JP 前提だったんですよ。
けっこう長くそういう時代が続きました。
0764NAME IS NULL2013/11/26(火) 14:17:43.07ID:???
>>763
LinuxがFreeBSDにだいぶ劣っていた時代だな。
日経にネガキャンされてJEがない=日本語が使えないと誤解をばらまかれたのは
FreeBSD陣営としてはかなりの痛手だった。
0765NAME IS NULL2013/11/26(火) 15:00:45.15ID:???
PostgreSQL 使いは、FreeBSD 使いが多い気がする
0766NAME IS NULL2013/11/26(火) 15:46:48.68ID:???
俺 linux 好きですけどぉ
0767NAME IS NULL2013/11/26(火) 17:38:40.32ID:???
>>764
商売けがなかったのが敗因だろう
0768NAME IS NULL2013/11/27(水) 01:54:33.60ID:???
最近ポスグレの案件増えてきた感あるけど、海外で流行ってるのが遅れて来てるのかな。
0769NAME IS NULL2013/11/27(水) 15:06:09.34ID:???
>>768
海外で流行ってるの?
いまだに日本だけだと思ってた
ただ、やっぱりなんか注目されてきた気はする。
MySqlを使い続けることへの問題に気がついたのかな?
0770NAME IS NULL2013/11/27(水) 15:26:48.73ID:???
海外で流行ってるのは知らなかったけど、いいことだね。
コミュニティが活性化するのは偉大な進化をもたらすかもしれない。
0771NAME IS NULL2013/11/27(水) 15:31:37.13ID:???
今のでも全く不満はないけどね
オラクルと性能比較とかさせられたよ、蔵に
全く問題なかった
誰もがしってる世界的な通信キャリアに導入した。
まぁ、ある一部門だけど
0772NAME IS NULL2013/11/27(水) 15:34:25.29ID:???
MySQLはいろいろ逆風で
PostgreSQLはいろいろ順風だな
0773NAME IS NULL2013/11/27(水) 15:35:44.57ID:???
ネガキャンが酷かったからね
ある陣営からの
0774NAME IS NULL2013/11/27(水) 15:48:45.23ID:???
プロプライエタリなソフト以外で本当に尊敬できるプロジェクトの一つってか筆頭だな、Postgres
0775NAME IS NULL2013/11/27(水) 16:16:30.58ID:???
マジかこれ
http://www.google.co.jp/trends/explore?q=mysql+postgresql#q=postgresql&;cmpt=q
0776NAME IS NULL2013/11/27(水) 16:17:52.71ID:???
おっと、変なキーワードが混ざってた
こっち
http://www.google.co.jp/trends/explore?q=postgresql#q=postgresql&;cmpt=q
0777NAME IS NULL2013/11/27(水) 16:36:15.96ID:???
DB関係は何検索しても似たり寄ったりな気がw
0778NAME IS NULL2013/11/27(水) 17:55:28.90ID:???
2005年ごろより下って事はないと思うけど
0779NAME IS NULL2013/11/28(木) 02:32:51.84ID:???
AWSのpostgresサポートで検索数上がったはずなんだけど、トレンドに反映されてないね。

>>777
傾向はMySQLも同じだね。
ちなみにHadoopは激増してる。

しかし、postgresもMySQLもCubaが一番興味持ってるつうのは
どういう事なんだろ?
0780NAME IS NULL2013/11/28(木) 18:47:41.05ID:???
>>773

どの陣営?
0781NAME IS NULL2013/11/29(金) 22:59:22.38ID:???
>>779
アメリカの輸出管理規制でOracleとかが使えないからかな?
0782NAME IS NULL2013/11/29(金) 23:07:48.47ID:???
そうゆうこと
0783NAME IS NULL2013/11/30(土) 21:50:13.42ID:???
>>781

表向き輸出できないけど、実際は入ってるよ。
ウィンドウズもバリバリ使ってるし。
0784NAME IS NULL2013/11/30(土) 22:03:14.91ID:???
ウィンドウズは違法コピー版やな
Oracleも?
0785NAME IS NULL2013/11/30(土) 22:06:31.62ID:???
>>783
そんな当たり前のことをドヤ顔で言われても…
0786NAME IS NULL2013/12/01(日) 02:50:48.25ID:???
>>785

そんな当たり前のことを知らずに
781 名前:NAME IS NULL :2013/11/29(金) 22:59:22.38 ID:???
>>779
アメリカの輸出管理規制でOracleとかが使えないからかな?

782 名前:NAME IS NULL :2013/11/29(金) 23:07:48.47 ID:???
そうゆうこと

なんて書く奴もいるし
0787NAME IS NULL2013/12/01(日) 09:23:51.79ID:???
そりゃシリアでもOracle売ってたぐらいだしな。
0788NAME IS NULL2013/12/01(日) 10:35:41.14ID:???
たとえシリアだろうとオラ来るで
0789NAME IS NULL2013/12/01(日) 11:39:28.75ID:???
北朝鮮でも
0790NAME IS NULL2013/12/01(日) 11:54:05.01ID:???
北は案件が無いだろう、、、オラ来ない
0791NAME IS NULL2013/12/01(日) 12:04:32.46ID:???
>>790
あるでしょ?普通に
いまどきDBMSを使わないデータ処理って考えられない
てか、ネタ?
0792NAME IS NULL2013/12/01(日) 12:09:00.86ID:???
ロケット発射の様子見ても、、あれじゃあねえw
0793NAME IS NULL2013/12/01(日) 12:16:16.46ID:???
南朝鮮なんてロケット自体あげられないじゃん
北のほうがずっとマシだよ
0794NAME IS NULL2013/12/01(日) 12:45:32.83ID:???
南は軍でも違法コピー版使ってたし、北も南も著作権に関しては同レベルだね(笑)
0795NAME IS NULL2013/12/01(日) 22:47:31.69ID:???
ほんの50レスほど前にRDBMS使って無い業務システムの例が上がってるわけですが。。。
0796NAME IS NULL2013/12/01(日) 23:31:02.04ID:???
>>795
で?
0797NAME IS NULL2013/12/02(月) 00:18:27.76ID:???
>>796
ww おめーこそ、で?なにがしたいの?w
0798NAME IS NULL2013/12/02(月) 00:48:06.13ID:???
>>795
RDBMSに移行するタイミングを逃した業務システムの例じゃないですかー!
0799NAME IS NULL2013/12/02(月) 02:07:42.16ID:???
>>797
ただのあほだったか
0800NAME IS NULL2013/12/06(金) 13:51:20.58ID:???
PostgreSQL Maintenance Releases: 9.3.2, 9.2.6, 9.1.11, 9.0.15, and 8.4.19
http://www.postgresql.org/about/news/1492/
0801NAME IS NULL2013/12/06(金) 14:32:36.78ID:???
はぁ?9.3とかいつ出たんだよと思ったら、9/10に出てたのか。
俺情報に疎すぎ。
0802NAME IS NULL2013/12/06(金) 15:00:28.45ID:???
8.4から9.1にアップグレードしたいんだけど、この年末年始に8時間しか停止できない。
失敗は絶対に許されないから怖い。
ちなみにDBもアプリも全てソースからビルドしてます。
過去、8.1から8.4に更新した経験が一度あるだけ
0803NAME IS NULL2013/12/06(金) 15:05:31.34ID:???
>>802
pg_upgradeあるから前より楽よ
0804NAME IS NULL2013/12/06(金) 18:02:15.77ID:???
>>802
どうやっても無理目、がんばってね
0805NAME IS NULL2013/12/06(金) 21:03:59.54ID:b4kCe0hp
>>679
N-gram系ならpg_bigm使えばいいかも。
今日、1.1がリリースされたよ。
0806NAME IS NULL2013/12/06(金) 23:45:07.69ID:???
あわわ昨日待ちきれずに9.3.1にMLで流れてたパッチ当ててリリースしたばっかなのに!
0807NAME IS NULL2013/12/07(土) 03:25:51.99ID:???
>>804
無理なら頑張らせるなよ
0808NAME IS NULL2013/12/07(土) 09:53:37.76ID:???
8.1から9.3やったよ
ちゃんとテストして問題点潰せば大丈夫
8.4からならそんなに大きな問題ないでしょ
0809NAME IS NULL2013/12/07(土) 12:19:24.59ID:???
DB容量によるよな
8.1から8.4のときどれくらいかかったんかね
0810NAME IS NULL2013/12/07(土) 12:30:21.24ID:???
これWindows2000で使いたいだけど、どのバージョンが使える?
0811NAME IS NULL2013/12/07(土) 13:15:19.85ID:???
ロール(ユーザー)の権限設定に関して、
以下のような場合、
-----------
データベース:
testdb1
testdb2
testdb3
-----------
ユーザ(ロール):
postgres
user1
user2
user3
-----------

権限を
-----------
ユーザ(ロール):
postgres:全データベース
user1:testdb1のみ
user2:testdb2のみ
user3:testdb3のみ

というような設定をpgAdmin�Vで、したいのですが、
うまく行きません。

user1 でログインできても、
ERROR; permission denied for relation testdb1
となります。

できれば、WindowsのpgAdmin�VからLinuxのDBへ設定したいのですが、
Linuxでコマンドによる設定でも、実現できれば構いませんが、
どうしたら設定できますでしょうか?
0812NAME IS NULL2013/12/07(土) 13:29:22.69ID:???
9.0以降は、XP以降のようだね。

ttp://wiki.postgresql.org/wiki/Running_%26_Installing_PostgreSQL_On_Native_Windows/ja

Win2000で、クライアントとして使ったことがあるのは、8.2.4
サーバーとして(Win2000Serverのことではない)でもいけるんじゃないかな。

サポートはしてないけど、動作する可能性がないわけではないから、
ここで聞くよりは、インストールして、試してみればいいだけのこと。
08138102013/12/07(土) 14:41:35.00ID:???
>>812
8.2.4ってどこにある?
http://www.enterprisedb.com/products-services-training/pgdownload#windows
↑の8.4.19と8.3.23を試したけど、インストーラが起動しなかった。
0814NAME IS NULL2013/12/07(土) 15:38:46.07ID:???
検索してみたら。
8.2.0は、あったけど。
信頼できる先かどうかは、不明。
postgresql-8.2.0-1.zip

8.2.4 は、自分の手元にあるかな、たぶん。
08158102013/12/07(土) 16:07:59.00ID:???
>>814
ググったらここにあった
http://www.postgresql.org/ftp/binary/v8.2.23/win32/

うまくインストールできて、起動して接続も確認しました。
いろいろいじって楽しんでみます。
ありがとう。
0816NAME IS NULL2013/12/07(土) 16:16:33.67ID:???
>>815
8.3からは、Win2000はダメなのかもね。

ちなみに、
v8.2.23 がそうだったか、どうか忘れたけど、
ODBCにバグがあるバージョンがあった。
0817NAME IS NULL2013/12/07(土) 16:22:35.10ID:???
v8.1.5 あたりにODBCのバグみたいだね。
8.2は大丈夫でしょう。
0818NAME IS NULL2013/12/07(土) 17:31:46.99ID:???
さすがに先進ユーザが多いだけあって、
Windows 2000とか使ってるんだな。
0819NAME IS NULL2013/12/07(土) 18:40:50.37ID:???
わかりにくいボケなのかマジなのか判断しかねる
0820NAME IS NULL2013/12/07(土) 18:54:57.17ID:???
うちはまだWindows7。
100が出たら変えようと思うんだけど、なかなかでないから98で妥協でもいいのかな。
0821NAME IS NULL2013/12/07(土) 22:53:50.64ID:???
>>818
XP以降のライセンス縛りが無いから、
W2Kは仮想マシン上での評価/学習用途で未だに活躍中
ちなみにW2Kが実機インストールできるPCはすべて引退した

だから、この8.2情報は個人的にとても嬉しかったりする
PgはLinix/OSX上ばかりで動かしていたけど、
Winでも試してみようかなぁ....
0822NAME IS NULL2013/12/07(土) 23:56:02.58ID:???
>>821
どこの世界の話だろう。
評価するなら評価版使えばいいのに、不思議なことをいうなぁ。
0823NAME IS NULL2013/12/08(日) 00:38:22.22ID:???
>>821
Windows2000をいまごろ評価/学習ってどうゆうこと?
評価してどうすんの
学習してどうすんの
0824NAME IS NULL2013/12/08(日) 00:45:23.56ID:???
そもそもライセンス違反している可能性が高いレスだよな。
普通に評価するならライセンス縛りなんて言葉は出てこない。
…ちなみにライセンス縛りってアクティベーションのことであってる?(ここがもう不安)
0825NAME IS NULL2013/12/08(日) 07:09:04.83ID:???
2000のメリットはとにかく軽いこと
XPは重い
VMwareではその差があまりにも大きい
0826NAME IS NULL2013/12/08(日) 11:15:44.16ID:???
古いPC+Win2000で運用するってことじゃないの。

評価用なら、今どき、WinXP以降を、持ってない人はそういないだろうし。
0827NAME IS NULL2013/12/08(日) 13:48:22.82ID:???
vt-xないならそうかもしんないけど、VMwareがかわいそうだ
0828NAME IS NULL2013/12/08(日) 14:11:29.72ID:???
>>812ですが、言葉が足りなかったようです

>>822,823
W2Kを評価/学習ではなく、W2K上で動くアプリの評価/学習でした
軽くてアクチの面倒が無いので、W2Kが便利という意味です

>>824
ライセンス的にグレーなのは理解しているのですが、自宅での趣味の範囲なので....
W2Kそのものは(ワレではなく)W98マシンのアプグレ用に購入した正規品です


で、W2Kの話題は板違いなので、この辺で失礼します
お騒がせしました
0829NAME IS NULL2013/12/08(日) 14:12:38.04ID:???
>>828
>>>812ですが、言葉が足りなかったようです

>>821の間違いでした
0830NAME IS NULL2013/12/09(月) 17:55:06.18ID:???
もうすぐ2014年だよな?
>>825の書き込み見てると、2005年ぐらいに思えてくる。。。
0831NAME IS NULL2013/12/09(月) 18:23:34.40ID:???
VMWareの仕組みを知らないで言ってるんだろ。
VM上のXPが重いんだったら実機だってまともに稼働しないよ
0832NAME IS NULL2013/12/09(月) 20:36:32.67ID:???
>>831
仕組みは知ってても、その仕組みがどういうときに発揮されるかを知らないとこうなるんだなぁ。。
たとえばNorthwoodならXPは快適に動作するが、仮想マシンは重いよね。
0833NAME IS NULL2013/12/09(月) 21:31:36.43ID:???
いや、もう、今時VM使ってないなんて本当にあるの?
俺の棲息範囲だと、開発もテストも本番も全部VMなんだけど。。。
0834NAME IS NULL2013/12/09(月) 21:45:15.48ID:???
windowsじゃないだろ
0835NAME IS NULL2013/12/09(月) 22:10:50.83ID:???
>>833
VMはI/Oの性能や信頼性が怪しいって話も以前は良く聞いたけど、最近は大丈夫なん?
それとも、I/Oがそれほど絡まない用途にお住まい?
0836NAME IS NULL2013/12/09(月) 22:17:35.85ID:???
ストレージは外に出してるから、ストレージやネットワークの組み方次第では
実機よりよっぽど速いよ。
0837NAME IS NULL2013/12/09(月) 22:20:12.37ID:???
すげえー
0838NAME IS NULL2013/12/09(月) 22:26:15.67ID:???
あー、お金をかけられるVMは良いよね
金が無い理由でのVMには嫌な記憶しかないわ。特にDBを置く場合は。
0839NAME IS NULL2013/12/10(火) 03:49:31.22ID:???
>>838
今は大抵物理HDDを丸ごとマウントできるようになってるよ。
あと、仮想HDDが丸ごとOSのキャッシュに乗っかるサイズに収まるなら、実機より速い。
0840NAME IS NULL2013/12/10(火) 04:38:18.29ID:???
>>802
うちの本番DBは無理
FusionIOのノード3台でも結構ぎりなのに
仮想化する利点が全く見あたりません
自分の環境がすべてだと思うなよ
オンプレで物理なんてまだまだ普通にある
0841NAME IS NULL2013/12/10(火) 04:39:43.31ID:???
意味不明なアンカになってもうた
0842NAME IS NULL2013/12/10(火) 08:09:23.92ID:???
>>840
だれも、全部 VM になってるなんて言ってないぞ
0843NAME IS NULL2013/12/10(火) 09:03:56.57ID:???
開発する人と運用する人が違うと、I/Oが厳しいシステムになりがちだわな。
うちは運用する時のI/Oまで考えて実装しているから、
普通に実装した他所のシステムに比べるとI/Oは1/10以下で済んでいるじゃないかと思う。
実装中やテスト中でもテーブル定義やプログラムを変更してチューンしてるからな。
1から作り直しは無いけど、2から作り直しぐらいなら時々ある。
受託開発や人月契約じゃありえないだろうけど。
0844NAME IS NULL2013/12/10(火) 15:19:27.00ID:???
うちのとこ以外性能テストはしない、うちは優秀だから仕事くれ、てか
0845NAME IS NULL2013/12/10(火) 16:24:01.88ID:???
>>843
> うちは運用する時のI/Oまで考えて実装しているから、

普通でしょ
0846NAME IS NULL2013/12/10(火) 16:45:43.08ID:???
お前らだけだろ。
普通は動けばOKで納品して、1年経ってからチューニングで金取るもんだろ。
0847NAME IS NULL2013/12/10(火) 17:27:14.25ID:???
>>846
類は友を呼ぶってやつだね。
君の周りはそんなのばっかりなんだね。
0848NAME IS NULL2013/12/12(木) 15:33:21.99ID:???
だれだ
WHERE expression = FALSE
の代わりに
WHERE NOT expression
とか書いたやつ
気持ち悪い
0849NAME IS NULL2013/12/12(木) 23:54:21.70ID:???
>>848
> WHERE expression = FALSE

この方が気持ち悪いわ
0850NAME IS NULL2013/12/13(金) 15:49:51.53ID:???
I井とかまだユーザー会にいんの
0851NAME IS NULL2013/12/16(月) 05:05:37.41ID:???
Postgresにチューニングなんて大げさなもんあるの?
メモリの割当てくらいでしょ
0852NAME IS NULL2013/12/16(月) 08:43:04.01ID:???
SQLの改善ぐらいしとけよ。
0853NAME IS NULL2013/12/16(月) 14:11:05.24ID:???
つれませんねー
0854NAME IS NULL2013/12/16(月) 17:03:21.43ID:???
つれないのぅ
0855NAME IS NULL2013/12/16(月) 20:30:45.67ID:???
まじめに聞いてるだけだと思う
0856NAME IS NULL2013/12/16(月) 22:57:00.50ID:???
おまえが答えてやれば>>851
0857NAME IS NULL2013/12/30(月) 05:15:47.43ID:???
Npgsql ( .net C# ) 絡みは、ここで聞いてもいいんでしょうか?

Npgsqlだけではないと思いますが、
DataReaderを閉じる前に、別のDataReaderを使うと、
There is already an open DataReader associated with this Command which must be closed first.
というエラーが返ってきます。

これを回避するには、接続文字列に
Preload Reader = true
を追加ということでしたが、この指定をすることによる弊害はないですか?
デフォルトでPreload Reader = true ではないところを見ると、
なにか影響があるのかなと、多少気になります。

ちなみにDataReaderが重なってしまうのは、LISTENとNOTIFYを使用していて、
DataReaderで、あるデータを読み込もうとした瞬間にメッセージをひろってしまい、
そのNotificationイベントでまた別のテーブルデータをDataReaderを使用して、
読み込みなおそうとするためです。
0858NAME IS NULL2013/12/31(火) 10:05:48.44ID:???
都度都度読むか、最初にまとめて読み込むかの違いだろ。
まとめて読むのは、時間もかかるし、メモリも食う。
0859NAME IS NULL2014/01/09(木) 03:36:49.93ID:???
質問です。
Integer型のフィールドを、ビット単位に 0 か 1 かで判定して select する方法はありませんか?
Postgres8.4 です。
0860NAME IS NULL2014/01/09(木) 04:28:59.70ID:???
普通に思いつくビット演算をそのまま記述できると思うよ
0861NAME IS NULL2014/01/09(木) 18:29:34.10ID:???
思いつかないんだろう。
0862NAME IS NULL2014/01/10(金) 00:17:24.52ID:???
思いつくも何もマニュアル見れば演算子も何もかも全部書いてあるのに
0863NAME IS NULL2014/01/10(金) 12:18:45.34ID:???
マニュアルを読むという発想に思い至れないんだろ
0864NAME IS NULL2014/01/10(金) 20:25:48.62ID:???
マニュアルなんかあるのけ?
0865NAME IS NULL2014/01/10(金) 20:47:45.84ID:???
オートマしかないよ
0866NAME IS NULL2014/01/11(土) 10:18:44.25ID:???
ATなんて嫌いだな
0867NAME IS NULL2014/01/11(土) 12:45:41.31ID:???
バッチは有用だろう
0868NAME IS NULL2014/01/11(土) 13:59:28.95ID:???
勝手に再起動かかるのは嫌
0869NAME IS NULL2014/01/22(水) 13:41:13.55ID:???
9.1 を使っています。upsertをやりたいな、と、
http://lets.postgresql.jp/documents/technical/9.1/1#syntax
を参考に

テーブル定義:t_tbl
id     int
dataA   int DEFAULT 0
dataB   int DEFAULT -1
modDate  timestamp

WITH
 val AS (SELECT((1001, 0, -1, '2014-01-23 23:59:59')::t_tbl).*),
 upd AS (UPDATE t_tbl SET modDate = val.modDate FROM val
     WHERE t_tbl.id = val.id
     RETURNING t_tbl._id )
INSERT INTO t_tbl SELECT * FROM val WHERE id NOT IN (SELECT id FROM upd)

というようにして、とりあえず望みは達せられました。
ただ
val AS (SELECT...., 0, -1, .....),
のデフォルト値を入れてる"0, -1"の部分を、こういう具体的な値ではなく
何かデフォルト値であることを示すもの(INSERTでのDEFAULTみたいなもの)が
何か使えないでしょうか。
SQLを生成する(ホスト)プログラムもデフォルト値の具体的な値を知らねば
ならない(定数定義しなければならない)ということを避けたいと思っています。
0870NAME IS NULL2014/01/22(水) 15:55:11.91ID:???
何が不満なのか分からない。
たぶん何かを勘違いしているだけで、実際不満はないんじゃないかと思う。
0871NAME IS NULL2014/01/22(水) 17:29:58.97ID:???
>>869
難しいと思う。システムカタログの pg_attrdef でも見に行けば
デフォルト値のハードコードは回避できるかもしれないけど。

(DEFAULT)::row_type をしたいってことなんだろうけど、
ここの row_type はテーブルじゃなくて、複合型という扱いなんだよね。
テーブルの列はデフォルト値を持てるけど、複合型の段階では持てないから
スマートにはいかないな。なんちゃって MERGE での限界なのでは。
0872NAME IS NULL2014/01/22(水) 20:42:29.92ID:5ZLJW5ib
>>864
PostgreSQLのオンラインマニュアルは
DBMSの中では屈指のわかりやすさだと思う。
日本語文書がすぐに出てくるのもいいところ。
0873NAME IS NULL2014/01/22(水) 22:05:47.73ID:???
あれがあるから本が出なくなったという噂 ソースおれ
08748692014/01/22(水) 22:37:41.08ID:???
>(DEFAULT)::row_type をしたいってことなんだろうけど、

そう、そんな感じの何かの手段が有れば、変更に対しての弱さを
一種類減らせるので、手段が有れば…と検索したりしましたが…でした。

ありがとうございました。>871
0875NAME IS NULL2014/01/23(木) 03:01:57.90ID:???
どういうときにそれが欲しくなるんでしょう。
insert → defaultが使われるから問題ない(ですよね?)
upadte → 更新したい値を設定するから、default値は関係ない(ですよね?)

どっちかがはずれなんだと思うんですけど、分からないです。
0876NAME IS NULL2014/01/23(木) 03:03:15.39ID:???
あ、もしかして全カラムを書いて、::t_tblってしなければカラム名参照できないって話?
なわけもないですよね…orz
0877NAME IS NULL2014/01/23(木) 10:46:46.97ID:???
>>876
::t_tblってするときに、全カラムの「値」を書きたくないってことだと思う。
ただ >>869 の書いたSQLを見ると、UPDATE では modDate しか触ってないんだよね。
これって、これを書く担当も dataA や dataB は更新しない (= デフォルト値がある) って
知っているってことなんじゃないか? それなら、最後も
INSERT INTO t_tbl(id, modDate) SELECT id, modDate FROM val ...
と普通に列リストを書けば、デフォルト値は使われる気はする。

最初の行構築の時には dataA, dataB には NULL でも入れておくか、
そもそも t_tbl にキャストせず、単に (int, timestamp) のペアだけを作ってもいい。
08788692014/01/23(木) 14:24:53.24ID:???
>>877を参考に、やってみたらできた\(^o^)/

WITH
 val AS (SELECT 1001::int AS id, '2014-01-23 23:59:59'::timestamp AS mod),
 upd AS (UPDATE t_tbl SET modDate = val.mod
      FROM val
      WHERE t_tbl.id = val.id
      RETURNING t_tbl.id )
INSERT INTO t_tbl (id, modDate) SELECT id, mod FROM val WHERE id NOT IN (SELECT id FROM upd)

これでプログラム側でSQL生成のときに、
いちいちデフォルト値を書かせなくともよくなりました。

ありがとうございました >みなさま

>>875
単に定義はなるべく一ヶ所にしたい。そうでないと仮に仕様が変わったときに…
というようなことです。
ただまあ、データ受け取ったプログラム側で「このカラムがデフォルト値だったら…」
なんて処理があったら、結局同じことではありますが。
0879NAME IS NULL2014/01/23(木) 17:52:38.46ID:2Sh6JlGf
質問なんですがsearch_pathをスーパーユーザーで一般ユーザーを
設定しても効いてないのとスーパーユーザーのsearch_pathがサーバー
再起動でpublicに戻ってしまうのは何がおかしいのでしょう?

=#ALTER USER testuser SET search_path TO testschema;
みたいな感じでやったんですが全然testschemaを見てないみたいです
明示的にtestschema.testtableみたいな感じだと見れます

環境はPostgreSQL9.3.2 Ubuntu14.04-AMD64です
0880NAME IS NULL2014/01/23(木) 18:08:26.87ID:2Sh6JlGf
スーパーユーザーで戻っちゃうのは自己解決しました
postgresql.confで設定してやらないと戻っちゃうんですね
0881NAME IS NULL2014/01/23(木) 22:46:49.99ID:???
一意制約(UNIQUE制約)について質問です。

次のようなテーブルが有ります。
テーブル "支払伝票"
カラム | 型
---------------------------
番号 | serial
支払先 | integer
金額 | integer
支払日 | date デフォルト now()

同じ月に同一の支払先を重複させないようにしたいです。
例えばこんな感じで…
# ALTER TABLE 支払伝票 ADD constraint 支払月 unique(女子番号,to_char(支払日,'YYYYMM'));
もちろんエラーになりますが。
支払月に相当する列を追加するしか方法はないですか?
0882NAME IS NULL2014/01/23(木) 22:48:41.34ID:???
>>881
誤記です
× ALTER TABLE 支払伝票 ADD constraint 支払月 unique(女子番号,to_char(支払日,'YYYYMM'));
◯ ALTER TABLE 支払伝票 ADD constraint 支払月 unique(支払先,to_char(支払日,'YYYYMM'));
0883NAME IS NULL2014/01/23(木) 22:51:15.91ID:???
>>881
それ以前に、1歴月に1回しか支払えないってのは、仕様上のバグだと思うんだが。
実際の支払日を使ってしまうと、月末締めなら、例えば今月なら1/4, 1/31の2回支払日があるから駄目だろ。
0884NAME IS NULL2014/01/23(木) 23:00:35.07ID:???
>>883
ありがとうございます。
実際には末締めで翌月10日(以降)の支払いなので1歴月に2回支払うことはないんです。
支払先が多くて複数の担当者が店頭で現金払いしているので、間違い(二重払い)が多くて困ってます。
0885NAME IS NULL2014/01/23(木) 23:22:59.06ID:???
支払月 フィールドを増やす
値はトリガーとかでセットすればいいんじゃね
0886NAME IS NULL2014/01/23(木) 23:26:55.60ID:???
>>885
そうですね、
変な小細工を考えるよりそれが一番良さそうです
ありがとうございました
0887NAME IS NULL2014/01/24(金) 10:11:25.55ID:???
>> 881
ALTER TABLE の構文上の制約だから、 CREATE UNIQUE INDEX ならいける。

CREATE UNIQUE INDEX ON 支払伝票 (
支払先,
CAST(extract('year' from 支払日) AS smallint),
CAST(extract('month' from 支払日) AS smallint)
);

to_char は IMMUTABLE 違反でエラーになるので extract で。
0888NAME IS NULL2014/01/24(金) 11:01:15.65ID:???
>>887
ありがとうございます
すばらしい!
新しく列、支払月を追加すること無く、以下のUNIQUE INDEXで見事に出来ました。

CREATE UNIQUE INDEX 支払月 ON 支払伝票 (
支払先,
CAST(extract('year' from 支払日) AS smallint),
CAST(extract('month' from 支払日) AS smallint));

PostgreSQL 奥が深いです。まだまだ勉強します。
ありがとうございました。
0889NAME IS NULL2014/01/24(金) 21:13:09.87ID:???
>>884
そんなところで、支払日から年月抽出してUNIQUE INDEX作っても、使えるシステムにはならないと思うんだ。
0890NAME IS NULL2014/01/24(金) 23:35:40.77ID:???
>>889
わからんけど、店頭のスタッフにタブレットでも持たせるんじゃない?
0891NAME IS NULL2014/01/25(土) 00:35:22.85ID:???
会社の数だけ仕事のやり方があって、それぞれみんな違うんだから、
そんなこと言ってもしょうがないだろ
だいたい SQL や Postgres と関係ないし
余計なお世話だわな
0892NAME IS NULL2014/01/26(日) 14:52:42.20ID:kqHC0R1i
【社会】厚労省の中で男が刃物取り出す 銃刀法違反の現行犯で逮捕
http://uni.2ch.net/test/read.cgi/newsplus/1389346716/

今後の犯罪傾向の予測と考察

事前面接の犯罪に憤りをもつ派遣社員や失業者が比較的警備の薄い厚労省、労働局、
労基署にいく可能性がある。しかし他の可能性を考えてみた。
事前面接中に派遣先と派遣元の担当者をターゲットにしたテロである。
派遣社員の事前面接は違法であり、事前面接中に派遣社員が暴れだした場合は
警察に通報できない状況となる。つまり通報すれば労基法6条違反、
職安法44条違反などの犯罪事実が報道で日本中に周知され、グッドウィル事件の再現となる可能性
が出てくる。そのため被害者である派遣先・派遣元が隠蔽しようとする奇妙なテロがおきうるのだ。
(※グッドウィル摘発のきっかけとなった事故は、現場の派遣スタッフの意図的な自傷事故だったとする説がある。)

事前面接
http://ja.wikipedia.org/wiki/%E4%BA%8B%E5%89%8D%E9%9D%A2%E6%8E%A5

事前面接等の違法行為の被害者として憲法において保全されるはずの権利
である給料が中間搾取され、労働契約も不安定なものとなり、派遣社員の
なかでは法治国家への不信が増大しているとの議論が存在する。

略〜過去・現在に事前面接下の派遣による中間搾取の損害を受
けた被害者は数百万人にのぼり、憲政史上、類をみない数の中間搾取による
犯罪被害者が創出され、それらの犯罪行為が放置されたことになる。犯罪
被害者も20〜40歳程度の若年・中年層が過半数を占めており、人口構成上、
公共の治安への影響力はきわめて強いといえる。被害者のなかで国(厚生
労働省・労働局・労働基準監督署)および司法(検察庁・警察)に対しての
不信や怒りが高まれば、大きな社会不安をおこす可能性はある。
0893まんちゃん ◆SYZTEPEAHI 2014/01/28(火) 18:16:49.01ID:W220JcwH
;
0894NAME IS NULL2014/02/01(土) 13:49:47.40ID:???
お世話になります。
create temp table で作ったテーブルなんですが、明示的に drop table しなくてもセッションが切れたら自動的に drop されるんですよね?
PHP から扱ってるんですが、どうもログを見ると drop されてないケースがたまにあるみたいで、なんで?って思ってます。
セッション毎に create temp table する前に drop table したほうがいいんですか?
warning はでますけど
0895NAME IS NULL2014/02/01(土) 15:04:56.72ID:???
>>894
セッション切れてないんじゃない?
pg_pconnect使ってるとか。
0896NAME IS NULL2014/02/01(土) 21:06:00.13ID:???
postgreはよく知らんのだが、postgreのtemporary tableって、勝手にdropしてくれるの?
0897NAME IS NULL2014/02/01(土) 22:50:19.70ID:???
むしろtemporary tableを接続終了時、勝手にdropしないDBってなに?
0898NAME IS NULL2014/02/02(日) 20:45:10.93ID:???
え?
0899NAME IS NULL2014/02/02(日) 22:27:13.45ID:???
えっ、え?!
0900NAME IS NULL2014/02/03(月) 01:36:24.32ID:???
>>895
遅くなりましたが、ありがとうございました。
ひょっとしてそれが原因かも知れないです。
pg_pconnect使ってます。
明日(月曜日)試して報告します
0901NAME IS NULL2014/02/03(月) 02:07:12.81ID:???
>>897
dropしないDBMSあったと思う。
テーブルの定義は事前に用意しておくんだけど、内容はセッションごとに空からはじまるようなの。
0902NAME IS NULL2014/02/03(月) 08:01:54.91ID:???
>>901
それが普通じゃないのか?
0903NAME IS NULL2014/02/03(月) 09:02:40.37ID:???
oracleぐらいしかしらないな
0904NAME IS NULL2014/02/03(月) 10:06:40.54ID:???
>>901
事前に用意しておくって、そんなのだったら、一時テーブルじゃないじゃん。
0905NAME IS NULL2014/02/03(月) 11:10:36.08ID:???
そっか、oracleか。

>>902
postgresqlはレコードにとどまらず、テーブル定義自体が一時的。

>>904
内容が一時的かつセッション独立なので、目的は果たせるかと。
改修でレイアウト変更するときにクエリの変更だけで解決できないのは不便な気もするけどね。
0906NAME IS NULL2014/02/03(月) 18:34:43.49ID:???
>>903
つーことは、それがデファクト・スタンダードだろ。
0907NAME IS NULL2014/02/03(月) 18:51:14.07ID:???
>>906
そんなことを吠えられても
0908NAME IS NULL2014/02/03(月) 18:52:33.20ID:???
>>904
事前に用意しないで毎回CREATE TABLEして使う???
CREATE TABLEしている時点で、事前に用意してるという意味だろ?
CREATE TABLEしたにも関わらずメタデータが見えないなら欠陥だろ。
0909NAME IS NULL2014/02/03(月) 19:02:31.26ID:???
>>908
create temp table だろ?
あるセッション中でだけ有効なテーブルを作成するってこと
セッション終了で自動削除
意味わかってんのかいな?
あほなんかいな?
0910NAME IS NULL2014/02/03(月) 23:55:56.31ID:???
>>909
Oracle使ってる人間からすると909の書き込みは、こいつアホ?って思っちゃうわ。
CREATE (TEMP) TABLEしたものが存在しないという点に違和感感じない時点で麻痺してるんだろうけど。
0911NAME IS NULL2014/02/04(火) 00:29:42.14ID:???
>>910
やっぱあほやったか
CREATE TEMP TABLEしたものが存在しないってどうゆうことだ?
CREATE したのにw
おまえだけがオラクル使ってるわけじゃねぇよ、ボケ
0912NAME IS NULL2014/02/04(火) 00:35:40.09ID:???
ここOracle版でもDBMS版でもないんだ

Oracleの話は別でやってもらって良いかな
0913NAME IS NULL2014/02/04(火) 00:49:31.38ID:???
まぁそうですね。
postgresでは一時テーブルはセッション終了時に自動的にdropされるって前提で 894 さんも訊いてるのに、Oracleは〜とか言い出す奴がいるから話がややこしくなるw
0914NAME IS NULL2014/02/04(火) 03:36:58.11ID:???
>>910
セッション中は存在するよ。
oracleでもwithあるでしょ。ああいうのだと思えばいい。
0915NAME IS NULL2014/02/04(火) 22:04:38.51ID:???
アホは>>910だったな
0916NAME IS NULL2014/02/05(水) 14:19:47.89ID:???
いまだに「オラクル使ってる俺偉い」とか思ってる奴いるのかなぁ?
学習者は別としてだけどね。
かく言う俺もゴールド取得のためだけに無駄な勉強したなぁ
0917NAME IS NULL2014/02/05(水) 23:11:50.30ID:???
現実にはPostgreはOracle代替用途が多いだろ。
開発もOracleに実装されているのと同じような機能を載せて行ってるし。
0918NAME IS NULL2014/02/06(木) 00:01:10.91ID:???
だからといって、PostgreSQLは独立したRDBMSプロダクトだし、
ましてやOracle互換品などではない
それを実装仕様の差異について、Oracleの実装仕様が正しいことが
当然であるかのような思考しかできない>>910は、
アホと言われてもしかたないだろう
0919NAME IS NULL2014/02/06(木) 00:52:03.72ID:???
>>910
×Oracle使ってる人間からすると
○Oracleしか知らない人間からすると

ところで、PostgreSQLのトランザクションって、CREATE TABLEとかで勝手にコミットされる?
0920NAME IS NULL2014/02/06(木) 01:14:14.13ID:???
>>917
> 開発もOracleに実装されているのと同じような機能を載せて行ってるし。
ずいぶん偏った見方をするもんだね。
そういう部分もあるし、そうじゃない部分もある。
たとえば、RDBMSとしてそれはどうなのよというmysqlの機能を取り込んだりなど。

>>919
DDLもrollbackできる。
0921NAME IS NULL2014/02/06(木) 08:38:20.03ID:???
PostgreSQLにも狂信的な信者って居てるんだな。
Oracleとの互換性が高いというのはPostgreSQLが使われるきっかけとして無視できないものだし、
Oracleとの互換性の高さを求めているユーザーも多い。
だからこそEnterpriseDBってものがあるわけだしな。
PostgreSQLの良さは、Oracleの機能も含めて色んな機能を貪欲に取り込んでいるところなのに、
Oracleの実装仕様は間違いだみたいな考え方の奴が多くなると
せっかくメジャーになりかけてるのに、またマイナーDBに逆戻りするよ。
もっとも、PostgreSQLに対するOracleとの互換性は、最近はあまり求められなくなってきているから
Oracleを否定してPostgreSQL独自仕様をどんどん増やせば良いんじゃないかな。
0922NAME IS NULL2014/02/06(木) 08:55:49.03ID:???
誰もそんなこと言ってないけど
0923NAME IS NULL2014/02/06(木) 10:38:13.64ID:???
実はSQL標準に従っていないのはPostgreSQLだったりする。
http://www.postgresql.jp/document/9.3/html/sql-createtable.html#SQL-CREATETABLE-COMPATIBILITY

標準に従わないのは珍しいから、標準仕様は不便だと考えられたんだろうね。
MySQL, SQL Server, DB2 も、Postgresに似た動作っぽい。
それこそ、Oracleに限定せず「色んな機能を貪欲に取り込んだ」結果なんじゃないかな。
0924NAME IS NULL2014/02/06(木) 10:39:55.39ID:???
>>923
被るところだったw

SQL標準が一般的でないって書いてるしね
0925NAME IS NULL2014/02/06(木) 11:41:49.59ID:???
>>921
突然何を?しかも内容が途中でひっくり返ってるから意図がわからない。
0926NAME IS NULL2014/02/06(木) 14:00:09.48ID:???
意趣返しのつもりなんだろ
小器だなw
0927NAME IS NULL2014/02/06(木) 16:58:14.09ID:???
燃料の一種ですよ
0928NAME IS NULL2014/02/07(金) 16:07:59.74ID:???
PostgresSQLのプロジェクトに寄付とかするにはどうしたらいいのでしょうか?
英語に強くないので本家のサイトにはあまり行きません。
PostgresSQLプロジェクトにはいくら感謝しても感謝しきれないです。
尊敬に近い気持ちがあります。
0929NAME IS NULL2014/02/07(金) 17:25:07.23ID:???
>>928
ttp://www.postgresql.org/about/donate_pg_org/
0930NAME IS NULL2014/02/07(金) 20:19:15.29ID:???
日本に受付窓口があればいいのにね。
10%ぐらい手数料取ってもいいから。
0931NAME IS NULL2014/02/07(金) 22:41:57.59ID:???
>>930
君のビジネスチャンスということだな
0932NAME IS NULL2014/02/08(土) 01:42:29.42ID:???
>>929
なんで PayPal で寄付できないの?
得体の知れない企業・団体にクレジットカード番号を渡したくないんだけど
0933NAME IS NULL2014/02/08(土) 12:12:03.31ID:???
ユーザー会当たりが窓口やればいいのでわ?
0934NAME IS NULL2014/02/08(土) 17:27:34.78ID:???
100ドルからってのが個人ではちょっと痛いですね。
アメリカと違って寄付は税金面で控除にもならないし
せめて一口千円くらいに設定したら日本でも個人で寄付する人は多いと思うんですが

MySQLには寄付は不要でしょうけど
0935NAME IS NULL2014/02/09(日) 01:29:07.30ID:???
ははは
0936NAME IS NULL2014/02/09(日) 16:50:51.79ID:???
日本にも寄付金控除制度はあるんだけどね。
MySQLには不要だろうけど。
0937NAME IS NULL2014/02/10(月) 12:32:03.15ID:???
この規模までくるとお金周りも細かいな
各国の支部の運営用のお金は支部でやってるんね
日本は会員制度でお金集めてるんだな

本体は10ドルからのクレカでの寄付か
支部だとPaypal使えるところもあるんな

企業スポンサーが結構多くて
本体のお金はあまり苦労してないらしいけどな

>>932
あっちの国の人はそういう感覚ないからな
0938NAME IS NULL2014/02/10(月) 17:28:45.57ID:???
>>937

>企業スポンサーが結構多くて
>本体のお金はあまり苦労してないらしいけどな

これは何の情報?
ソースはあるんだろうね?
0939NAME IS NULL2014/02/10(月) 17:52:02.16ID:???
>>937

>あっちの国の人はそういう感覚ないから

なことねぇわw
おまえ、知ったかばっかだな、全部
0940NAME IS NULL2014/02/10(月) 18:18:16.49ID:???
喧嘩か
0941NAME IS NULL2014/02/10(月) 18:20:46.35ID:???
まあカードの不正利用はカード会社が補償してくれるし
なじみの店だとカード見せないでもカード決済してくれちゃうくらい
おおらかだよな、向こうはw
0942NAME IS NULL2014/02/10(月) 18:21:57.12ID:???
企業スポンサーってどれくらいのお金払っているの?
0943NAME IS NULL2014/02/10(月) 18:28:24.45ID:???
>>941
>「なじみの店だと」
ばかなの?
0944NAME IS NULL2014/02/10(月) 18:30:06.57ID:???
はいはい、行ったこともないやつが自分の感覚だけで何を語るのやらw
0945NAME IS NULL2014/02/10(月) 18:59:44.18ID:???
>>944
こいつ、ほんまアホやなwww
ほんじゃ、おまえ、俺の「なじみの店」行ってみ?
0946NAME IS NULL2014/02/10(月) 20:50:16.93ID:???
>>945
国は?
0947NAME IS NULL2014/02/10(月) 22:55:12.37ID:???
>>932
おれに聞かれtも、寄付する気がなければやめれば
はなから・・・
0948NAME IS NULL2014/02/11(火) 00:07:08.75ID:???
>>947
おまえに聞いてねぇよ
ひっこんでろ、ぼけなす
0949NAME IS NULL2014/02/11(火) 19:54:50.94ID:???
>>948
つりか
0950NAME IS NULL2014/02/14(金) 18:52:39.30ID:/dUFM7gI
ヘルプです。
今、postgreSQLの入っているサーバーに、phpPGAdminをインストールし、GUIからデータベースをエクスポートしたいのですが、
以下のエラーが出て、サーバー内のデータベースが取得できません。

---------------------------------
SQLエラー:
 ERROR: database with OID XXXXX(ここはOIDの値) does not exist

文:
 SELECT pdb.datname AS datname, pr.rolname AS datowner, pg_encoding_to_char(encoding) AS datencoding,
(SELECT description FROM pg_catalog.pg_description pd WHERE pdb.oid=pd.objoid) AS datcomment,
(SELECT spcname FROM pg_catalog.pg_tablespace pt WHERE pt.oid=pdb.dattablespace) AS tablespace,
pg_catalog.pg_database_size(pdb.oid) as dbsize
FROM pg_catalog.pg_database pdb LEFT JOIN pg_catalog.pg_roles pr ON (pdb.datdba = pr.oid)
WHERE true
AND NOT pdb.datistemplate

ORDER BY pdb.datname

Fatal error: Call to a member function recordCount() on a non-object in /usr/local/apache2/htdocs/phpPgAdmin/classes/Misc.php on line 1897
---------------------------------

ちなみに、環境は以下の通りです。
---------------------------------
postgreSQL ver : 8.1.5
php ver : 5.2.5
phpPgAdmin ver : 5.0.5
---------------------------------

どなたか、解決方法やアドバイスございましたら、ご教示下さい。
0951NAME IS NULL2014/02/14(金) 20:21:24.22ID:???
OIDがぶっ壊れてるんかな?
なおるかどうか分からんけど、Vacuum Fullしてみたら?
0952NAME IS NULL2014/02/14(金) 20:25:31.44ID:???
なんで psql では確認してみないの?
0953NAME IS NULL2014/02/15(土) 15:10:48.18ID:???
なんでそんなツールを使おうと思うんだろう?
色んなグラフィカル?なツールがあるみたいだけど、DBシステムの変更やメンテナンスとかのレベルで便利だとはとても思えない
0954NAME IS NULL2014/02/15(土) 18:33:46.15ID:w0wORzUI
>951さん

 ご助言ありがとうございます。
 Vacuum Fullしましたが、依然変わらずです。


>952さん

 psqlでは、きちんとデータベースやテーブル、またそのレコードは見えています。
0955NAME IS NULL2014/02/16(日) 12:31:43.03ID:???
ググったらpg_dumpへのパスの設定をミスってるとかなんとか

直接pg_dump呼んだらいいのに、、と思ってしまうが。
0956NAME IS NULL2014/02/16(日) 12:32:23.96ID:???
あ、ちなみにこれね
http://blog.webcreativepark.net/2006/01/11-201906.html
0957NAME IS NULL2014/02/18(火) 02:29:08.20ID:???
RETURNING句って凄く便利で使い勝手があるね。
PostgresSQLの拡張、最高だわ
0958NAME IS NULL2014/02/18(火) 05:20:06.94ID:???
うん、すごく便利だね。
知ってからの使用頻度たるやかなりのものだわ。
0959NAME IS NULL2014/02/18(火) 10:45:42.35ID:???
参考までにどう使ってるの?
writable cteとして?
それとも削除した行をとっておくとか削除した行に対する処理?
0960NAME IS NULL2014/02/18(火) 11:19:49.91ID:???
一番多いのはシリアルの値を取得だな
0961NAME IS NULL2014/02/18(火) 14:08:00.85ID:???
>>960
それが俺も一番便利と思ったところ。
それ以外にも実際に色々と使い勝手が多くて、RETURNING句覚えてから使いまくってるけど、
恥ずかしいからここには書けないw
0962NAME IS NULL2014/02/18(火) 14:16:49.21ID:???
例えば、insert/update したときの更新日時なんかの default now() のフィールドとかをRETURNING句で取得とかね、
さらに to_char で文字列に変換したりしたうえで
0963NAME IS NULL2014/02/18(火) 20:11:47.83ID:???
便利だけど むかーし RETURNING や DROP TABLE の IF EXISTS のためだけに
postgresql 8.2 or later を require されて発狂した記憶があるのであまり賛同できない

使う側としては便利だけど。。。
0964NAME IS NULL2014/02/18(火) 21:56:09.01ID:???
↓のようなことがやりたいのですが良い方法無いでしょうか?
subqueryでマルチカラム取得はダメだよと怒られちゃいます

create table tbl_a (id varchar, cn varchar, ou varchar);
insert into tbl_a values (select id from tbl_b), (select cn, ou from tbl_c);
0965NAME IS NULL2014/02/18(火) 22:42:38.61ID:???
>>964
tbl_b と tbl_c を結合というわけにはいかない状況?
0966NAME IS NULL2014/02/19(水) 10:15:17.96ID:???
>>964
良い方法って以前の話だけど
0967NAME IS NULL2014/02/19(水) 10:35:32.04ID:???
>>964
やりたいことの説明が出来ていない
0968NAME IS NULL2014/02/19(水) 15:33:26.51ID:???
>>967
脳みそが足りてない
0969NAME IS NULL2014/02/19(水) 16:31:44.94ID:???
>>968
アンカ間違えてるよ>>968でそ
0970NAME IS NULL2014/02/19(水) 16:35:36.74ID:???
select 1つだけで出るようにJOINしたうえで values 外せばいい
0971NAME IS NULL2014/02/19(水) 17:50:05.83ID:???
だいたいbとcの結合関係も分からんから何とも言いようがないじゃん
0972NAME IS NULL2014/02/19(水) 17:51:20.46ID:???
>>963
なんで発狂するわけ?
で、完治したの?
0973NAME IS NULL2014/02/22(土) 21:09:38.04ID:???
'2014-01-01 27:30:00' を '2014-01-02 03:30:00' に変換したいのですが、どうするのがスマートでしょうか。
(PostgreSQL 9.3)
0974NAME IS NULL2014/02/22(土) 21:22:48.10ID:???
>>973
select to_timestamp('2014-01-01 27:30:00','YYYY-MM-DD HH24:MI:SS');
0975NAME IS NULL2014/02/22(土) 21:25:14.74ID:???
>>974
>select to_timestamp('2014-01-01 27:30:00','YYYY-MM-DD HH24:MI:SS');

おお、すばらしいです!
「postgresql to_timestamp」でググったら、マニュアルはこちらのようなので、読んで見ます。
ttp://www.postgresql.jp/document/9.3/html/functions-formatting.html
ありがとうございました。
0976NAME IS NULL2014/02/23(日) 01:54:19.48ID:???
>>974 で示してるように、
'2014-01-01 27:30:00' みたいなのだって日付/時刻型書式としてちゃんと受け入れてくれるから特段変換とか考えなくていいよ。
日付/時刻型書式の文字列をtimestamp型に変換してるだけだから
0977NAME IS NULL2014/02/23(日) 01:56:04.84ID:???
'2014-02-31 00:00:00'
だって問題ない
0978NAME IS NULL2014/02/23(日) 02:48:11.25ID:???
ERROR: date/time field value out of range
0979NAME IS NULL2014/02/23(日) 03:31:23.26ID:???
>>978
何をやって?
0980NAME IS NULL2014/02/24(月) 01:00:47.18ID:???
時刻計算について質問です。

psql=> select '2014-02-24 01:30:00'::timestamp - '2014-02-23 00:00:00'::timestamp;
-[ RECORD 1 ]------------
?column? | 1 day 01:30:00

これを、「25:30:00」のように表示させたいのですが、どうすればいいでしょうか。
to_char('HH:MI') を使っても、01:30 のような表示になってしまいます。
0981NAME IS NULL2014/02/24(月) 03:16:44.39ID:???
select ( extract( epoch from '2014-02-24 01:30:00.123'::timestamp ) - extract( epoch from '2014-02-23 00:00:00'::timestamp ) )::text::interval;
0982NAME IS NULL2014/02/24(月) 16:51:43.81ID:???
PostgreSQL 9.3.3, 9.2.7, 9.1.12, 9.0.16 and 8.4.20 released!
http://www.postgresql.org/about/news/1506/
0983横から2014/02/24(月) 17:20:29.69ID:???
>>981
::text::interval の発想は無かった
便利だね
レス数が950を超えています。1000を超えると書き込みができなくなります。