~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to libdrizzle/drizzle.h

  • Committer: Jay Pipes
  • Date: 2009-01-30 04:01:12 UTC
  • mto: This revision was merged to the branch mainline in revision 830.
  • Revision ID: jpipes@serialcoder-20090130040112-svbn774guj98pwi4
To remain in compatibility with MySQL, added ability to interpret
decimal arguments as datetime strings for temporal functions.

Fixed YEAR(), MONTH(), DAYOFMONTH(), DAYOFYEAR(), HOUR(), MINUTE(), SECOND(), and MICROSECOND()
to accept decimal parameters and interpret them the same way as MySQL.

Fixed an issue with the TemporalFormat::matches() method which was 
incorrectly assuming all microsecond arguments were specified as 6 digits.
Added power of 10 multiplier to usecond calculation. This fixes issues with
failures in type_date and func_sapdb test cases.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* - mode: c; c-basic-offset: 2; indent-tabs-mode: nil; -*-
 
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
 
3
 *
 
4
 *  Copyright (C) 2008 Sun Microsystems, Inc.
 
5
 *
 
6
 *  This program is free software; you can redistribute it and/or modify
 
7
 *  it under the terms of the GNU General Public License as published by
 
8
 *  the Free Software Foundation; version 2 of the License.
 
9
 *
 
10
 *  This program is distributed in the hope that it will be useful,
 
11
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
13
 *  GNU General Public License for more details.
 
14
 *
 
15
 *  You should have received a copy of the GNU General Public License
 
16
 *  along with this program; if not, write to the Free Software
 
17
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
18
 */
 
19
 
 
20
#ifndef _libdrizzle_drizzle_h
 
21
#define _libdrizzle_drizzle_h
 
22
 
 
23
 
 
24
#include <stdint.h>
 
25
#if !defined(__cplusplus)
 
26
# include <stdbool.h>
 
27
#endif
 
28
#include <drizzled/common.h>
 
29
#include <libdrizzle/drizzle_field.h>
 
30
#include <libdrizzle/drizzle_options.h>
 
31
#include <libdrizzle/drizzle_res.h>
 
32
#include <libdrizzle/net_serv.h>
 
33
 
 
34
#ifdef  __cplusplus
 
