rbock
8b5fc67af6
Added generic boolean_expression
2014-08-02 09:18:01 +02:00
rbock
18dc6b1a03
Added value_or_null method/type
2014-08-01 18:21:23 +02:00
rbock
64c4ba029f
Adjusted usage of wrong_t.
...
I think there was a risk of wrong_t based static_asserts firing, if the
template parameters are used. Anyway, this is shorter.
2014-07-31 09:08:00 +02:00
rbock
88d28d6830
Moved value types out of detail namespace
2014-07-31 08:40:13 +02:00
rbock
c88a1097c2
Added some hints
2014-07-31 08:19:00 +02:00
rbock
ff9a6ff8f0
Added missing result_field.h
2014-07-30 23:10:45 +02:00
rbock
f60f1504b8
Extracted result_field_t from value types.
...
This is a preparation for adding serializer specializations for them
2014-07-30 22:37:07 +02:00
rbock
7c45e8b83f
Removed _name_t from and added alias operators to result field.
...
A result field really is just a value, if you insist on using it as a
select column, give it a name via an alias.
2014-07-30 22:03:11 +02:00
rbock
828106acbd
Moved shared result field code into separate file
2014-07-30 17:56:33 +02:00
rbock
c818e110b6
A few minor fixes and cleanup
2014-07-29 09:14:51 +02:00
rbock
b1f1de8a08
Allowing result fields to be used as arguments for queries
2014-07-29 08:57:55 +02:00
rbock
4be53d9933
Fixed a error in type set intersect calculation and in tracking outer tables
2014-07-28 21:36:53 +02:00
rbock
159b4c7152
Fixed error in determining can_be_null for joins
2014-07-28 21:14:20 +02:00
rbock
42179cbc87
Cleaned up traits a bit more
2014-07-28 07:41:59 +02:00
rbock
dd33b8096e
Streamlined type traits a bit
2014-07-28 06:54:54 +02:00
rbock
643aab222e
Aligned structure of connector traits with other traits
2014-07-28 06:13:30 +02:00
rbock
6d851f17ff
Added testability and tests for can_be_null and null_is_trivial in result entries
2014-07-27 19:40:31 +02:00
rbock
12f723d021
Fixed type error in join
2014-07-26 18:06:37 +02:00
rbock
c3d758c776
Renamed _result_entry_t to _result_field_t
2014-07-25 15:33:26 +02:00
rbock
4bf0db5611
Renamed field to field_spec
2014-07-25 15:20:19 +02:00
rbock
e5f055ac19
Using column's can_be_null and connector's enforce_validity
2014-07-25 01:01:42 +02:00
rbock
e21fdb4829
Transport null_is_trivial_value and can_be_null to result fields
2014-07-24 23:02:08 +02:00
rbock
6f056ced8a
Transport can_be_null into subselect used as a result column
2014-07-24 17:36:56 +02:00
rbock
556023f921
Added a few reminders which expressions can be null as well
2014-07-24 09:47:30 +02:00
rbock
37a550a489
Use potential outer table dependencies in pseudo tables
...
The dependency indicates whether a column of a pseudo table can be null.
2014-07-24 09:29:50 +02:00
rbock
b73133d47a
Follow outer tables through the statement.
...
This is important to determine which result column of a select can be
NULL.
2014-07-24 08:57:35 +02:00
rbock
d1e8a0153e
Transport can_be_null into select pseudo table
2014-07-23 22:57:11 +02:00
rbock
9c15b45ac4
Made can_be_null a recursive trait
2014-07-23 18:26:13 +02:00
rbock
80f09dc003
Use _traits in column specs
2014-07-23 18:06:33 +02:00
rbock
88062625bf
Make sure that tvin is used in the allowed places only
2014-07-22 08:51:17 +02:00
rbock
0f29e255d1
Unified tvin/trivial_value_is_null usage for =,==,!= and !
2014-07-21 09:53:17 +02:00
rbock
3506182ccf
Fixed tvin-handling in assignment
2014-07-21 07:41:34 +02:00
rbock
d8ae9dc778
Fixed type trait code
2014-07-21 07:40:07 +02:00
rbock
69fdaedc0d
Adjusted type_traits to compile with clang-3.1, too
...
The new version is cleaner anyway, since it can be used with any type
now.
2014-07-21 05:33:45 +02:00
rbock
8ed0042b67
Added blob (currently synonym of text)
2014-07-14 18:17:53 +02:00
rbock
abb97b623b
Removed remainder of char_result_row interface from fields
2014-06-29 12:52:21 +02:00
rbock
2f20f7ef82
Renamed bind and (in)validate to indicate their usage (vendor only)
2014-06-29 11:35:51 +02:00
rbock
0f9c1dbfb2
Added check to prevent multicolumns in sub selects
2014-06-28 21:05:37 +02:00
rbock
778b0d8816
Added -Wall, took care of a bunch of compiler warnings
2014-06-28 14:41:35 +02:00
rbock
c2d00b14ec
Removed char_result_row from result_row
2014-06-27 18:40:57 +02:00
rbock
620f9bef29
Fixed dynamic rows for bind_results
2014-06-27 18:11:12 +02:00
rbock
ff4d93049c
removed char_result_row
2014-06-27 17:41:43 +02:00
rbock
bc99c2b240
Added missing file
2014-06-26 22:06:54 +02:00
rbock
1f20d244c7
Added improved check for potential name duplicates in from()
2014-06-26 18:56:07 +02:00
rbock
2266787e94
Fixed another few warnings
2014-06-26 14:35:49 +02:00
rbock
e03366202d
Fixed a bunch of warnings
2014-06-26 08:39:08 +02:00
rbock
1267aa252f
Added _check_consistency call to all statement parts
...
For instance, enforce where() to be called
2014-06-24 21:53:25 +02:00
rbock
0b27373314
Adjusted code to work with g++-4.8 as well
2014-06-22 23:37:43 +02:00
rbock
d90b42f52b
Added a minimalistic test for including sqlpp11.h
2014-06-22 16:09:19 +02:00
rbock
35f9dab171
Added missing file
2014-06-22 12:01:17 +02:00
rbock
06d1783d81
Cleaned a bit of messy _run() code.
2014-06-20 18:20:24 +02:00
rbock
1d82cf7f09
Fixed a bunch of bugs that came up when integrating with mySQL again.
...
Thanks Matthijs!
2014-06-20 16:53:52 +02:00
rbock
56e34dbf5e
Shortened template for pseudo_column
2014-06-18 18:20:59 +02:00
rbock
5f927572cf
Took care of a few warnings
2014-06-14 20:25:11 +02:00
rbock
4ce8f2419b
All tests compile again for clang-3.2
2014-06-14 17:57:12 +02:00
rbock
3d26f9a686
Re-animated prepared statements
2014-06-14 17:44:22 +02:00
rbock
ef6c7e0c0d
Removed a few obsolete "typename"
2014-06-14 07:49:43 +02:00
rbock
269f2e7e17
Fixed indentations
2014-06-14 07:45:10 +02:00
rbock
09d220541e
removed namespace vendor
2014-06-14 07:43:27 +02:00
rbock
060d59125c
Moved files from sqlpp11/vendor to sqlpp11
2014-06-13 18:51:51 +02:00
rbock
4d1b60d93a
Cleanup
...
Moved check_consistency call to statement
2014-06-13 09:33:08 +02:00
rbock
f8e0e90477
Fixed serializability of statements
2014-06-09 14:06:04 +02:00
rbock
79aa358624
Added into member for insert.
...
Update and remove will get table lists with more than one table
2014-06-05 08:32:22 +02:00
rbock
067740d24e
InterpretTest compiles again
2014-06-04 18:35:25 +02:00
rbock
d36037472f
Migrated update to generic statement
2014-06-04 09:26:10 +02:00
rbock
c866f31ea5
Turned remove into a generic statement
2014-06-03 09:12:27 +02:00
rbock
8d16b6ab2d
Migrated insert to generic statement
2014-06-02 23:57:21 +02:00
rbock
7e32a0a3ea
Cleaned up minor as() method mess plus some oversights
2014-06-02 07:48:05 +02:00
rbock
3fb6c6c246
SelectTest compiles again
2014-06-02 06:40:22 +02:00
rbock
b00fe51fed
Adjusted remaining select parts
2014-05-30 13:43:59 +02:00
rbock
98bb9a7db7
Added policies into members
...
What a fight...
2014-05-30 12:48:51 +02:00
rbock
408e96af4a
Using _member_t to have variadic named members in statements
2014-05-30 10:40:46 +02:00
rbock
76fc2fb397
Moved select-specific stuff into select_column_list
...
This is a major step towards a generic statements and generic statement
policies.
2014-05-27 18:15:37 +02:00
rbock
a5457e93f7
Started to move statement-specific methods into the result provider classes
...
First method is: select_t::as()
2014-05-27 11:20:03 +02:00
rbock
d11f529bd8
Minor cleanup.
2014-05-26 07:42:59 +02:00
rbock
c13d514e95
Adjusted update to be variadic
2014-05-23 21:42:27 +02:00
rbock
2a215905fd
Migrated remove to being variadic
2014-05-23 20:36:13 +02:00
rbock
22e1e7c531
Migrated insert to be truly variadic
2014-05-22 22:53:08 +02:00
rbock
c4a02d931c
SelectTypeTests compile again!
2014-05-20 21:22:55 +02:00
rbock
c81a7d33ae
Cleanup
2014-05-20 08:50:55 +02:00
rbock
6d91cf2163
select is now really a variadic template
...
It is getting ready for customization to reflect vendor specific
statement parts, e.g. order by in update and delete for mysql.
2014-05-19 23:24:41 +02:00
rbock
15e8ca742c
A step towards turning select into a really variadic template
2014-05-19 22:54:47 +02:00
rbock
569f0ff2eb
Wrote down remaining steps for next release
2014-05-19 08:01:14 +02:00
rbock
bfd13c6743
Determining column_list in a more generic way.
...
By finding the last parameter which is a return value.
2014-05-19 07:51:24 +02:00
rbock
e39444b0f7
Added tags missing and return_value
...
missing indicates that a statement part has yet to be added (e.g.
columns in a select).
return_value indicates that a statement part can be used as a return
value.
2014-05-19 06:42:45 +02:00
rbock
f314c6d070
Added recursive_traits to select
2014-05-16 20:06:20 +02:00
rbock
6972758931
Added extra_tables to recursive_traits
2014-05-16 09:33:48 +02:00
rbock
5f4a88c7ce
Function tests compile again
2014-05-16 09:18:08 +02:00
rbock
1d905e1db5
Ok, the first few lines of test code compile again.
2014-05-15 23:47:16 +02:00
rbock
d062c1a0d8
Started to rewrite traits and recursive traits
...
traits are shorter and easier to identify by using tags in a variadic
template
recursive traits can be automatically derived, which makes it much
easier to add new traits to be handed through the expression tree.
2014-05-15 08:00:03 +02:00
rbock
57239d10ed
Rewrote result_row implementation to be non-recursive
...
Cool. This is so much easier to understand now!
2014-05-07 23:56:12 +02:00
rbock
bcdcf7fa64
Added column_index_sequence
...
This is not necessarily sequential because there might be multi_columns.
2014-05-07 23:54:37 +02:00
rbock
d831f98c9a
Made parameter_list's bind non-recursive
2014-05-07 18:51:18 +02:00
rbock
b9133cf3a1
Used index_sequence to get rid of recursion in interpret_tuple.
...
Wonderful stuff, shaped after code samples from cppreference and
stackoverflow.
2014-05-06 22:41:19 +02:00
rbock
f57ba13955
Added link to boost mailing list
...
This where I presented the idea for all_t. According to Louis Dionne,
the fastest implementation around :-)
2014-05-06 22:38:30 +02:00
rbock
2124005bd8
Added index_sequence (until it can be used with C++14)
2014-05-06 22:20:24 +02:00
rbock
4c3e73f819
Minor cleanup
2014-05-01 17:41:51 +02:00
rbock
331353022a
Rewrote all_t to use bool arguments instead of predicate and classes
2014-05-01 17:34:47 +02:00
rbock
2452f224d4
Rewrote any_t to take bools instead of predicate and classes
2014-05-01 17:12:41 +02:00
rbock
c033feb60f
Replaced all_t/any_t by MUCH more performant versions
2014-05-01 14:08:48 +02:00
rbock
adc3545ca1
Fix in insert's add_set error handling
2014-04-24 14:09:33 +02:00
rbock
eef974478c
Fixed a few missing types
2014-04-22 22:39:25 +02:00
rbock
f47ef75c24
Added a few checks to insert, update and remove
2014-04-22 22:21:44 +02:00
rbock
d342973ef4
Added check to prevent add_column to use a column name known in the static part
2014-04-22 21:41:53 +02:00
rbock
8f16ded277
Allow columns() method to use all_of_t as well
2014-04-22 21:30:31 +02:00
rbock
0ffd93108b
Added a table consistency checks to several dynamic methods
2014-04-22 20:46:32 +02:00
rbock
1f3e611fdf
Added table checks to add_column and added add_column_ntc
2014-04-21 11:49:26 +02:00
rbock
815c061979
Added extra_tables to select.
...
With this method you can indicate additional tables that might be added
via add_from(). These tables are considered in the add_column, add
where, etc methods.
2014-04-21 10:59:29 +02:00
rbock
f4ec88c83d
Improved checks for selects being usable as value or table
2014-04-18 19:59:35 +02:00
rbock
bbae5e89e9
Improved decision whether a select is a value or not
2014-04-12 08:22:46 +02:00
rbock
cffc85879a
Calculate the tables required by a sub-select
2014-04-11 21:12:39 +02:00
rbock
207310effe
Added parameter lists to group_by and order_by
2014-04-11 18:23:20 +02:00
rbock
68f929e041
Removed a bunch of superfluous functions.
...
Dispatching made some emplace_back instances obsolete.
2014-04-11 08:58:28 +02:00
rbock
abb80e3a91
Migrated insert to inheritance model
2014-04-10 22:44:38 +02:00
rbock
7e78c0d878
Migrated update to inheritance model
2014-04-10 21:20:37 +02:00
rbock
d2b59c0f59
Some cleanup
2014-04-10 20:20:59 +02:00
rbock
7f94002bec
Migrated remove to use inherited methods
2014-04-10 18:59:05 +02:00
rbock
bc5ffc1492
Added several call dispatches to reduce compiler spew in case of errors
2014-04-10 16:09:54 +02:00
rbock
ad5584e52d
Cleaned up a bit...
2014-04-09 20:54:28 +02:00
rbock
db0bbd6e3f
Moved select_colum_list methods to the respective classes
2014-04-09 08:50:34 +02:00
rbock
18d244dd9f
Moved from-methods to from-classes
2014-04-09 07:25:24 +02:00
rbock
5e0c1cff48
Moved flag-methods to select_flag classes
2014-04-08 22:45:19 +02:00
rbock
7af13937bf
Moved group_by-methods to group_by classes
2014-04-08 22:26:45 +02:00
rbock
a541d8e187
Moved having-methods to having-classes
2014-04-08 22:18:28 +02:00
rbock
eb9eab369a
Moved order_by-methods to order_by classes
2014-04-08 22:02:24 +02:00
rbock
f2fc4f73f6
Move offset methods into offset classes
2014-04-08 21:49:37 +02:00
rbock
4727de831f
Moved limit-methods to limit classes
2014-04-08 21:33:38 +02:00
rbock
c595353286
Moved where-methods to where-classes.
2014-04-08 20:59:45 +02:00
rbock
6737bf901d
Added a bunch of table tests to select
...
And some hints regarding additional tests and how to turn them of for
subselects
2014-04-07 22:02:08 +02:00
rbock
dba5c992ed
Added _table_set to select_column_list.h
2014-03-28 18:10:58 +01:00
rbock
3f1460cd2e
Streamlined basic value types
2014-03-28 18:09:21 +01:00
rbock
bef4d0874b
Updates copyright year
2014-03-27 16:43:36 +01:00
rbock
c0595aa6f2
Fixed compile-error for parameter
...
(need to do the same for other value types, too)
2014-03-27 09:25:35 +01:00
rbock
1a347048df
Migrated remove and update to using arg_selector
2014-03-27 08:37:05 +01:00
rbock
1a39d31b3e
Using arg_selector for select
2014-03-26 21:11:40 +01:00
rbock
6c4520a632
Using detail::arg_select to reduce number of constructors
2014-03-26 21:03:29 +01:00
rbock
1ffa6e25ba
Added an argument selector
...
It returns the "correct" argument out of two.
2014-03-26 21:02:22 +01:00
rbock
1c95406ced
Improved error messages for incorrect parameters.
2014-03-26 21:01:16 +01:00
rbock
a38a9d6f65
Made a bunch of compile errors easier to read
...
Fixed a few bugs in the process, too.
Probably also created a few, need better checks for resulting
statements.
2014-03-23 20:54:44 +01:00
rbock
555aba3f14
Rewrote type-set operations to look more like free functions
2014-03-19 18:59:39 +01:00
rbock
82dc280b1b
Added executed select tests
2014-03-18 08:28:17 +01:00
rbock
1824f9cde0
Changed NULL handling in results.
...
If the column or the connector indicates that NULL corresponds to a
trivial value, then the trivial value is returned. Otherwise, an
assert fails or an exception is thrown, depending on the preferences of
the connector.
2014-03-13 08:52:22 +01:00
rbock
78d2d9e67a
Renamed tvin_wrap to maybe_tvin
...
Easier to read
2014-03-11 18:46:53 +01:00
rbock
6cffdb6428
Added is_trivial_value_is_null interpretation to assignment
2014-03-07 08:53:32 +01:00
rbock
67f1b09acb
Added prepare_select to MockDb.
2014-02-21 09:43:23 +01:00
rbock
8c8b95d14e
Added template parameter Db to result_entry
2014-02-21 07:24:07 +01:00
rbock
b7935b61d5
Added some (no-op) statement executions
2014-02-21 06:02:49 +01:00
rbock
3bbe343a77
Added a better MockDb that can execute statements
...
Currently all executions are no-ops, but it will be rather simple to
yield select results too (to be configured at runtime).
2014-02-20 09:24:06 +01:00
rbock
abf4bb8e9a
Added serializer to interpreter
...
The serializer has partial specializations for all templates. It is a
good basis if the connector/database requires strings close to the
standard.
The interpreter is unspecialized (and uses a static assert to say so).
It is a good basis if the connector/database requires a different
interpretation, e.g. re-writing the expression tree.
The interpretable_t implements three methods for interpretation:
serializing with the sqlpp::serializer_context, serializing with the
database's serialization context and interpretation with the database's
interpretation context.
2014-02-18 17:45:08 +01:00
rbock
26f322b86a
Expressed equal_to, not_equal_to, logical_not as binary/unary expressions
2014-02-16 19:32:43 +01:00