1# $Id: Gbcli.pm,v 1.1 2008/04/04 11:02:30 knizhnik Exp $ 2package Gbcli; 3require Exporter; 4use vars qw($VERSION @ISA @EXPORT); 5@ISA=qw(Exporter); 6$VERSION=1.0; 7use strict; 8@EXPORT= 9qw( 10 cli_cmd_close_session 11 cli_cmd_prepare_and_execute 12 cli_cmd_execute 13 cli_cmd_get_first 14 cli_cmd_get_last 15 cli_cmd_get_next 16 cli_cmd_get_prev 17 cli_cmd_free_statement 18 cli_cmd_abort 19 cli_cmd_commit 20 cli_cmd_precommit 21 cli_cmd_update 22 cli_cmd_remove 23 cli_cmd_insert 24 cli_cmd_prepare_and_insert 25 cli_cmd_describe_table 26 cli_cmd_show_tables 27 cli_cmd_login 28 cli_ok 29 cli_bad_address 30 cli_connection_refused 31 cli_database_not_found 32 cli_bad_statement 33 cli_parameter_not_found 34 cli_unbound_parameter 35 cli_column_not_found 36 cli_incompatible_type 37 cli_network_error 38 cli_runtime_error 39 cli_closed_statement 40 cli_unsupported_type 41 cli_not_found 42 cli_not_update_mode 43 cli_table_not_found 44 cli_not_all_columns_specified 45 cli_not_fetched 46 cli_already_updated 47 cli_login_failed 48 cli_empty_parameter 49 cli_closed_connection 50 cli_oid 51 cli_bool 52 cli_int1 53 cli_int2 54 cli_int4 55 cli_int8 56 cli_real4 57 cli_real8 58 cli_decimal 59 cli_asciiz 60 cli_pasciiz 61 cli_cstring 62 cli_array_of_oid 63 cli_array_of_bool 64 cli_array_of_int1 65 cli_array_of_int2 66 cli_array_of_int4 67 cli_array_of_int8 68 cli_array_of_real4 69 cli_array_of_real8 70 cli_array_of_decimal 71 cli_array_of_string 72 cli_any 73 cli_datetime 74 cli_undefined 75 cli_tuple_mode 76 cli_object_mode 77 cli_array_mode 78 cli_hash_mode 79 pack_int 80 pack_short 81 pack_byte 82 unpack_int 83 unpack_short 84 unpack_byte 85); 86 87# packing 88sub pack_int($){ 89 my $val=shift; 90 if (! defined $val ) { $val=0;} 91 return pack ("N",unpack("i",pack "I",$val)); 92} 93sub unpack_int($) { 94 return unpack("i",pack ("I",unpack "N",$_[0])); 95} 96sub pack_short($){ 97 my $val=shift; 98 if (! defined $val ) { $val=0;} 99 return pack ("n",unpack("s",pack "S",$val)); 100} 101sub unpack_short($){ 102 return unpack ("s",pack ("S",unpack ("n",$_[0]))); 103} 104sub pack_byte($){ 105 my $val=shift; 106 if (! defined $val ) { $val=0;} 107 return pack "c",$val; 108} 109sub unpack_byte($){ 110 return unpack "c",$_[0]; 111} 112 113 114# command codes 115sub cli_cmd_close_session { 0; } 116sub cli_cmd_prepare_and_execute { 1; } 117sub cli_cmd_execute { 2; } 118sub cli_cmd_get_first { 3; } 119sub cli_cmd_get_last { 4; } 120sub cli_cmd_get_next { 5; } 121sub cli_cmd_get_prev { 6; } 122sub cli_cmd_free_statement { 7; } 123sub cli_cmd_abort { 8; } 124sub cli_cmd_commit { 9; } 125sub cli_cmd_update { 10; } 126sub cli_cmd_remove { 11; } 127sub cli_cmd_insert { 12; } 128sub cli_cmd_prepare_and_insert { 13; } 129sub cli_cmd_describe_table { 14; } 130sub cli_cmd_show_tables { 15; } 131sub cli_cmd_login { 16; } 132sub cli_cmd_precommit { 17; } 133 134# status codes 135sub cli_ok { 0; } 136sub cli_bad_address { -1; } 137sub cli_connection_refused { -2; } 138sub cli_database_not_found { -3; } 139sub cli_bad_statement { -4; } 140sub cli_parameter_not_found { -5; } 141sub cli_unbound_parameter { -6; } 142sub cli_column_not_found { -7; } 143sub cli_incompatible_type { -8; } 144sub cli_network_error { -9; } 145sub cli_runtime_error { -10; } 146sub cli_closed_statement { -11; } 147sub cli_unsupported_type { -12; } 148sub cli_not_found { -13; } 149sub cli_not_update_mode { -14; } 150sub cli_table_not_found { -15; } 151sub cli_not_all_columns_specified { -16; } 152sub cli_not_fetched { -17; } 153sub cli_already_updated { -18; } 154sub cli_table_already_exists { -19; } 155sub cli_not_implemented { -20; } 156sub cli_login_failed { -21; } 157sub cli_empty_parameter { -22; } 158sub cli_closed_connection { -23; } 159 160# CLI types 161sub cli_oid { 0; } 162sub cli_bool { 1; } 163sub cli_int1 { 2; } 164sub cli_int2 { 3; } 165sub cli_int4 { 4; } 166sub cli_int8 { 5; } 167sub cli_real4 { 6; } 168sub cli_real8 { 7; } 169sub cli_decimal { 8; } 170sub cli_asciiz { 9; } 171sub cli_pasciiz { 10; } 172sub cli_cstring { 11; } 173sub cli_array_of_oid { 12; } 174sub cli_array_of_bool { 13; } 175sub cli_array_of_int1 { 14; } 176sub cli_array_of_int2 { 15; } 177sub cli_array_of_int4 { 16; } 178sub cli_array_of_int8 { 17; } 179sub cli_array_of_real4 { 18; } 180sub cli_array_of_real8 { 19; } 181sub cli_array_of_decimal { 20; } 182sub cli_array_of_string { 21; } 183sub cli_any { 22; } 184sub cli_datetime { 23; } 185sub cli_undefined { 24; } 186 187# Binding mode 188sub cli_tuple_mode { 0; } 189sub cli_object_mode { 1; } 190sub cli_array_mode { 2; } 191sub cli_hash_mode { 2; } 192 1931; 194