rbock
312e735d6d
Moved a bunch of things into namespace vendor
...
This namespace is for things the developer will not get in touch with
(normally) but the vendor might need to use for specialization of the
interpreter.
This separation is not fully completed yet, some changes will have to
follow...
2014-01-18 15:50:16 +01:00
rbock
93129be748
Added missing interpreter specializations, especially for serializable
2014-01-17 09:56:35 +01:00
rbock
9826ef79e4
Added interpreters to is_null, multi_column, alias and select pseudo table
2014-01-16 22:31:43 +01:00
rbock
afcc62fc75
Added interpreters for a bunch of functions and table aliases
2014-01-15 19:42:14 +01:00
rbock
54d45e97ae
Added interpret support for remove()
2014-01-15 08:24:42 +01:00
rbock
54fa55e6a5
interpret works for in()
2014-01-15 07:38:53 +01:00
rbock
602f33726f
interpreter added for update()
2014-01-15 07:22:54 +01:00
rbock
9335a62087
Replaced implicit trivial_value_is_null tag for columns with explicit tvin method
...
This isn't database vendor specific, but library vendor specific, as I
used this implicit behaviour quite a lot, but it is utterly confusing
when mixed with prepared statements. Explicit is better here.
2014-01-14 22:54:07 +01:00
rbock
fa18ce5476
interpret works for insert now
...
Also added explicit .default_values() method
2014-01-13 23:05:48 +01:00
rbock
eb9f92543e
Interpret works for parameters now
...
Also, paramters inherit the operators they need
2014-01-13 21:00:20 +01:00
rbock
c03ef1b0b1
interpret handles order_by(), limit() and offset()
2014-01-13 06:24:27 +01:00
rbock
7fc5c34190
interpret works for group_by(), having() und .like()
2014-01-12 16:19:09 +01:00
rbock
d56d1422cd
interpret works for where()
2014-01-12 16:01:38 +01:00
rbock
1d3ea8516f
interpreter for from()
2014-01-12 15:45:50 +01:00
rbock
d957e8c0ae
Added interpreter to select, select_flag_list, select_expression_list
2014-01-12 12:22:15 +01:00
rbock
47ae6a2e76
Continued to implement standard serializing interpreters
...
Everything that is interpreted also has to move out of detail namespace,
because it might have to be specialized for a database connector
2014-01-11 21:51:57 +01:00
rbock
bef7cea6a6
Started to switch from member serialize -> non-member interpret
...
This will allow database connectors to specialize the interpretation of
the expression tree and interpret queries in vendor specific ways where
required.
2014-01-11 00:11:47 +01:00
Roland Bock
51e0db883f
Added static assert to prevent automatic rivial->null conversion to happen in where/having
2014-01-05 13:29:08 +01:00
Roland Bock
1360b1d9db
Turned value_type::parameter_t into a non-template
2014-01-02 13:11:19 +01:00
Roland Bock
b031bda5fc
Can now prepare a select (tested with mysql)
2013-12-28 22:52:54 +01:00
Roland Bock
b4baf38fab
Parameters of prepared statements can be null now
2013-12-26 19:05:05 +01:00
Roland Bock
a915bd9e50
Refactored of result and result row (clearer structure depending on connectors)
2013-12-17 22:12:13 +01:00
Roland Bock
9597c3712c
Moved result construction more towards connector.
...
This will make it easier to handle different formats
2013-12-15 13:02:41 +01:00
Roland Bock
221e20918b
select now collects parameters from Where and Having
2013-11-26 23:45:31 +01:00
Roland Bock
8f99a03359
Can extract parameters from expression
2013-11-22 09:42:28 +01:00
Roland Bock
8d12d23d67
Added verbatim table
2013-11-16 23:19:37 +01:00
Roland Bock
a0af42e57e
Added a few more type tests.
2013-11-10 18:03:39 +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
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
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
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
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
5604d5d663
Added dynamic limit and offset
2013-09-26 18:54:52 +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
0db405c28c
Rewrote like() member function, added more type control to concat()
2013-09-19 09:04:07 +02:00
Roland Bock
1596b33e52
Minor cleanup
2013-09-13 10:38:25 +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
f39582082b
Minor cleanup
2013-08-17 11:27:41 +02:00
Roland Bock
712d3a5c53
Renamed examples -> tests
...
Will need to add reasonable examples
2013-08-17 11:22:38 +02:00