2012-01-01から1年間の記事一覧

pg_xnodeを使ってみた

こんにちは。ぬこ@横浜(@nuko_yokoham)です。 このエントリはPostgreSQL Advent Calendar 2012 : ATNDの12/23用として登録しました(23日中に投稿できなかったのは私が怠けていたからです・・・すいません)。 pg_xnodeとは pg_xnodeとは、簡単に言えばXML型…

ユーザ定義型を作成してみよう(提案)

こんにちは。ぬこ@横浜(@nuko_yokoham)です。 このエントリはPostgreSQL Advent Calendar 2012 : ATNDの12/3用として登録しました。先日のPgDay 2012のs87さんのショートセッションで 漢数字型 ksj が簡単に紹介されたというのもあるので、今日はその漢数字…

PgDay 2012

ということで今年もPgDay 2012 Japan | 日本PostgreSQLユーザ会に行ってきました。 今回は面倒なんでツイートまとめ+αで。 #講演タイトルは正確なものではありません・・・。 The PostgreSQL community Magnus氏の講演。逐次翻訳つき。 PostgreSQLの特異性…

groongaを囲む夕べ

11/29の夜、渋谷へ行って 全文検索エンジンgroongaを囲む夕べ 3 @groonga : ATND に参加してきた。 とりあえず備忘のためのメモ。 それにしても発表者のgroongaへの愛の深さを感じるセッションが多かった。 groongaの紹介 開発者からの話。 KVSはkey-valueペ…

自宅環境構築

やっと自宅(というか常時持ち歩き用)のLet's note SSDマシン上にCentOS6+PostgreSQL9.2環境を構築できた。全くconfigurationを設定しない状態で、軽くpgbenchで測定。 $ pgbench test -c 10 -T 60 starting vacuum...end. transaction type: TPC-B (sort of…

HOOKを試してみた

本業が一段落ついたので、以前から気になっていたHOOKの組み込みをやってみた。 HOOKの調査 HOOKってPostgreSQL文書にもきちんと書いていないような気がするんだけど、幸いcontribでHOOKを使った実装例 contrib/auth_delay contrib/auto_explain contrib/pg_…

メモ:PostgreSQL9.2.1のビルドで警告

