Drizzled Public API Documentation
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
uncompressed_length.cc
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
#include <config.h>
21
#include <drizzled/plugin/function.h>
22
#include <drizzled/function/math/int.h>
23
#include <plugin/compression/uncompressed_length.h>
24
25
#include <string>
26
27
using namespace
std;
28
using namespace
drizzled;
29
30
31
int64_t
Item_func_uncompressed_length::val_int
()
32
{
33
assert(fixed == 1);
34
String
*res= args[0]->val_str(&value);
35
if
(!res)
36
{
37
null_value=1;
38
return
0;
39
}
40
null_value=0;
41
if
(res->empty())
return
0;
42
43
/*
44
res->ptr() using is safe because we have tested that string is not empty,
45
res->c_ptr() is not used because:
46
- we do not need \0 terminated string to get first 4 bytes
47
- c_ptr() tests simbol after string end (uninitialiozed memory) which
48
confuse valgrind
49
*/
50
return
uint4korr(res->ptr()) & 0x3FFFFFFF;
51
}
52
plugin
compression
uncompressed_length.cc
Generated on Thu Aug 29 2013 10:00:30 for drizzle by
1.8.4