0
0
mirror of https://github.com/rbock/sqlpp11.git synced 2024-12-28 01:03:52 +08:00

330 Commits

Author SHA1 Message Date
rbock
7c928ae6d0 Added table sets to several more expressions 2014-02-10 19:55:48 +01:00
rbock
54687c5e69 Added a bunch of static asserts to prevent misuse of insert and update
There are quite a few more to be inserted
2014-02-10 17:56:16 +01:00
rbock
e4c7b5235f Added several checks for correct types in insert columns/values 2014-02-10 09:46:31 +01:00
rbock
22c43358f2 All statements back to composite design
The point is that even though the CRTP code looked nice, it was too hard
to comprehend.
2014-02-09 23:30:30 +01:00
rbock
cc76820870 Migrated insert and remove back to composite design 2014-02-09 18:14:52 +01:00
rbock
ae2f1948ac Added checks to prevent non-matching columns from being inserted 2014-02-09 15:06:42 +01:00
rbock
61ed1d9f37 Corrected inconsistency in select value_type 2014-02-08 23:48:35 +01:00
rbock
88fc0959b5 Added value type back to select 2014-02-08 22:50:26 +01:00
rbock
3c6e7cb89a Fixed a bunch of smaller migration errors 2014-02-08 22:24:05 +01:00
rbock
68750aac80 Refactored insert to use policies
Much cleaner now.
2014-02-08 21:06:23 +01:00
rbock
5b67061fca Fixed multi_column to handle all_of again 2014-02-08 17:12:40 +01:00
rbock
b82a0295cf Fixed all_of use in select 2014-02-08 16:29:21 +01:00
rbock
0a744455ec basic select methods work again
I've let go of the select(flags, columns) monster methods, these are now
separated
2014-02-07 23:43:26 +01:00
rbock
9c4832df0f Switched remove to policy based design.
A lot of sweating to figure out how to do it, but now it looks MUCH
cleaner and it is probably a lot easier to extend :-)
2014-02-07 21:25:23 +01:00
rbock
b907e3482d Using explicit call to python now, this might work on Windows even ;-) 2014-02-02 19:10:14 +01:00
rbock
28fc5900f2 Added missing overload for prepared statement parameters 2014-02-01 14:28:23 +01:00
rbock
ec2a8587d4 Added python code generator as an example 2014-01-28 20:53:22 +01:00
rbock
dfcd372611 tvin works with const char*, too 2014-01-26 15:44:44 +01:00
rbock
b0e7395f47 Using assignments in add_values now
This makes mistakes much less likely
2014-01-26 15:09:30 +01:00
rbock
5ef5259988 Added columns and add_values to insert for multi row inserts
Need to change add_values method to use assignments, though.
2014-01-26 13:24:42 +01:00
rbock
f802300685 Added sqlpp::null and sql::default_value for insert and update 2014-01-25 22:38:16 +01:00
rbock
019a920739 Added a .where(bool) to choose all or no row 2014-01-22 22:53:23 +01:00
rbock
abce8592e6 Added DISTINCT flag to avg and sum 2014-01-22 09:31:36 +01:00
rbock
34f6c7a2eb Added optional DISTINCT flag to count 2014-01-21 23:42:27 +01:00
rbock
370c61870b Updated tests a bit 2014-01-21 23:19:03 +01:00
rbock
a22b07aa03 Added more tests (and fixes) for dynamic columns and flags 2014-01-21 09:50:58 +01:00
rbock
075e63c486 Added test for (empty) dynamic select flag list 2014-01-20 23:17:07 +01:00
rbock
ee7cda0a5d Started to change the way dynamic columns and flags are specified 2014-01-20 21:26:16 +01:00
Mateusz Loskot
2734675750 Add headers to sources to enable file browsing in IDEs
By adding headers to sources of targets, CMake adds them to list of project files generated for IDEs.
This is non-intrusive trick, which does not affect targets compilation.
2014-01-19 19:56:37 +01:00
rbock
31127812a0 Added some template aliases to ease specialization and added a few more operator overloads 2014-01-19 18:11:05 +01:00
rbock
24b44fae65 Re-animated all tests 2014-01-18 20:58:51 +01:00
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