35
extern "C" {
 
36
#endif
 
37
 
 
38
struct st_drizzle_methods;
 
39
 
 
40
enum drizzle_status
 
41
{
 
42
  DRIZZLE_STATUS_READY,DRIZZLE_STATUS_GET_RESULT,DRIZZLE_STATUS_USE_RESULT
 
43
};
 
44
 
 
45
typedef struct st_drizzle
 
46
{
 
47
  NET    net;      /* Communication parameters */
 
48
  unsigned char  *connector_fd;    /* ConnectorFd for SSL */
 
49
  char    *host,*user,*passwd,*unix_socket,*server_version,*host_info;
 
50
  char          *info, *db;
 
51
  DRIZZLE_FIELD  *fields;
 
52
  uint64_t affected_rows;
 
53
  uint64_t insert_id;    /* id if insert on table with NEXTNR */
 
54
  uint64_t extra_info;    /* Not used */
 
55
  uint32_t thread_id;    /* Id for connection in server */
 
56
  uint32_t packet_length;
 
57
  uint32_t  port;
 
58
  uint32_t client_flag,server_capabilities;
 
59
  uint32_t  protocol_version;
 
60
  uint32_t  field_count;
 
61
  uint32_t  server_status;
 
62
  uint32_t  server_language;
 
63
  uint32_t  warning_count;
 
64
  struct st_drizzle_options options;
 
65
  enum drizzle_status status;
 
66
  bool  free_me;    /* If free in drizzle_close */
 
67
  bool  reconnect;    /* set to 1 if automatic reconnect */
 
68
 
 
69
  /* session-wide random string */
 
70
  char          scramble[SCRAMBLE_LENGTH+1];
 
71
  bool unused1;
 
72
  void *unused2, *unused3, *unused4, *unused5;
 
73
 
 
74
  const struct st_drizzle_methods *methods;
 
75
  void *thd;
 
76
  /*
 
77
    Points to boolean flag in DRIZZLE_RES  or DRIZZLE_STMT. We set this flag
 
78
    from drizzle_stmt_close if close had to cancel result set of this object.
 
79
  */
 
80
  bool *unbuffered_fetch_owner;
 
81
  /* needed for embedded server - no net buffer to store the 'info' */
 
82
  char *info_buffer;
 
83
  void *extension;
 
84
} DRIZZLE;
 
85
 
 
86
DRIZZLE * drizzle_create(DRIZZLE *drizzle);
 
87
DRIZZLE * drizzle_connect(DRIZZLE *drizzle, const char *host,
 
88
             const char *user,
 
89
             const char *passwd,
 
90
             const char *db,
 
91
             uint32_t port,
 
92
             const char *unix_socket,
 
93
             uint32_t clientflag);
 
94
 
 
95
int32_t    drizzle_select_db(DRIZZLE *drizzle, const char *db);
 
96
int32_t    drizzle_query(DRIZZLE *drizzle, const char *q);
 
97
int32_t    drizzle_send_query(DRIZZLE *drizzle, const char *q, uint32_t length);
 
98
int32_t    drizzle_real_query(DRIZZLE *drizzle, const char *q, uint32_t length);
 
99
 
 
100
DRIZZLE_RES * drizzle_store_result(DRIZZLE *drizzle);
 
101
DRIZZLE_RES * drizzle_use_result(DRIZZLE *drizzle);
 
102
 
 
103
uint32_t drizzle_field_count(const DRIZZLE *drizzle);
 
104
uint64_t drizzle_affected_rows(const DRIZZLE *drizzle);
 
105
uint64_t drizzle_insert_id(const DRIZZLE *drizzle);
 
106
uint32_t drizzle_errno(const DRIZZLE *drizzle);
 
107
const char * drizzle_error(const DRIZZLE *drizzle);
 
108
const char * drizzle_sqlstate(const DRIZZLE *drizzle);
 
109
uint32_t drizzle_warning_count(const DRIZZLE *drizzle);
 
110
const char * drizzle_info(const DRIZZLE *drizzle);
 
111
uint32_t drizzle_thread_id(const DRIZZLE *drizzle);
 
112
const char * drizzle_character_set_name(const DRIZZLE *drizzle);
 
113
 
 
114
bool   drizzle_change_user(DRIZZLE *drizzle, const char *user,
 
115
                           const char *passwd, const char *db);
 
116
 
 
117
/* local infile support */
 
118
 
 
119
#define LOCAL_INFILE_ERROR_LEN 512
 
120
 
 
121
void
 
122
drizzle_set_local_infile_handler(DRIZZLE *drizzle,
 
123
        int (*local_infile_init)(void **, const char *, void *),
 
124
        int (*local_infile_read)(void *, char *, unsigned int),
 
125
        void (*local_infile_end)(void *),int (*local_infile_error)
 
126
        (void *, char*, unsigned int), void *);
 
127
 
 
128
void
 
129
drizzle_set_local_infile_default(DRIZZLE *drizzle);
 
130
 
 
131
int32_t    drizzle_shutdown(DRIZZLE *drizzle);
 
132
int32_t    drizzle_dump_debug_info(DRIZZLE *drizzle);
 
133
int32_t    drizzle_refresh(DRIZZLE *drizzle, uint32_t refresh_options);
 
134
int32_t    drizzle_kill(DRIZZLE *drizzle, uint32_t pid);
 
135
int32_t    drizzle_set_server_option(DRIZZLE *drizzle,
 
136
                                     enum enum_drizzle_set_option option);
 
137
int32_t    drizzle_ping(DRIZZLE *drizzle);
 
138
const char *  drizzle_stat(DRIZZLE *drizzle);
 
139
const char *  drizzle_get_server_info(const DRIZZLE *drizzle);
 
140
 
 
141
const char *  drizzle_get_host_info(const DRIZZLE *drizzle);
 
142
uint32_t  drizzle_get_server_version(const DRIZZLE *drizzle);
 
143
uint32_t  drizzle_get_proto_info(const DRIZZLE *drizzle);
 
144
DRIZZLE_RES *  drizzle_list_tables(DRIZZLE *drizzle,const char *wild);
 
145
DRIZZLE_RES *  drizzle_list_processes(DRIZZLE *drizzle);
 
146
int32_t    drizzle_options(DRIZZLE *drizzle, enum drizzle_option option,
 
147
                           const void *arg);
 
148
DRIZZLE_RES *     drizzle_list_fields(DRIZZLE *drizzle, const char *table,
 
149
                                      const char *wild);
 
150
bool         drizzle_read_query_result(DRIZZLE *drizzle);
 
151
 
 
152
bool drizzle_commit(DRIZZLE *drizzle);
 
153
bool drizzle_rollback(DRIZZLE *drizzle);
 
154
bool drizzle_autocommit(DRIZZLE *drizzle, bool auto_mode);
 
155
bool drizzle_more_results(const DRIZZLE *drizzle);
 
156
int drizzle_next_result(DRIZZLE *drizzle);
 
157
void drizzle_close(DRIZZLE *drizzle);
 
158
bool drizzle_reconnect(DRIZZLE *drizzle);
 
159
void drizzle_disconnect(DRIZZLE *drizzle);
 
160
 
 
161
bool
 
162
cli_advanced_command(DRIZZLE *drizzle, enum enum_server_command command,
 
163
                     const unsigned char *header, uint32_t header_length,
 
164
                     const unsigned char *arg, uint32_t arg_length,
 
165
                     bool skip_check);
 
166
uint32_t cli_safe_read(DRIZZLE *drizzle);
 
167
DRIZZLE_FIELD * cli_list_fields(DRIZZLE *drizzle);
 
168
DRIZZLE_DATA * cli_read_rows(DRIZZLE *drizzle,DRIZZLE_FIELD *drizzle_fields,
 
169
                             unsigned int fields);
 
170
int cli_unbuffered_fetch(DRIZZLE *drizzle, char **row);
 
171
const char * cli_read_statistics(DRIZZLE *drizzle);
 
172
int cli_read_change_user_result(DRIZZLE *drizzle);
 
173
 
 
174
typedef bool (*safe_read_error_hook_func)(NET *net);
 
175
extern safe_read_error_hook_func safe_read_error_hook;
 
176
 
 
177
#ifdef  __cplusplus
 
178
}
 
179
#endif
 
180
 
 
181
#endif /* _libdrizzle_drizzle_h */