----------------------------------------------------------------- handlersocketãã©ã°ã¤ã³ã¸ã®æ¥ç¶ãéãã«ã¯ãNet::HandlerSocketãªã ã¸ã§ã¯ããä½æãã¾ãã use Net::HandlerSocket; my $args = { host => 'localhost', port => 9998 }; my $hs = new Net::HandlerSocket($args); ----------------------------------------------------------------- æ¤ç´¢ãªã©ã®å½ä»¤ãå®è¡ããåã«ãå¦ç対象ã¨ãªãç´¢å¼ãéãå¿ è¦ããã ã¾ãã my $err = $hs->open_index(3, 'database1', 'table1', 'PRIMARY', 'f1,f2'); die $hs->get_error() if $res->[0] != 0; æåã®å¼æ°ã¯éãç´¢å¼ã«ä»ããçªå·ã§ããä»ããçªå·ã¯åä¸ã® Net::HandlerSocketãªãã¸ã§ã¯ãã«ã¤ãã¦ã®ã¿æå¹ã§ãã第4å¼æ°ã¯éã ç´¢å¼ã®ååã§ããPRIMARYããæå®ããå ´åã¯ãã©ã¤ããªãã¼ãéããã¾ ãã第5å¼æ°ã¯ã,ãã§åºåãããååã®ãªã¹ãã§ãã ----------------------------------------------------------------- ãã¼ãã«ããç´¢å¼ã使ã£ã¦è¡ãåå¾ããã«ã¯ãexecute_singleã¡ã½ãã ãå¼ã³ã¾ãã my $res = $hs->execute_single(3, '=', [ 'foo' ], 1, 0); die $hs->get_error() if $res->[0] != 0; shift(@$res); æåã®å¼æ°ã¯ç´¢å¼ã®çªå·ã§ãåãNet::HandlerSocketãªãã¸ã§ã¯ã㸠open_indexã§ä»ãããã®ã§ãªããã°ãªãã¾ããã第2å¼æ°ã«ã¯æä½ãæå® ãã¾ããç¾å¨ã®ãã¼ã¸ã§ã³ã§ã¯ãã=ããã>=ããã<=ããã>ããã<ã ã®æä½ãå©ç¨å¯è½ã§ãã第3å¼æ°ã¯é åã¸ã®åç §ã§ãããã¯æ¢ãã¹ãè¡ã® ãã¼å¤ãæå®ãã¾ããé åã®é·ãã¯ç´¢å¼ã®ãã¼ã®åæ°ã¨åããå°ãªãæ° ã§ãªããã°ãªãã¾ããã第4å¼æ°ã¨ç¬¬5å¼æ°ã¯ãããããåå¾ããæå¤§è¡ æ°ãåå¾åã«èªã¿é£ã°ãè¡æ°ãæå®ãã¾ããåå¾ãããåã¯å¯¾å¿ãã open_indexå¼ã³åºãã®ç¬¬5å¼æ°ã§æå®ããããã®ã«ãªãã¾ãã execute_singleã¡ã½ããã¯å¸¸ã«é åã¸ã®åç §ãè¿ãã¾ããæåã®è¦ç´ 㯠ã¨ã©ã¼ã³ã¼ãã§ãããã0ãªãã°æåã表ãã¾ããæ®ãã®è¦ç´ ã¯åã®å¤ã§ ããããåå¾ããããã¼ã¿ãè¤æ°è¡ã®å ´åã¯ããããä¸ã¤ã®é åã¸é£çµ ãããå½¢ã§æ ¼ç´ããã¦ãã¾ããä¾ãã°ã5è¡3åã®ãã¼ã¿ã®å ´åã次ã®ã ããªã³ã¼ãã«ãã£ã¦ãã®å 容ãåå¾ã§ãã¾ãã die $hs->get_error() if $res->[0] != 0; shift(@$res); for (my $row = 0; $row < 5; ++$row) { for (my $col = 0; $col < 3; ++$col) { my $value = $res->[$row * 5 + $col]; # ... } } ----------------------------------------------------------------- è¡ãæ´æ°ã¾ãã¯åé¤ããã«ã¯ãæ´ã«å¤ãã®å¼æ°ãæå®ã㦠execute_singleã¡ã½ãããå¼ã³åºãã¾ããæ¸ãè¾¼ã¿å¦çãããã«ã¯ã 対象ã®Net::HandlerSocketãªãã¸ã§ã¯ãã¯æ´æ°ç¨handlersocketã¯ã¼ã«(æ¢ å®ã§ã¯ãã¼ã9999)ã¸æ¥ç¶ããããã®ã§ãªãã¦ã¯ãªãã¾ããã (å®å ¨ã®ããããã¼ã9998ã¯åç §å¦çã ããåãä»ãããã¼ã9999ã¯æ´æ° å¦çãåãä»ããããã«ãªã£ã¦ãã¾ãããã¼ã9999ã¯åç §å¦çãåãä» ãã¾ãããã¬ã³ã¼ãããã¯çã®å½±é¿ã§é ããªãã¾ãããã¼ãçªå·ã¯ mysqldã®ãhandlersocket_portãã¨ãhandlersocket_port_wrãã®è¨å®é ç®ã§å¤æ´ã§ãã¾ãã) my $args = { host => 'localhost', port => 9999 }; my $hs = new Net::HandlerSocket($args); my $res = $hs->execute_single(3, '=', [ 'bar' ], 1, 0, 'U', [ 'fubar', 'hoge' ]); die $hs->get_error() if $res->[0] != 0; my $num_updated_rows = $res->[1]; my $res = $hs->execute_single(3, '=', [ 'baz' ], 1, 0, 'D'); die $hs->get_error() if $res->[0] != 0; my $num_deleted_rows = $res->[1]; execute_singleã®ç¬¬6å¼æ°ã¯å¤æ´å¦çã®ç¨®é¡ãæå®ãã¾ããç¾å¨ã®ãã¼ ã¸ã§ã³ã§ã¯ãUãã¨ãDããå©ç¨å¯è½ã§ãããUãã«ã¤ãã¦ã¯ã第7å¼æ°ã§ æ°ããå¤ãæå®ãã¾ããæ´æ°ãããåã¯ã対å¿ããopen_indexå¼ã³åºã ã®ç¬¬5å¼æ°ã§æå®ããããã®ã«ãªãã¾ãããDãã«ã¤ãã¦ã¯ç¬¬7å¼æ°ã¯ç ç¥ã§ãã¾ãã ----------------------------------------------------------------- execute_singleã¡ã½ããã¯åã®æ¿å ¥ã«ã使ç¨ã§ãã¾ãã my $res = $hs->execute_single(3, '+', [ 'foo', 'bar', 'baz' ]); die $hs->get_error() if $res->[0] != 0; 第3å¼æ°ã¯ã対å¿ããopen_indexå¼ã³åºãã®ç¬¬5å¼æ°ã®åãªã¹ãã¨åãã ãã®é·ãã®é åã¸ã®åç §ã§ãªããã°ãªãã¾ãããopen_indexå¼ã³åºã㮠第5å¼æ°ã«æå®ããã¦ããªãåã«ã¤ãã¦ã¯ããã®åã®æ¢å®å¤ãã»ãããã ã¾ãã ----------------------------------------------------------------- execute_multiã¡ã½ããã使ãã°ãè¤æ°ã®ãªã¯ã¨ã¹ããä¸ã¤ã®å¼ã³åºã㧠å®è¡ãããã¨ãã§ãã¾ããããã¯ãªã¯ã¨ã¹ããåå¥ã«å®è¡ããããé«é ã§ãã my $rarr = $hs->execute_multi([ [ 0, '>=', [ 'foo' ], 5, 0 ], [ 2, '=', [ 'bar' ], 1, 0 ], [ 4, '<', [ 'baz' ], 10, 5 ], ]); for my $res (@$rarr) { die $hs->get_error() if $res->[0] != 0; shift(@$res); # ... } ----------------------------------------------------------------- ããhandlersocketãæ¥ç¶ãèªè¨¼ããããã«è¨å®ããã¦ãã (handlersocket_plain_secretåã¯handlersocket_plain_secret_wrãã»ã ãããã¦ãã)ãªãã°ãã¯ã©ã¤ã¢ã³ãã¯ä»ã®ã¡ã½ããå¼ã³åºãã®åã«auth ã¡ã½ãããå¼ã³åºãå¿ è¦ãããã¾ãã my $res = $hs->auth('password'); die $hs->get_error() if $res->[0] != 0; ----------------------------------------------------------------- ã¨ã©ã¼ãèµ·ããã¨è¿å¤ã®é ååç §ã®æåã®è¦ç´ ã0以å¤ã«ãªãã¾ããè² ã® æ°ã®å ´åã¯I/Oã¨ã©ã¼ãèµ·ãã£ããã¨ã示ãããã®å ´åã¯ãã® Net::HandlerSocketãªãã¸ã§ã¯ãã¯ç ´æ£ããã¹ãã§ããæ£ã®å¤ã®å ´å㯠æ¥ç¶ã¯ç¶æããã¦ããããããã®ãªãã¸ã§ã¯ãã¯ãã以å¾ãåå©ç¨ã§ã ã¾ãã