sort by:
Revision Author Date Message Commit Date
41dfabc Added method for resolving values for properties in path spec without values in the rule In the property replacement step, it adds info about where the inserted globs (*) are. _replace_glob_with_values_in_pathname() takes that info, and figures out what the possible values are using glob() which taking care not to guess at property values for globs put in the original spec string. 19 October 2012, 19:52:23 UTC
ffe8815 whitespace 19 October 2012, 19:52:23 UTC
a6c7aec Change scheme for recording where we've added pathname globs Storing it as a sorted list of lists makes later processing easier 19 October 2012, 19:52:22 UTC
3092512 Fix regex matching method calls in path spec 19 October 2012, 19:52:22 UTC
d41cd22 First commit for UR::DataSource::Filesystem Basic replacement of property values from rule is working 19 October 2012, 19:52:22 UTC
ba6508e Fix typo s/sue/use/. 15 August 2012, 17:25:01 UTC
8858df0 Fix for bug introduced in 1416f2 An errant 'my' made the rule undefined when using the filterable singular accessor Also added test to cover the filterable accessors 15 August 2012, 15:09:58 UTC
39e0bbc Merge branch 'indirect-ro-refactor' New code to handle a non-standard many-to-many relationship where one half of the many-to-many is defined as a plain reverse_as, and the matching half is the regular via(many)-to Also handles a via/to property that is via this non-standard property 09 August 2012, 16:12:19 UTC
1416f29 Expand the use of the same optimization in 9846be for the singular version of is-many accessors, add_* and remove_* 09 August 2012, 16:03:32 UTC
b846d55 Fix indirect property value resolution for another corner case If property A is via B, and B is part of a many-to-many relationship defined using reverse_as (instead of the usual via an is_many property), then we now handle it by using the default/basic bridging closures. Also, remember the right @property_names to call when resolving the indirection 08 August 2012, 22:03:54 UTC
fcb0d47 Changes to the experimental indirect accessor code Don't use the fancy code for UR::* classes (recursion problems) Don't use a collector sub for UR::Value when a join's foreign_class_name is a UR::Value class Finally, don't install a real sub in the package's namespace, since this is still experimental 08 August 2012, 21:34:45 UTC
d176ee1 whitespace 08 August 2012, 21:31:09 UTC
3091364 Improve error message 08 August 2012, 21:05:06 UTC
a96a3f2 Fix $UR::Context::initialized The setup method wasn't setting it to true Also, make the var package-global, so others can know when the context is fully set up 08 August 2012, 21:03:48 UTC
c0a3d3b Experiment with a new indirect accessor implementation The old code has if/else conditions to try and handle different situations. It doesn't handle the case where the indirect accessor is via a non-standard reverse-as many-to-many relationship. This new code just gets the join list and builds a list of closures that can get from here to there. It doesn't yet work in the general case (especially during bootstrapping), so it sets up a special accessor prop_new() for testing 08 August 2012, 18:34:49 UTC
00e89d0 whitespace 08 August 2012, 18:32:49 UTC
7bc1fd7 Handle handle an odd many-to-many relationship Normal many-to-many relationships involve a pair of properties: 1) an is-many property to retrieve the bridge objects 2) an is-many, via-to property through the bridges to get the other things And usually, you'd use this pattern on both sides of the many-to-many relationship so either entity can get the set of related things. This patch allows one side or the other (but not both) to specify the relationship as a plain is-many relationship involving a reverse_as: class Driver { has_many => [ cars => { is => 'Car', reverse_as => 'drivers' } # didn't work before ] } and class Car { has_many => [ car_drivers => { is => 'CarDriver', reverse_as => 'car' }, drivers => { is => 'Driver, via => 'car_drivers', to => 'driver' } ] } 07 August 2012, 21:14:57 UTC
0251eb7 _concrete_property_meta_for_class_and_name() now handles property names with dots things like delegated.other_id 07 August 2012, 20:55:16 UTC
82858ff moved a _get_class_data_for_loading in queryplan up to before table/column mapping is examined since some subclasses rewrite that mapping in that method 07 August 2012, 19:23:35 UTC
b98a4a2 Exception message improvements 07 August 2012, 18:36:10 UTC
9ec82f4 rename the test to reflect what it does now 06 August 2012, 20:28:33 UTC
1c7533d Fix for previous commit 'Make is_many accessors more efficient' If a parent class' reverse_as points to an id_class_by property, and the accessor is called on a member of the child class, the id_class_by value needs to be determined from the invoking object, not from the class the property is defined on. 06 August 2012, 20:24:47 UTC
9846be4 Make is_many accessors more efficient The first time the accessor is called, it makes up a rule in order to get the template for later calls. For the first call, it now just uses the already created rule, instead of re-makign the rule from the template 03 August 2012, 21:08:44 UTC
79e8ad6 Merge branch 'raw-sql-fix' 02 August 2012, 21:51:39 UTC
676dde4 More tests around missing ID columns 02 August 2012, 21:50:22 UTC
2101e0e Be a bit more efficient when figuring out if all the ID columns are present 02 August 2012, 21:31:06 UTC
d858241 Be more efficient when fetching IDs in a get() with sql Use fetchall_arrayref() with a slice containing only the ID columns. Get the class' ID resolver ahead of time and call it directly in the inner loop 02 August 2012, 21:23:16 UTC
58dfd92 Throw an exception if the params supplied doesn't match the number of placeholders 02 August 2012, 20:41:36 UTC
3ee23ac Allow the raw sql filter to have placeholders It's a hack for now (misusing the 'in' operator). Instead the BoolExpr should have a -sql metafilter. UR::DS::RDBMS::_resolve_ids_from_class_name_and_sql() already handled this 02 August 2012, 20:38:33 UTC
15ec562 Throw an exception if the SQL supplied does not have all the pk columns 02 August 2012, 20:24:23 UTC
975bf18 Make queries via 'sql' more efficient Keep the accumulated IDs in a hash instead of a list Don't pass around (potentially large) lists of IDs. Only pass around listrefs 02 August 2012, 20:13:56 UTC
56e8802 Add 'ur show subclasses' command 02 August 2012, 20:09:45 UTC
57b5b85 Put the var in the proper scope 02 August 2012, 20:09:30 UTC
4a487d3 Make the SQL prepare error better 02 August 2012, 20:09:03 UTC
f88445c BoolExpr string parser can now detect a partially parsed string Previously, resolve_for_string() could not tell the difference between a string that parses completely, and a string that some of the contents parses, and that parse produces a correct tree. This change lets the parser's caller see what text has not been consumed after parsing is complete 27 July 2012, 21:18:26 UTC
da8cee8 Allow + as a character matching the WORD roken in the BoolExpr text parser 27 July 2012, 21:03:29 UTC
d8d42d3 Improve error message 27 July 2012, 16:36:04 UTC
fe954f0 fixed the last line of help for 'genome tools'... There can be a hash in the command entry point class that acts as a map between commands perl modules. I updated the method that tries to resolve the original command name to be aware of that misdirection. 26 July 2012, 19:36:28 UTC
8e1979a Test for previous commit b8c4868 (where clause fix) 24 July 2012, 19:37:47 UTC
2e44c21 Use isa instead of string comparison to determine type of id_by property 24 July 2012, 15:06:01 UTC
b8c4868 Fix for joins involving UR::Value classes and where clauses If a join goes through a Value class, and the join has a 'where' clause, preserve the 'where' after the splice takes place 23 July 2012, 20:58:47 UTC
28b2cde Fix bug involving turning a forward join into a reverse join Previously, it was moving 'where' clauses from position n to position n+1 in the list. The right thing to do is to move it from pos n to n-1. The fix was to put off reversing the list until after the fixups have been applied. 23 July 2012, 20:56:54 UTC
9fa5149 fixed old occurances of UR::Namespace::Command::Describe > ::Show::Properties 17 July 2012, 18:40:09 UTC
2cf810a updated "ur show schema" to drive on class names 17 July 2012, 18:13:06 UTC
c2d5d4a renamed "ur describe" to "ur show properties" in the docs 17 July 2012, 16:22:34 UTC
e5b5a04 mad "ur show schema" and renamed "ur describe" as "ur show properties" 17 July 2012, 16:18:10 UTC
c354ae7 added support for optionally dumping all DDL for a table, not just a delta 17 July 2012, 16:17:02 UTC
bd2ff17 make is_transactional optional on classes since the core meta-data needs seens to need those to be undef 15 July 2012, 22:57:00 UTC
37715d8 Revert "Don't check objects for errors until after verifying that they have a datasource. This saves a lot of time on no-op commits from Command objects." This reverts commit 742fad01546b7403039988838b443d708fb58228. 15 July 2012, 22:12:22 UTC
742fad0 Don't check objects for errors until after verifying that they have a datasource. This saves a lot of time on no-op commits from Command objects. 15 July 2012, 22:09:53 UTC
f555164 Detect bad use of select() in modules. 12 July 2012, 22:04:58 UTC
e224260 Fix docs The man page for the 'ur' command line tool is 'man ur' not 'man UR::Manual::UR' 09 July 2012, 20:47:24 UTC
1d4fc8a Fix BoolExpr bug recognizing >= and <= 06 July 2012, 18:53:35 UTC
5334f66 add 'is null' and 'is not null' to the BoolExpr text parser 'is undef' and 'is not undef' are synonyms We're using the special 'is null' keyword to distinguish the cases: prop=undef (meaning match the string "undef") prop is null (meaning the value is null/undef) 06 July 2012, 18:45:56 UTC
8eaa5e4 Add 'true' and 'false' operators to the BoolExpr string parser 06 July 2012, 18:36:34 UTC
8d487f0 Allow 'offset' and 'limit' in the BoolExpr syntax parser 06 July 2012, 18:16:27 UTC
9fa8120 Another alias property fix. Some property definitions are sloppy and look something like this: prop => { is => 'Some::Class' }, Note that there's no id_by, so the property is expected to hold the reference directly, instead of having another property hold the ID. This fixes the alias resolver to do the work by hand in these cases 29 June 2012, 21:03:51 UTC
5174f6d Merge branch 'master' into alias-fix 29 June 2012, 16:48:22 UTC
ef05796 Alias property fix get() with a dot-syntax operator wasn't working when one or more of the named properties were aliases. The underlying property_meta_for_name() calls the join logic in UR::Object::Join which didn't know what to do with alias properties. 29 June 2012, 16:48:08 UTC
b5bceb9 Don't re-get data we already have 29 June 2012, 15:28:09 UTC
06bb59d typo 29 June 2012, 15:27:16 UTC
d5e71fd add text view for boolean type 28 June 2012, 20:49:45 UTC
f81f4ff Make boolean a subclass of Text 28 June 2012, 19:49:27 UTC
7c25087 Make the test pass UR::Object::Type::resolve_property_aliases keeps a cache of answers. The test needs to remove the hash key 28 June 2012, 16:10:29 UTC
ea22df0 Update class initializer docs to talk about alias properties 27 June 2012, 18:55:31 UTC
745be50 Cleanup remove commented-out lines, debugging code, breakpoint, etc 27 June 2012, 18:15:52 UTC
8ff8682 Fix for unaliasing logic If the property string is a dot-property (prop1.prop2), the old code would incorrectly replace prop1.prop2 with prop2. The new code uses a new method on the class meta that caches results 27 June 2012, 18:01:49 UTC
58a3cf6 Fix for unalising logic If the thing we're unalising isn't a property of the class, keep the same string in that position. This is to handle cases where the key is something like '-recurse' or '-order' 27 June 2012, 16:45:36 UTC
2fcd6d7 When unalasing properties, work when the operator is more than one word This happens in cases like 'property_name not in' 27 June 2012, 15:36:46 UTC
6ed8f3f Support making one property an alias for another Use a property definition like this: alias_prop => { via => '__self__', to => 'real_prop' } Some tests are still failing 27 June 2012, 15:13:41 UTC
4562448 Collapse a bunch of single my() into two Might shave a couple clock cycles 26 June 2012, 21:59:08 UTC
bf8072a Change several Carp::confess() to Carp::croak() So there are less stack dumps 26 June 2012, 21:58:10 UTC
268896b Be more careful with "truth" while loading objects The loading process tests the truth of objects during the loading process with code like if ($some_object) {... Objects with overloaded stringify behavior can return false in checks like these if the object stringifies as something false (like "" or "0") even if $some_object is a valid object The fix is to be diligent to test for defined() in the proper places 26 June 2012, 19:47:21 UTC
5365d79 Rewrite to make more functional 26 June 2012, 19:46:24 UTC
f62bdc5 UR::DataSource::RDBMS now caches its belief as to the correct sequence generator on a per-class basis, saving considerable time when constructing large sets of objects. 25 June 2012, 15:22:05 UTC
beea89a validate param string before assuming it is an ID 21 June 2012, 19:36:43 UTC
7c97001 return instead of dying to eliminate extra error message when nothing found. 20 June 2012, 19:27:40 UTC
31a5aa7 Quiet warning in middle of join resolution. 20 June 2012, 19:27:02 UTC
9d36f57 remove superfluous get() call in finish_up_after_fork 18 June 2012, 18:16:22 UTC
1c69b14 fix on forking and properly disconnecting database handles. 14 June 2012, 21:38:27 UTC
1f2f526 Work even if the # of linking properties is different For object accessor properties, if the number of id_by properties does not match the number of id properties (meaning it holds the composite ID value that refers to an instance of a class with multiple ID properties), then trap the exception and print out something that's still useful 06 June 2012, 19:53:32 UTC
c25f9d3 Better error message when a class' "is" is invalid 05 June 2012, 15:03:11 UTC
735868b Allow a child class to define a columned property even if it does not directly have a table_name This might occur if a parent class has a table_name, but one of the table's columns does not have a mathcing property in that parent class; only one (or more) of the child classes have a property for that column. 04 June 2012, 20:15:29 UTC
777d7a9 Always try getting by ID first It shouldn't matter what the format of the value is, or the type of the property. This allows the Command modules with an object accessor to retrieve an object even if the ID-linking property does not have a defined data type (like UR::Value subclasses) 30 May 2012, 21:35:19 UTC
715abd2 Re-throw the exception in most cases The eval was masking a syntax error in an autoloaded module. It still needs an eval because of the invalid BoolExpr error in the case of asking for objects with a non-sensical filter 30 May 2012, 21:33:53 UTC
a87ed6a Change the parent of UR::Value::Number to UR::Value::Text It matches what Perl does with numbers A recent commit for the Join logic started emitting a lot of warnings about incompatible/discrepant joins when we had a generic bridge table with a value_id with type Text pointing to a class with a numeric ID. 30 May 2012, 20:42:38 UTC
7a75e15 Re-word warning message for clarity 30 May 2012, 19:33:09 UTC
63b042f fixed warning message 27 May 2012, 18:59:01 UTC
aa5382c Merge commit '231f9331acd8f8b9e9b502039a06e303898ce674' into fix-object-hints 24 May 2012, 19:46:54 UTC
541bdcb Add a comment about why a previous commit commented a line out 24 May 2012, 19:11:03 UTC
3adbf59 Make the warning message better 24 May 2012, 19:10:47 UTC
39f842b remove unnecessary call to class() The called method works the same as a class or object method 24 May 2012, 19:09:47 UTC
f9bd74e QueryPlan now handles hints to object properties correctly. The code which iterates over delegated properties during query plan construction now cleanly separates the joining part from the filtering part of each loop. 24 May 2012, 07:58:19 UTC
f9bae31 UR::Object::Join now recognizes increased type specificity on a via/where/to property. class Person { has => [ pets => { is => 'Animal', reverse_as => 'owner' }, cats => { via => 'pets', where => { species => 'cat' }, to => '__self__' is => 'Cat' }, dogs => { via => 'pets', where => { species => 'dog' }, to => '__self__' is => 'Dog' }, }; Joins to "cats" now rewrite their hop through "pets" to make a real join even if "pets" does not have a table, and the table for cats and docs are different. 24 May 2012, 07:26:21 UTC
231f933 Remove commented-out line 23 May 2012, 21:27:04 UTC
7e4588d Fail a little earlier if a property meta is missing 23 May 2012, 21:18:10 UTC
c006e4b Remove breakpoint 21 May 2012, 20:16:21 UTC
99c8b87 ensure that joins to table with LOB columns get correct LOB handling 21 May 2012, 16:50:36 UTC
e415e32 Updated the QueryPlan to not complain about joining to things via UR::Object id, even when there are no id_properties mapping to explicit database columns. In this case queries are merely inefficient instead of impossible. 17 May 2012, 21:37:48 UTC
c2dbb22 cosmetic cleanup of warnings in test 87e 17 May 2012, 20:17:41 UTC
back to top