pgconf asia-201612203-pg reversi-ja

27
PGConf.ASIA Lightning Talk (2016-12-03) pg_reversi ぬこ@横浜 (@nuko_yokohama)

Upload: toshi-harada

Post on 16-Apr-2017

293 views

Category:

Technology


1 download

TRANSCRIPT

PGConf.ASIA Lightning Talk(2016-12-03)

pg_reversiぬこ@横浜 (@nuko_yokohama)

2

自己紹介

詳しくは「 PostgreSQL ラーメンで」ググって

nuko_yokohama ですPostgreSQL 芸人めざして日々精進しています

3

今日のお題

4

すまんな、今日も役に立たない

お話ですよ

5

「ソリティア社員」向けの

PostgreSQL 製品

6

pg_reversi

7

PostgreSQL でリバーシしよう

8

pg_reversi SQL Functions.

black(x, y)white(x,y)

black_pass()white_pass()

get_turn_boad_status()

9

SQL/plpgsqlSQL/plpgsql で実装。で実装。なぜなら、なぜなら、

絶対に絶対に CC 言語で書きたくない言語で書きたくないでござる!から。でござる!から。

10

Viewer は psql の スクリプトファイルで実装しました。(PostgreSQL 9.6 機能の "\crosstabview" を使用 )

11

Viewer スクリプトSELECT get_turn_boad_status() AS status;\o /dev/nullSELECT x AS " ", y, CASE WHEN status = 1 THEN '●' WHEN status = -1 THEN '○' ELSE ' ' END AS statusFROM boad ORDER BY x;\o\crosstabview " " y status y

SELECT 結果を /dev/null に送るのが肝

12

pg_reversi image

13

pg_reversiDemonstration

14

psql でリバーシができました!

15

ここまでは "Standard edition"

の話

16

pg_reversiEnterprise Edition

17

機能emit_log_hook を使って pg_reversiアプリケーションからのログを抑止。

static voidpg_reversi_emit_log_hook(ErrorData *data) { const char* appname = application_name;

if (appname == NULL || *appname == '\0') { /* applicatoin_name is no set */ return ; }

if (!strcmp(appname, "pg_reversi")) { /* When application_name is pg_reversi, output to the server log is suppressed. */ data->output_to_server = false; } return ;}

18

PostgreSQL の設定 "preload_shared_libraries'.

preload_shared_libraries = 'pg_reversi'

psql ではなく、pg_reversi (psql copy) を使う。

$ pg_reversi -U postgres pg_reversi

19

“application_name” の内容$ psql -U postgres pg_reversi -c "SHOW application_name" application_name ------------------ psql(1 row)

$ pg_reversi -U postgres pg_reversi -c "SHOW application_name" application_name ------------------ pg_reversi(1 row)

20

Enterprise EditionDemonstration

21

Standard Edition

PostgreSQLPostgreSQL サーバログにサーバログにSQLSQL ログが出てしまうので、ログが出てしまうので、

DBADBA にバレるにバレる↓↓

上司に怒られる!上司に怒られる!

22

Enterprise Edition

SQLSQL がログ出力されないがログ出力されない↓↓

DBA DBA も上司も気づかない。も上司も気づかない。みんな幸せ。みんな幸せ。Win-Win!Win-Win!

23

まさに、まさに、EntertpriseEntertprise 企業の企業のクズ社員向けの機能クズ社員向けの機能といえるでしょう。といえるでしょう。

24

まとめ

25

Reversi も遊ぶことができる。

(pgAdmin4 じゃ遊べないけどね! )

26

そう、そう、PostgreSQL & psqlPostgreSQL & psql

ならね・・・ならね・・・

27

おしまい