Roland Bock
3c5682f3ae
Use serializable_list in update and insert
2013-11-15 09:59:44 +01:00
Roland Bock
16e3851847
Prevent template constructor to overload default copy cosntructors
2013-11-15 09:57:30 +01:00
Roland Bock
d3e438606c
Added serializable_list (which is a noop for non-dynamic cases)
2013-11-15 09:56:46 +01:00
Roland Bock
9d09127e71
Fixed stupid bug in insert.
...
Basically nothing would have ever been inserted other than default
lines.
2013-11-10 15:29:20 +01:00
Roland Bock
81c77a58f4
Even moe function tests and a few corrections
2013-11-08 09:09:52 +01:00
Roland Bock
813549690e
More function tests and a few corrections for names and return types
2013-11-07 15:06:13 +01:00
Roland Bock
9d94f6770b
Added function tests and fixed a few return types
2013-11-07 13:36:54 +01:00
Roland Bock
0a57af0b3d
Added tests for integral and floating point
2013-11-07 12:23:49 +01:00
Roland Bock
aae910671e
Replaced numeric by integral and floating_point
2013-11-07 11:31:42 +01:00
Roland Bock
d3963e04b6
Added more checks for database traits
2013-11-01 15:25:52 +01:00
Roland Bock
e63a798a82
Started to use flags to indicate database traits
...
e.g. support for any or outer join, or how string concatenation is
implemented
2013-11-01 12:23:50 +01:00
Roland Bock
a17a8ecfa6
Reduced resource requirements for non-dynamic selects
2013-10-31 09:43:10 +01:00
Roland Bock
7050491bf0
Added support for dynamic columns
2013-10-29 19:32:52 +01:00
Roland Bock
902583a33b
Added support for dynamic columns to select_expression_list
...
Dynamic columns are not yet supported in results, though.
2013-10-09 10:36:38 +02:00
Roland Bock
3718f4a57c
Added default constructor for result type
2013-10-05 20:14:05 +02:00
Roland Bock
29165b2ce3
Removed obsolete flag in join types
2013-10-05 20:13:42 +02:00
Roland Bock
cff18e917b
Reworked join syntax
2013-10-05 17:35:40 +02:00
Roland Bock
c59c8d9ba9
Reduced likelihood of mistakes in CRTP for tables.
...
Renaming serialize -> serialize_impl helped tracking down an error in
the connection implementation examples
2013-10-03 22:25:23 +02:00
Roland Bock
4d8e448152
Disabled select(tab). Use select(all_of(tab)) instead.
2013-10-03 21:36:50 +02:00
Roland Bock
96c6e5d435
Dynamic methods of select, insert and co return *this now.
...
Not sure if chaining makes much sense, but it is possible now
2013-10-03 20:53:55 +02:00
Roland Bock
bd337954fa
Deleted unused struct
2013-10-02 19:45:58 +02:00
Roland Bock
1a8ea5a3b3
Re-wrote in()/not_in() to use a specific template and removed the generic nary member function template
...
The specific version is easier to understand and could be adjusted more
easily if some database should not support it...
2013-10-02 10:55:36 +02:00
Roland Bock
7fde9dafb2
Cleaned up a bunch of unused expression templates
2013-10-02 07:40:26 +02:00
Roland Bock
a2d23006f0
Fixed ambiguous assignment operator
2013-10-02 07:32:28 +02:00
Roland Bock
2e7d5478f6
Added dynamic functions to insert, remove and update
2013-09-30 07:46:50 +02:00
Roland Bock
d0d5fd2969
Replaced tag_yes and tag_no by std::true_type and std::false_type
2013-09-29 09:02:51 +02:00
Roland Bock
581353dc53
Streamlined some typenames
2013-09-29 08:51:29 +02:00
Roland Bock
3d777d982a
Added missing file offset.h
2013-09-27 10:59:09 +02:00
Roland Bock
75447a2959
Fixed compile bug in gcc-4.8
2013-09-27 10:58:41 +02:00
Roland Bock
5604d5d663
Added dynamic limit and offset
2013-09-26 18:54:52 +02:00
Roland Bock
716996db51
Added dynamic versions of group_by, having and order_by
2013-09-22 21:29:53 +02:00
Roland Bock
472833016f
Added dynamic versions of from and where to select
2013-09-22 20:42:19 +02:00
Roland Bock
5576df1775
Cleaned up select_pseudo_table and started to prepare for dynamic select parts
2013-09-22 12:16:28 +02:00
Roland Bock
950859af5f
Rewrote macro generated function code to handwritten code
...
This increases the number of Bytes, but it also increases readability,
and reduces complexity.
It also allows to specialize functions for database engines.
2013-09-19 17:07:14 +02:00
Roland Bock
0db405c28c
Rewrote like() member function, added more type control to concat()
2013-09-19 09:04:07 +02:00
Roland Bock
1ab504f908
Fixed compile time checks for concat
2013-09-19 08:15:19 +02:00
Roland Bock
683731517a
Introduced result::front, pop_front and empty() to make it more STL-container-like
2013-09-19 08:08:59 +02:00
Roland Bock
8189dc6a00
Fixed bug in type set
2013-09-19 08:04:01 +02:00
Roland Bock
705c16e5a3
Rewrote concat function, preparing for concat and operator||, depending on the connector
2013-09-18 15:52:41 +02:00
Roland Bock
c042d99643
Introduced unary function templates which use one pair of braces less
...
This is required for sqlite which cannot parse
SELECT EXISTS((SELECT 1))
2013-09-18 15:19:47 +02:00
Roland Bock
d55cfce746
Simplified check for duplicate names in select expression list
2013-09-17 07:45:54 +02:00
Roland Bock
161da75723
Stripped a lot of superfluouos type information from result rows.
...
Moved member template into name class to utilize the fact the class
aliases are really just aliases.
This makes the code leaner in many cases and less complex for the compiler
(I guess). It also has the benefit, that the field name is available as
string in the result_rows. This might be useful for debugging one day.
2013-09-13 09:18:15 +02:00
Roland Bock
2defeff18e
Introduced field template to make result_row_t less specific.
...
It is sufficient to have name and type. There is no need for the result
"to know" what exact expression was used to define the column.
Surprisingly, template alias creates new templates (in contrast to
non-template using, which really just creates an alias of a type).
template<typename T> struct A{};
struct X
{
template<typename T>
using U = A<T>;
};
struct Y
{
template<typename T>
using U = A<T>;
template<>
using U<int> = X;
};
template<template<typename> class X>
struct Z{};
static_assert(std::is_same<X::U<int>, Y::U<int>>::value, "class aliases are really just aliases");
static_assert(not std::is_same<Z<X::U>, Z<Y::U>>::value, "template aliases are new templates");
int main()
{
}
2013-09-13 07:24:41 +02:00
Roland Bock
9c1e75cd89
Adjusted insert and update to work with sqlite
...
Introduced first connector trait to change query generation.
2013-09-09 22:45:34 +02:00
Roland Bock
a629988abe
Minor code cleanup
2013-09-05 23:57:37 +02:00
Roland Bock
92312445f8
Added convenience include file
2013-09-05 23:56:33 +02:00
Roland Bock
e928b72ede
Removed result::size()
...
The number of rows is unknown in many cases. This might depend on the
configuration.
2013-08-22 08:11:43 +02:00
Roland Bock
09226497a4
Restructured expression types and braces to handle ANY and SOME
2013-08-21 23:25:38 +02:00
Roland Bock
cf1dae396a
Fixed handling of IS NULL and IS NOT NULL expressions
2013-08-21 19:32:11 +02:00
Roland Bock
c41a181ca9
Improved early type checking in stand-alone functions
2013-08-21 19:30:56 +02:00
Roland Bock
f244f1110a
Added like method for text types
2013-08-21 19:30:13 +02:00
Roland Bock
80e573568e
Fixed result to not consume rows with operator* and operator->
2013-08-17 11:26:58 +02:00
Roland Bock
b7c13e3974
Expand tab -> all_of(tab) in multi_column
2013-08-17 11:25:05 +02:00
Roland Bock
8914e3d18f
Fixed decltype to work with g++
2013-08-17 11:23:54 +02:00
Roland Bock
4ea28cac4b
Added support for g++-4.8
2013-08-15 11:54:20 +02:00
Roland Bock
e4bcc27463
is_null() throws for invalid rows
...
result_row objects can be constructed with raw result rows representing
the end of the result set. Field values must not be accessed for such
rows. Thus, is_null() now throws an exception when called for a field of
an invalid row.
2013-08-15 09:32:24 +02:00
Roland Bock
e6f086bbfa
Cleaned up directory structure.
2013-08-14 06:34:11 +02:00