~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to libdrizzle/row_client.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
 
/*
2
 
 * Drizzle Client & Protocol Library
3
 
 *
4
 
 * Copyright (C) 2008 Eric Day (eday@oddments.org)
5
 
 * All rights reserved.
6
 
 *
7
 
 * Redistribution and use in source and binary forms, with or without
8
 
 * modification, are permitted provided that the following conditions are
9
 
 * met:
10
 
 *
11
 
 *     * Redistributions of source code must retain the above copyright
12
 
 * notice, this list of conditions and the following disclaimer.
13
 
 *
14
 
 *     * Redistributions in binary form must reproduce the above
15
 
 * copyright notice, this list of conditions and the following disclaimer
16
 
 * in the documentation and/or other materials provided with the
17
 
 * distribution.
18
 
 *
19
 
 *     * The names of its contributors may not be used to endorse or
20
 
 * promote products derived from this software without specific prior
21
 
 * written permission.
22
 
 *
23
 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24
 
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25
 
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26
 
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
27
 
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28
 
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29
 
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30
 
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31
 
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32
 
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33
 
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
 
 *
35
 
 */
36
 
 
37
 
/**
38
 
 * @file
39
 
 * @brief Row Declarations for Clients
40
 
 */
41
 
 
42
 
#ifndef __DRIZZLE_ROW_CLIENT_H
43
 
#define __DRIZZLE_ROW_CLIENT_H
44
 
 
45
 
#ifdef __cplusplus
46
 
extern "C" {
47
 
#endif
48
 
 
49
 
/**
50
 
 * @addtogroup drizzle_row_client Row Declarations for Clients
51
 
 * @ingroup drizzle_client_interface
52
 
 *
53
 
 * These functions allow you to access rows in a result set. If the result is
54
 
 * unbuffered, you can read and buffer rows one at a time. If the rows are
55
 
 * buffered in the result, the drizzle_row_next() and related functions can be
56
 
 * used.
57
 
 * @{
58
 
 */
59
 
 
60
 
/**
61
 
 * Get next row number for unbuffered results. Use the drizzle_field* functions
62
 
 * to read individual fields after this function succeeds.
63
 
 *
64
 
 * @param[in,out] result pointer to the structure to read from.
65
 
 * @param[out] ret_ptr Standard libdrizzle return value. May be set to
66
 
 *      DRIZZLE_RESULT_ERROR_CODE if the server return an error, such as a
67
 
 *      deadlock.
68
 
 * @return the row id if there is a valid row, or 0 if there are no more rows or an error.
69
 
 */
70
 
DRIZZLE_API
71
 
uint64_t drizzle_row_read(drizzle_result_st *result, drizzle_return_t *ret_ptr);
72
 
 
73
 
/**
74
 
 * Read and buffer one row. The returned row must be freed by the caller with
75
 
 * drizzle_row_free().
76
 
 *
77
 
 * @param[in,out] result pointer to the result structure to read from.
78
 
 * @param[out] ret_pointer Standard drizzle return value.
79
 
 * @return the row that was read, or NULL if there are no more rows.
80
 
 */
81
 
DRIZZLE_API
82
 
drizzle_row_t drizzle_row_buffer(drizzle_result_st *result,
83
 
                                 drizzle_return_t *ret_ptr);
84
 
 
85
 
/**
86
 
 * Free a row that was buffered with drizzle_row_buffer().
87
 
 */
88
 
DRIZZLE_API
89
 
void drizzle_row_free(drizzle_result_st *result, drizzle_row_t row);
90
 
 
91
 
/**
92
 
 * Get an array of all field sizes for buffered rows.
93
 
 */
94
 
DRIZZLE_API
95
 
size_t *drizzle_row_field_sizes(drizzle_result_st *result);
96
 
 
97
 
/**
98
 
 * Get next buffered row from a fully buffered result.
99
 
 */
100
 
DRIZZLE_API
101
 
drizzle_row_t drizzle_row_next(drizzle_result_st *result);
102
 
 
103
 
/**
104
 
 * Get previous buffered row from a fully buffered result.
105
 
 */
106
 
DRIZZLE_API
107
 
drizzle_row_t drizzle_row_prev(drizzle_result_st *result);
108
 
 
109
 
/**
110
 
 * Seek to the given buffered row in a fully buffered result.
111
 
 */
112
 
DRIZZLE_API
113
 
void drizzle_row_seek(drizzle_result_st *result, uint64_t row);
114
 
 
115
 
/**
116
 
 * Get the given buffered row from a fully buffered result.
117
 
 */
118
 
DRIZZLE_API
119
 
drizzle_row_t drizzle_row_index(drizzle_result_st *result, uint64_t row);
120
 
 
121
 
/**
122
 
 * Get current row number.
123
 
 */
124
 
DRIZZLE_API
125
 
uint64_t drizzle_row_current(drizzle_result_st *result);
126
 
 
127
 
/** @} */
128
 
 
129
 
#ifdef __cplusplus
130
 
}
131
 
#endif
132
 
 
133
 
#endif /* __DRIZZLE_ROW_CLIENT_H */