summaryrefslogtreecommitdiff
path: root/odb/relational
AgeCommit message (Collapse)AuthorFilesLines
2011-10-03Use traditional const placementBoris Kolpackov1-2/+2
2011-10-02Handle object pointers when comparing view and object data member typesBoris Kolpackov1-33/+68
Also issues an error if an object member associated with a view member is transient or inverse.
2011-10-02If query substituting placeholder is empty, pass true expression insteadBoris Kolpackov2-6/+16
This allows uniform usage of views both with and without any extra conditions. Also optimize some common cases so that we don't have useless WHERE TRUE clauses or (...) AND (TRUE) expressions.
2011-09-27Add support for associating tables with viewsBoris Kolpackov5-52/+170
2011-09-22Make PG generated code look nicer1.6.0.a2Boris Kolpackov1-8/+7
2011-09-21Rework const object handlingBoris Kolpackov5-70/+17
Now objects are always loaded as non-const and the object cache in session treats all objects as non-const.
2011-09-20Rename query_clause to query_statement for consistencyBoris Kolpackov3-11/+11
2011-09-20Change query syntax to use . for composite and -> for object pointer accessBoris Kolpackov2-47/+108
Also make non-inverse query columns act as both an object pointer and a normal column. The latter allows us to use natural expressions such as query<employee>::employer.is_null ().
2011-09-20Fix indentationBoris Kolpackov1-2/+2
2011-09-19Rename generation_failed exception to operation_failedBoris Kolpackov10-100/+100
A more generic name is required since it is now used in both generator and processor (and in the future may be used validator).
2011-09-19Make processing top-level action, like validation and generationBoris Kolpackov2-8/+8
2011-09-19Use scope and location of db pointer pragma instead of classBoris Kolpackov1-22/+43
2011-09-19Use common lookup function instead of duplicating codeBoris Kolpackov1-68/+26
2011-09-19Use query_base_type instead of query_type as argument typeBoris Kolpackov2-9/+9
The base type is sufficient.
2011-09-19Rename error.?xx to diagnostics.?xxBoris Kolpackov2-2/+2
2011-09-16Don't use DISTINCT in generated SELECT statementsBoris Kolpackov1-4/+1
We needed it before for objects that involved relationships (and therefore JOINs) but it appears with the new JOIN handling approach (no merging of multiple relationships into a single JOIN), we don't need DISTINCT anymore. All the tests pass and all the examples produce identical output with and without DISTINCT.
2011-09-16Support for views; integrated partBoris Kolpackov10-68/+2258
2011-09-11Generalize pragma code to support arbitrary types for context valuesBoris Kolpackov2-65/+35
2011-09-09New templated query_columns architectureBoris Kolpackov7-320/+567
We also now use the correct separate "role"-base join approach instead of having a single merged join for each table.
2011-09-09Fix bug in PG type oid generationBoris Kolpackov1-6/+16
2011-09-06View support customizations for PostgreSQLBoris Kolpackov2-10/+43
2011-09-06Add support for object pragmaBoris Kolpackov2-14/+85
This pragma is used to specify objects in a view declaration.
2011-09-05Support for views; native partBoris Kolpackov6-72/+404
2011-08-31Rename comp_value() predicate to composite()Boris Kolpackov15-55/+55
2011-08-31Add transient() predicateBoris Kolpackov4-4/+4
2011-08-31Cosmetic changes and cleanupsBoris Kolpackov13-86/+96
Rename some functions to have consistent names. Add object() predicate.
2011-08-28Add wrapper support for containersBoris Kolpackov12-58/+93
2011-08-28Add wrapper support for composite valuesBoris Kolpackov14-53/+211
NULL semantics for composite values is not yet supported.
2011-08-25Add experimental code (commented out) for DELETE JOIN supportBoris Kolpackov1-1/+11
This would be needed to support object relationships in the erase_query() functionality.
2011-08-22Add database::erase_query() functionBoris Kolpackov4-29/+92
New test: common/erase-query. Documentation is in Section 3.9, "Deleting Persistent Objects". The current implementation does not work well with the session (no removal of the erased objects from the cache).
2011-08-22Enable foreign key constraints checking in SQLiteBoris Kolpackov1-0/+16
Due to bugs in SQLite DDL foreign key support, we have to temporarily disable foreign keys when re-creating the schema. New manual section: 12.5.3, "Foreign Key Constraints".
2011-08-21Add support for multi-pass database schema dropBoris Kolpackov4-34/+98
2011-08-19Rework query machinery not to use '_' as primary table aliasBoris Kolpackov4-28/+67
Now we always qualify with the actual table name and use the '_' alias for situations where an object is referencing itself.
2011-08-19Cosmetic changeBoris Kolpackov1-1/+1
2011-08-19Make container object_id reference the objectBoris Kolpackov3-13/+56
Make it ON DELETE CASCADE. Also in erase(), delete the container rows first.
2011-08-18Fix custom recursive loading in post_load callbackBoris Kolpackov1-2/+2
Before we called the callback while holding the statements locked. As a result, if the callback tried to load another object of this type, it failed. Now we unlock the statements (since we have completely loaded the object from ODB's point of view) and then call the callback. The callback test has been updated to test this situation.
2011-08-04Add support for value wrappersBoris Kolpackov1-1/+217
Wrapper is a class that wraps another type. Examples of wrappers are various smart pointers, holders, etc. A wrapper can be transparent or it can handle the NULL semantics. The new odb::nullable class template is a NULL wrapper that helps to add the NULL semantics to a value type. New test: common/wrapper.
2011-07-25Remove @@ notes that no longer applyBoris Kolpackov1-1/+1
2011-07-24Never generate zero length oid arrays for PostgreSQLConstantin Michael1-0/+8
VC++ does not allow zero length array initialization, nor for const values to remain uninitialized.
2011-07-22Add pragma for setting type's or member's default valueBoris Kolpackov5-3/+318
New pragma: default. New test: default.
2011-07-22Cosmetic changeBoris Kolpackov1-1/+1
2011-07-22Cosmetic changeBoris Kolpackov1-1/+1
2011-07-22Parse and store MySQL ENUM enumerator stringsBoris Kolpackov2-4/+31
2011-07-22Use quote_string() to quote enumeratorsBoris Kolpackov1-3/+1
2011-07-22Cosmetic changesBoris Kolpackov1-2/+2
2011-07-22Add support for SQL string quotingBoris Kolpackov3-0/+39
2011-07-22Add support for specifying extra column optionsBoris Kolpackov1-0/+7
New pragmas: options, id_options, index_options, key_options, and value_options.
2011-07-21Correct container statement name generation for PostgreSQLConstantin Michael1-2/+2
2011-07-19New design for NULL semanticsBoris Kolpackov12-71/+110
Now, instead of being specified as part of the SQL type with the type pragma, there are separate null and not_null pragmas. The not_null pragma was used to control NULL-ness of object pointers. Now the two pragmas are used consistently for object pointers and simple values (and in the future will work for composite values and containers).
2011-07-19Cosmetic changeBoris Kolpackov1-1/+1