null値があるときのpostgresqlでの集計結果について

sqlを発行して合算値が欲しいとき集計関数「sum()」を使います
ただ、NULL値を活かしたいときにいつも忘れてしまうのでまとめ

<sample1>
nullが含まれる

test table data
[key] [value]
1 10
2 10
3 null

select sum(value), avg(value) from test;
=>
20, 10

<sample2>
全部null

test table
[key] [value]
1 null
2 null
3 null

select sum(value), avg(value) from test;
=>
null, null

<sample3>
sumの結果を足すとき

test table
[key] [value1] [value2]
1 10 null
2 10 null
3 10 null

select sum(value1) + sum(value2) from test;
=>
null

null + 30 = nullとなってしまう

<sample4>
sumの結果を足すとき(null+30=30としたいとき)

test table
[key] [value1] [value2]
1 10 null
2 10 null
3 10 null

select coalesce(sum(value1),0) + coalesce(sum(value2),0) from test;
=>
30

null + null = nullとしたいとき、<sample4>を使うと「0」になってしまう…
SQLいい方法がないか模索中。

gitoliteでgitolite-adminへのpushに失敗する

gitoliteでgit cloneしておいたgitolite-adminリポジトリへ
ユーザーを追加しようとすると

cd path/to/gitolite-admin/keydir/
git add newuserkey
git commit
git push

エラーが発生
Fix for "W Access for Gitolite-admin DENIED to gitoliteuser"

gitoliteサーバーへ入って
gitolite.confを確認すると違うユーザーになってる..
このユーザーはキーの名前と同じようです(詳しくはわからないけど)

repo gitolite-admin
RW+ = (ここにユーザー名の記載)

gitolite.confとgitolite.conf-compiled.pmの間違えてるユーザーを
変更

もとのPCでも
gitolite.confを修正しておく
(しておかないとまたもとに戻る)

git push
でうまくいきました

SSHでの「PTY allocation request failed on channel 0」エラーの解決

sshでサーバーにつなぐときに

PTY allocation request failed on channel 0

のエラー発生

sshのバージョンの違いによるものらしく
ssh -T user@server
としたらいいそうです

ちなみにOpenSSHのバージョンを確認するには
ssh -V

OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
というふうに見れます

<参考>
http://stackoverflow.com/questions/10330678/gitolite-pty-allocation-request-failed-on-channel-0

JIRAのデータベースHSQLDBからPostgreSQLに切り替える

JIRAのダッシュボードにデータベースの警告がでてる..

jiradb1

HSQL DBっていうJIRAの内部サーバーになっており、推奨じゃないので
PostgreSQLに切り替えます

<環境>
Centos 6.3
JIRA 8.1 (not JIRA WAR)
PostgreSQL 8.4.13

サーバーにログイン
rootユーザーでJIRA用のユーザー[jirauser]を作ります
sudo su – postgres
createsuer -P jirauser
(パスワードを入力)
exit;

作ったユーザーに切り替え
su – jirauser
createdb jiradatabase

rootに戻ります
exit;

JIRAとめます
/opt/atlassian/jira/bin/./stop-jira.sh

JIRA Home Directory と JIRA Installation Directoryの
バックアップを取っておきます
cp -r /var/atlassian/application-data/jira /var/atlassian/application-data/jira.backup
cp -r /opt/atlassian/jira/atlassian-jira /opt/atlassian/jira/atlassian-jira.backup

JIRAのデータベースの設定を変えます
/opt/atlassian/jira/bin/./config.sh

----------------------
JIRA Configurator v1.1
----------------------

— Main Menu —
[H] Configure JIRA Home
[D] Database Selection
[A] Advanced Settings
[S] Save and Exit
[X] Exit without Saving

Dを入力、ENTER

--- Database Selection ---
Database Type : HSQL
Instance : (unused)
Connect As : sa / (no password)

  • [H] HSQL (not for production use)
    [M] MySQL
    [O] Oracle
    [P] PostgreSQL
    [S] SQL Server (MS-SQL)

[X] Return to Main Menu

Pを入力、ENTER

PostgreSQL Database Configuration.
Hostname ()> 127.0.0.1
Port ()> 5432
Database ()> jiradatabase
Username ()> jirauser
Password ()>
Test Connection ([Y]/N)? > Y
Attempting to connect to 127.0.0.1:5432/jiradatabase
*** Connection failed: Could not connect to the DB: FATAL: no pg_hba.conf entry for host "127.0.0.1", user "jirauser", database "jiradatabase", SSL off

おこられたので、いったん設定をやめて、
pg_hba.confを書き換えます

vim /var/lib/pgsql/data/pg_hba.conf
(追記)host jiradb jira 127.0.0.1/32 md5

データベース再起動
/etc/init.d/postgresql restart

つながるか確認
psql -U jira -d jiradb -p 5432 -h 127.0.0.1

うまくいってれば再度、JIRAのデータベース設定をする
/opt/atlassian/jira/bin/./config.sh

さっきこけたところが

PostgreSQL Database Configuration.
Hostname ()> 127.0.0.1
Port ()> 5432
Database ()> jiradb
Username ()> jira
Password ()>
Test Connection ([Y]/N)? > Y
Attempting to connect to 127.0.0.1:5432/jiradb
Connection successful!

うまくいって成功

--- Main Menu ---
[H] Configure JIRA Home
[D] Database Selection
[A] Advanced Settings
[S] Save and Exit
[X] Exit without Saving

抜ける前に、Sで保存します

Storing database configuration in /var/atlassian/application-data/jira/dbconfig.xml
Settings saved successfully.

うまくいってそう
起動してみる
/opt/atlassian/jira/bin/./start-jira.sh

(ちゃんと動いているかログを見たほうがいいらしい)
画面にアクセス

jiradb2

エラーがでた
/var/atlassian/application-data/jira/dbconfig.xml を修正

PUBLIC

public

再度、画面にアクセス
jiradb3

「既存データをインポート」クリック

jiradb4

バックアップしたzipのパスを入力
インポートをクリック

jiradb5

しばし待つと..

jiradb6

できた!