CAMLprim value PQexecPrepared_stub( value v_conn, value v_stm_name, value v_params, value v_binary_params) { CAMLparam1(v_conn); PGconn *conn = get_conn(v_conn); np_callback *np_cb = get_conn_cb(v_conn); PGresult *res; size_t len = caml_string_length(v_stm_name) + 1; char *stm_name = caml_stat_alloc(len); size_t nparams = Wosize_val(v_params); const char * const *params = copy_params(v_params, nparams); int *formats, *lengths; copy_binary_params(v_params, v_binary_params, nparams, &formats, &lengths); memcpy(stm_name, String_val(v_stm_name), len); caml_enter_blocking_section(); res = PQexecPrepared(conn, stm_name, nparams, params, lengths, formats, 0); free(stm_name); free_binary_params(formats, lengths); free_params(params, nparams); caml_leave_blocking_section(); CAMLreturn(alloc_result(res, np_cb)); #else CAMLprim value PQexecPrepared_stub( value __unused v_conn, value __unused v_stm_name, value __unused v_params, value __unused v_binary_params) { caml_failwith("Postgresql.exec_prepared: not supported"); return Val_unit; #endif }
CAMLprim value PQprepare_stub(value v_conn, value v_stm_name, value v_query) { CAMLparam1(v_conn); PGconn *conn = get_conn(v_conn); np_callback *np_cb = get_conn_cb(v_conn); PGresult *res; size_t stm_name_len = caml_string_length(v_stm_name) + 1; size_t query_len = caml_string_length(v_query) + 1; char *stm_name = caml_stat_alloc(stm_name_len); char *query = caml_stat_alloc(query_len); memcpy(stm_name, String_val(v_stm_name), stm_name_len); memcpy(query, String_val(v_query), query_len); caml_enter_blocking_section(); res = PQprepare(conn, stm_name, query, 0, NULL); free(stm_name); free(query); caml_leave_blocking_section(); CAMLreturn(alloc_result(res, np_cb)); #else CAMLprim value PQprepare_stub( value __unused v_conn, value __unused v_stm_name, value __unused v_query) { caml_failwith("Postgresql.prepare: not supported"); return Val_unit; #endif }
CAMLprim value PQexecParams_stub( value v_conn, value v_query, value v_params, value v_binary_params) { CAMLparam1(v_conn); PGconn *conn = get_conn(v_conn); np_callback *np_cb = get_conn_cb(v_conn); PGresult *res; size_t len = caml_string_length(v_query) + 1; char *query = caml_stat_alloc(len); size_t nparams = Wosize_val(v_params); const char * const *params = copy_params(v_params, nparams); int *formats, *lengths; copy_binary_params(v_params, v_binary_params, nparams, &formats, &lengths); memcpy(query, String_val(v_query), len); caml_enter_blocking_section(); res = (nparams == 0) ? PQexec(conn, query) : PQexecParams(conn, query, nparams, NULL, params, lengths, formats, 0); free_binary_params(formats, lengths); free_params(params, nparams); free(query); caml_leave_blocking_section(); CAMLreturn(alloc_result(res, np_cb)); }
CAMLprim value PQmakeEmptyPGresult_stub(value v_conn, value v_status) { CAMLparam1(v_conn); value v_res = alloc_result(PQmakeEmptyPGresult(get_conn(v_conn), Int_val(v_status)), get_conn_cb(v_conn)); CAMLreturn(v_res); }
CAMLprim value PQgetResult_stub(value v_conn) { CAMLparam1(v_conn); PGconn *conn = get_conn(v_conn); np_callback *np_cb = get_conn_cb(v_conn); PGresult *res; caml_enter_blocking_section(); res = PQgetResult(conn); caml_leave_blocking_section(); CAMLreturn(alloc_result(res, np_cb)); }
/*----------------------------------------------------------------------------*/ void hecmw_visualize_init_if(int *nnode, int *nelem, int *err) { *err = 1; if (alloc_local_mesh()) return; if (alloc_result()) return; if (HECMW_dist_copy_f2c_init(mesh)) return; if (HECMW_result_copy_f2c_init(result, *nnode, *nelem)) return; *err = 0; }
/** request : 'connection -> string -> 'result <doc>Execute an SQL request. Exception on error</doc> **/ static value request( value o, value r ) { MYSQL_RES *res; val_check_kind(o,k_connection); val_check(r,string); if( mysql_real_query(MYSQLDATA(o),val_string(r),val_strlen(r)) != 0 ) error(MYSQLDATA(o),val_string(r)); res = mysql_store_result(MYSQLDATA(o)); if( res == NULL ) { if( mysql_field_count(MYSQLDATA(o)) == 0 ) return alloc_int( (int)mysql_affected_rows(MYSQLDATA(o)) ); else error(MYSQLDATA(o),val_string(r)); } return alloc_result(res); }
CAMLprim value PQdescribePrepared_stub(value v_conn, value v_query) { CAMLparam1(v_conn); PGconn *conn = get_conn(v_conn); np_callback *np_cb = get_conn_cb(v_conn); PGresult *res; size_t len = caml_string_length(v_query) + 1; char *query = caml_stat_alloc(len); memcpy(query, String_val(v_query), len); caml_enter_blocking_section(); res = PQdescribePrepared(conn, query); free(query); caml_leave_blocking_section(); CAMLreturn(alloc_result(res, np_cb)); #else CAMLprim value PQdescribePrepared_stub(value __unused v_conn, value __unused v_query) { caml_failwith("Postgresql.describe_prepared: not supported"); return Val_unit; #endif }