CentOS 5.3上で、9.2.1をビルドしてたらこんな警告が発生した。 In file included from gram.y:13359: scan.c: In function ‘yy_try_NUL_trans’: scan.c:16257: 警告: unused variable ‘yyg’flexかbisonのバージョンが何か影響しているのかしらん。 [harada@…

textsearch_jaのts_headline()があやしい

textsearch_jaの調べ物をしていて別の問題がみつかった。ts_headline()で強調文字の埋め込みと一緒に、特定の記号を除去するようなのだが、そのときに変なゴミ(\x0B)がts_headline()の結果に現れるのだ。 test=# SELECT ts_headline('japanese', '猫(cat)は…

textsearch_jaじゃなくてtextsearchの問題だった・・・かも?

先週、to_tsquery()に渡した英語トークン末尾が欠けるという現象を書いたんだけど、ちょっと勘違いしていた。 textsearch_jaの問題ではなく、textseach自体の仕様 or 問題なのかも。 test=# SELECT to_tsquery('tennis'); to_tsquery ------------ 'tenni' (…

textsearch_jaのバグ?

textsearch_jaの挙動を調べていて、ちょっと妙な動きに気づいた。日本語ではなくて英語を to_tsquery() に与えたときの挙動なんだけど、以下の例のように、与えた英文キーワードの末端が欠けるというものだ。 test=# EXPLAIN SELECT data FROM test WHERE to…

PostgreSQL 9.2のXML関連の改善

PostgreSQL 9.2のリリースノート(翻訳版)を改めて見てみた。何気にXML関連の改善もいくつか入ってる。 XMLもまだ見捨てられてはいないのだな。 xpath()が文字列中の特殊文字を確実にエスケープするようにしました。(Florian Pflug) これがないと、結果が正当…

JPUGしくみ&アプリケーション分科会勉強会

11/29のJPUGの勉強会に行ってきた。 最初のセッションはEarly Lock ReleaseによるPostgreSQLの性能改善と9.2の性能改善内容に関する話(多CPUでないとあまり関係はないけど) 2番目のセッションはperfによる性能分析の話・・・といっても今回はperfの説明の…

btree index対象となるデータの最大サイズ

長大テキストに対するbtree index作成性能を調べようと思ったら、どうやらPostgreSQLのbtree indexで扱えるデータサイズの最大長は8191バイトらしい(確認したのはPostgreSQL 9.1.5)。 CREATE INDEX test_data_idx ON test USING btree (data); ERROR: index …

nullって何型?

同一関数名で別の型を受け付ける関数群が存在する場合に、その関数引数にnullを渡したらどうなるんだっけ?という素朴な疑問を受け、即答できなかったので検証してみた。 予想では明示的にキャストしてなければ型が明確でないというエラーになるとは思うが・…

漢数字型 version 1.2

大量に漢数字型をデータを投入したあとでインデクスを設定しても、インデクスを使った実行計画が選択されない・・・。 INSERT INTO ksj_sample VALUES (generate_series(1,1000000), ((random() * 10000)::int)::ksj); INSERT 0 1000000 ANALYZE ksj_sample;…

gronngaのファイル

groongaってカラム単位にデータファイルを作っているのか・・・ だから全文検索エンジンとしてだけでなく、列指向DBとしての用途もあるってことなのか。

リグレッションテスト用の期待結果ファイル作成

作法を知らなかったので意外と苦労した・・・。 psqlに -e と -q のオプションをつけてSQLスクリプト実行した結果を作成しないといけないのね。

漢数字型 version 1.1

今日は漢数字型と整数型間の型変換を作成してみた。 これでそれなりに使えるものになったはず。 TRUNCATE TABLE ksj_sample; TRUNCATE TABLE INSERT INTO ksj_sample VALUES (516::ksj),(0::ksj),(20101::ksj); INSERT 0 3 SELECT data FROM ksj_sample; dat…

漢数字型 version 1.0

とりあえず比較演算子の定義と、演算子クラスの実装まではできた。 これで、WHERE句とORDER BY、そしてB-Treeインデクスまでは使えるようになった。 まずはめでたしめでたし。あとは型変換定義かな・・・ DROP TABLE ksj_sample; DROP TABLE DROP EXTENSION …

PostgreSQL セキュリティFix

PostgreSQL: Security Update 2012-08-17 released 珍しく?XMLまわりが問題になっているっぽい。 XSLTまわりのようだから、普通にXML型だけを使っている分には影響はないのかもしれないが・・・

漢数字データ型 version 0.9

勉強会向け用のデータ型を作成中。とりあえず、先週末時点では ・漢数字文字列⇔int32相互変換関数 ・入出力関数 ・四則演算関数 ・四則演算子 までは作成した。今日は集約演算(SUM/MIN/MAX)を作成。AVGは状態保持変数をどう管理するかで悩んだので今日はPend…

邪悪なSQL

PostgreSQLって二重引用符で名標を囲うと、かなりフリーダムなことになるから、絶対にPJでは使わせまいと思ったのでした。 test=# CREATE TABLE " " ( " " int, " " text); CREATE TABLE test=# \d " " Table "public. " Column | Type | Modifiers --------…

PostgreSQL 9.2 beta3 release

beta3がリリースされたようなので、JSON型日本語問題が修正されているのか確認してみた。 beta2のときには、PostgreSQL 9.2のJSON型 - 日々の記録 別館で示したように、キーや値に日本語が含まれているとJSONパーサが失敗していたが、beta3では対応してもら…

DOMAIN限界説

PostgreSQLではCREATE DOMAINをチェック制約なしで実行することで型のsynonymっぽいものが作成できるけど、 実はDOMAINは配列にすることが出来ないので、完全なエイリアスにはなってない。 今日確認してちょっと吃驚したが、考えてみれば当たり前かも・・・…

PostgreSQLのフロントエンド/バックエンドプロトコル(続き)

前回、調査したときにはバイナリデータもテキスト形式として扱われている、と書いたのだけど、よくよくマニュアルを見ると、libpqにはバイナリ書式を扱うためのオプションがあるようだ。 なので、前回調査した結果というのは「psqlを使ったから」というのが…

PostgreSQL フロントエンド/バックエンドプロトコル

PostgreSQLのバイナリ型のデータって、PostgreSQLのフロントエンド/バックエンドプロトコル上では、どういう形式になっているのか、ちょっと調べてみた。結論からいえば、少なくともlibpqを使った場合には、バイナリ型のデータであっても、テキスト形式とし…

textsearch_groonga

textsearch_groongaを9.1.4にインストールしてみる(9.2についてはrcがリリースされたら試してみる予定)。とりあえずPostgreSQL 9.1.4とgroongaの最新版(2.0.3)をインストールして、textsearch_groongaをインストールしようとしたがこんなエラーが発生してビ…

PostgreSQL 9.2のJSON型

今日はPostgreSQL 9.2からサポートされたJSON型について試してみることにする。 PostgreSQL: Documentation: 9.2: JSON Type PostgreSQL: Documentation: 9.2: JSON Functions パース処理 まずは、JSON文字列をJSON型にCastしてみる。 test=# SELECT '{"key1…

PostgreSQL 9.2のRangeを使った二十四節気の擬似型

日本に住んでいるなら二十四節気というのは馴染みがあるはず。 ならば、二十四節気を使った日時の範囲検索とか面白そうじゃね?と思ったのでPostgreSQL 9.2-betaに入っていたRange型を使って、簡単に作ってみた。 参考:PostgreSQL: Documentation: 9.2: Ran…

二十四節気・七十二候

9.2から導入されたRange型をうまく活用して、二十四節気・七十二候を扱うようなデータタイプって作れるかな・・・。 別に実用上何か使いたいってわけじゃないけど。