Codebase list libjifty-dbi-perl / upstream/0.72 Changes
upstream/0.72

Tree @upstream/0.72 (Download .tar.gz)

Changes @upstream/0.72raw · history · blame

   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 380
 381
 382
 383
 384
 385
 386
 387
 388
 389
 390
 391
 392
 393
 394
 395
 396
 397
 398
 399
 400
 401
 402
 403
 404
 405
 406
 407
 408
 409
 410
 411
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
Revision history for Perl extension Jifty::DBI.

0.72 2011-10-17
- Fixes:
    * Handle DBH connection errors, retry the query (Luke Closs)

- Documentation:
    * Mention old_value in after_* hooks (Thomas Sibley)

0.71 2011-06-17
- Fixes:
    * Ensure canonicalization and validation triggers are properly found
      (Thomas Sibley)

0.70 2011-06-15
- Fixes:
    * Respect manual column sort_orders (Thomas Sibley)
    * Produce more useful error messages during schema upgrades (Thomas Sibley)

- Documentation:
    * Clarify what value after_set_* hooks receive (Thomas Sibley)

0.69 2011-05-17
- Fixes:
    * Remove some instances of qw() as parentheses deprecated in 5.14 (sunnavy)

0.68 2011-04-14
- Security:
    * Prevent SQL injection in column names, operators, order and group by
      (Alex Vandiver)
    * Fix distinct_query to catch injection and correctly rewrite to
      function => '' (Alex Vandiver)
    * Prevent SQL injection via IS

- Fixes:
    * There is no need to check $args{column} around our LIKE adjustments
      (Alex Vandiver)
    * Slightly unify nigh-identical codepaths between Pg and Oracle
      (Alex Vandiver)

0.67 2011-02-28
- Features:
    * Make ->distinct_column_values use ->simple_query, thus going through our
      SQL logging infrastructure (Alex Vandiver)

- Fixes:
    * Set raw_values in load_by_hash so the __raw_value method works when the
      record is loaded by a collection (Thomas Sibley)

- Tests:
    * Author tests for no tabs (Shawn M Moore)

0.66 2011-02-14
- Features:
    * Provide a sane way to wrap a function around an aliased column in order_by
    * Pass old_value to triggers on column update

- Fixes:
    * Respect the 'by' attribute for refers_to columns in create and set
    * Use the right FK when using a record object in load_by_cols or
      limit [rt.cpan.org #64779]
    * Don't encode fields when attempting to limit with IS
    * Fix since/till by refactoring columns to use an updated all_columns

- Installation:
    * Only run these URI filter tests if we have URI [rt.cpan.org #65047]

0.64 Wed Dec  8 15:21:17 EST 2010
- Installation:
    * Minor distribution fixes

0.63 Wed Dec  8 15:14:17 EST 2010
- Features:
    * distinct_column_values method, docs and tests

- Fixes:
    * Warn about load(arg => value)
    * Include column_name in the value passed to reader warning
    * It is a rare but possible case that 0 is a valid id
    * Ensure encode_base64 doesn't choke on utf8

0.62 Thu May 20 13:58:53 EST 2010
- Features:
    * Computed columns let you have the Jifty-DBI scaffolding but without
      touching the database
    * Column->is_boolean

- Fixes:
    * Don't attempt to store undef values in memcached
    * Avoid undef warnings

0.61 Mon Jan  4 13:04:20 EST 2010
- Installation:
    * Minor distribution fixes

0.60 Mon Jan  4 13:02:17 EST 2010
- Features:
    * Allow passing of extra parameters to canonicalizers
    * Add an attribute which controls placeholder use for load_by_cols

- Fixes:
    * Don't add LOWER() on <= or >= operators, only = and !=
    * Better case sensitivity tests
    * Expose quote_value() on Jifty::DBI::Handle
    * When generating COUT, don't add a DISTINCT unless needed
    * Fix t/12prefetch.t's assumptions on row ordering

0.59 Wed Nov 18 20:12:57 EST 2009
- Features:
    * Support a special value of "all" in set_page_info

- Fixes:
    * Make "default is ''" propagate correctly to ALTER and CREATE TABLE
      statements

- Installation:
    * Our Module::Install was hilariously out of date

0.58 Tue Jul 14 03:21:21 EST 2009
- Possible incompatibilities:
    * Modules which use Jifty::DBI::Schema will have strict and warnings
      automatically applied to them.

- Features:
    * Jifty::DBI::Handle now has methods for supported_drivers,
      available_drivers, and is_available_driver.

- Fixes:
    * Remove unused _limit_clause method
    * Various error message improvements
    * Use ->new_item instead of ->record_class->new since it was a performance
        hit in Jifty
    * Avoid cals to ->new_item where possible

- Documentation:
    * Document connect's quirky return value

0.57 Tue May 19 08:02:03 EDT 2009
- Major bugfixes:
    * Use eval {} in Jifty::DBI::Handle's DESTROY block when manipulating DBI
        Alterations to the DBI object in the DESTROY block must be wrapped in
        an eval {}, as object destruction order is not guaranteed during
        global destruction, and this interacts poorly with DBI's tie'd object.
    * During DESTROY, don't explicitly disconnect a dbh set InactiveDestroy
        The InactiveDestroy flag on DBI objects prevent them from being
        implicitly disconnected when they go out of scope -- for example, in
        the case where a process has forked, and two processes hold the socket
        open.
        However, it does not prevent them from being _explicitly_
        disconnected, as we were doing in Jifty::DBI::Handle's DESTROY method.
        This caused InactiveDestroy to never kick in, causing either a shared
        socket, or two closed handles after a fork.  We prevent this by having
        Jifty::DBI::Handle respect InactiveDestroy in its DESTROY method.
    * Do not use Scalar::Defer defaults for columns' defaults in the db

- New features:
    * Add a display_length attribute on columns
    * add schema manipulation tables: rename_column and rename_table
    * If a column's default is a record, call its id method

- Fixes:
    * Improve SQL error message and avoid its duplication
    * Pull the input_ and output_filters out of the instance hash

- Tests:
    * Added a unit test for the SaltHash filter
    * use drop_table_if_exists in tests
    * add drop_table_if_exists in t/utils.t
    * unconditionaly drop tables for testing
    * test rename_table
    * add tests for rename_column
    * SaltHash test does not need an is_deeply()
    * Don't explicitly disconnect the handle, DESTROY handles it better
    * Test for warnings instead of letting them leak into the test output


0.53 Wed Mar 25 15:27:03 EDT 2009
- Major bugfixes:
   * On rollback, flush the record cache.  This fixes a bug when SQLite
     reuses primary keys after rollback, and thus the record cache is
     wrong.
   * Apply filters to "default is ..." values, so "is boolean, default is
     0" works on postgres, for instance
   * $self->_new_collection_args is passed to the ->new constructor of a
     collection, not its ->new_item method

- Performance fixes:
   * Don't call accessor twice when we have values around
   * Don't create temporary variables we don't need around, just return
   * Optimize for the case when there are no output filters
   * Play with self/class only when passed argument is not a reference
   * In _do_search, separate prefetch and non-prefetch paths; the latter
     is a much tighter loop
   * Refactor first pass over results in prefetch path
   * Move a ->new_item call where we only need it
   * Jifty::DBI::Handle::SQLite - LOWER() in SQLite is expensive; it's
     easier just put COLLATE NOCASE on the column side.  Bump DBD::SQLite
     to 1.14 which gives us COLLATE NOCASE.
   * Cache on record table, not record class so subclasses also get
     cached correctly.  If the data in the underlying table changes,
     regardless of the class you're using, you want to load the new data.
   * Refactor _qualified_record_columns
   * call ->table for defaulting only when we actually want defaulting
   * Selay some method calls when possible in limit
   * Minor refactoring of _get_alias
   * grep before looping to loop over fewer values in load_from_hash
   * Cache load attempts in new_item in a local static cache
   * Cache filter class load attempts in _apply_filters
   * Save some slow Class::Accessor calls in Jifty::DBI::Filter
   * Stick aliases into COLUMNS as well, for faster lookup
   * Provide a faster load_from_hash for when we're being called from
     do_search

- Datetime fixes:
   * _formatter is *inheritable* class data.  If it happens to get set by
     the DateTime filter before getting set by one of its subclasses (the
     Date and Time filters), than it is stuck on the DateTime _formatter
     setting because the subclasses don't override it.  There are a
     couple solutions, the simplest being to check the value of _strptime
     and update/override _formatter if it is different, which is what
     I've done here.  (This may not be the most optimized solution.)
   * Require Time::Duration::Parse 0.06 to win us decimal durations like
     1.5h
   * Fix a broken regex that just happened to work because we only fed it
     correct data
   * Add date_only method in date and datetime filters
   * For date-only timestamps, set hour, minute, and second to zero
   * Include the datetime string we're trying to decode in parse failure
     cluck
   * Use DateTime's strptime since we don't want additional logic

- Documentation fixes:
   * Minor POD improvement for debian lintian in Jifty::DBI::Column
   * Adding an example of open_paren/close_paren and limit subclause.
   * Added documentation for "IS" on limit().
   * Additional docs for load_by_cols
   * Update record_class' docs

- Minor bugfixes:
   * Perltidy, primarily for indentation fixes
   * Update copyright year to 2009
   * collections can now clear_order_by
   * requires('perl' => '5.8.3') confuses M:I. the "correct" incantation
     is perl_version('5.8.3')
   * Add the ability to unload columns and prefetched values
   * Use $args{'collection'}->limit instead of
     $self->Jifty::DBI::Collection::limit so we don't break
   * We accept IN or = as operators for array ref. values, so match
     against that (and do it case insensitively to boot)
   * Allow validators to get extra arguments
   * Storable with non-bytea is OK if we base64
   * add double naming schema for record references, using name, name_by
   * fixed situation with 'column X_not_id refers_to M by "not_id"'
   * Aliases should be virtual
   * When we have group_by, the first column may not be enough to
     distinctify the rows.  But since they're grouped, they're all
     distinct by definition.
   * turn _handle _is_limited rows_per_page into accessors
   * Clean out fetched when we load_from_hash
   * Pass arguments database_Version to the super method
   * Don't chomp Collection or s if prev character is ':', die instead,
     it can happen for annon collections based either on JDBI::Collection
     or J::Collection
   * No need to setup the pager, its constructor does that for us;
     actually it's really questionable that we need to setup pager when
     there is no paging by default
   * Don't optimize left joins on mysql 5.0 and newer, may be other DBs
     can drop this too
   * $caller->COLUMNS should not contain virtual methods from plugins
   * Add "raw value" internal values
   * Plugin import must not call ->columns which causes incorrect
     caching.



0.49 Mon Apr 07 22:16:48 EST 2008
- Major changes:
   * "is boolean" support for cross-database booleans
   * New filters: Duration, URI
   * column attribute encode_select for filtering columns on load_by_cols, etc
   * <$collection> and @$collection support
   * Protected and private fields, for Jifty's automatic action introspection
   * ping/reconnect on error
   * Memory leak, unnecessary query, and transaction fixes

- All changes:
   * call _init_hander for all columns
   * Revert paging fix which isn't quite ready yet
   * Note that booleans render as checkboxes
   * Fixes for NULL boolean columns
   * Booleans get canonicalizers, so perl-level gets canonical values, not just
     the DB.
   * Canonicalization fixes
   * Catch some expected warnings with (new dependency on) Test::Warn
   * Get rid of an unbalanced vim-fold
   * Jifty::DBI::Filter::URI
   * Rename decode_select to encode_on_select
   * Fix final test failure: toggle pg_bool_tf before making the query
   * encode and decode were swapped :|
   * Some test fixes. DBD::Pg has a damn "DWIM" option for booleans that caused
     failures
   * Move the alias and column handling in ->limit up sooner so we have a
     column object as soon as possible
   * Apply filters on default values for attributes
   * Rename encode_select to decode_select (I always get the two confused)
   * Force undefined boolean attributes to be false, for sanity reasons
   * Add a new column attribute, encode_select. This will apply filters on
     load_by_cols and limit. Have Boolean use encode_select.
   * Complain if the encoded/decoded value doesn't return one of _is_true or
     _is_false.
   * Add "is boolean" support for not-braindead booleans.
   * Have filters receive the database handle
   * fixing our lower() behaviour on non-text columns when we were being stupid
   * better passing in the class of a joined table when using ->new_alias
   * defaulting to a not-null string
   * Quiet down defaults for an annoying regex match in current DBIx::DBSChema
   * Return self, not true, in boolean context
   * Fix collections in bool context
   * Pass all data to logging hook so they can do more interesting things with
     them immediately
   * micro-optimization of _filters which is called quite often
   * Add <$collection> and @$collection syntax sugar that simply calls
     $collection->next and $collection->items_array_ref behind the scenes.
   * Tiny POD tweak so t/pod-coverage.t passes.
   * Jifty::DBI::Handle - When "begin_transaction", "commit" and "rollback"
     did not succeed, the internal $TRANSDEPTH should be left unchanged.
     (Otherwise, a failed ->commit will cause future transactions to never
     really take place.)
   * Add a documentation meta-attribute, for Jifty
   * Debian packaging for 0.48
   * Bump for added properties
   * Protected and private fields, for Jifty's automatic action introspection
   * Added the ping/reconnect on error as suggested by Jesse.
   * Fix typo
   * Upgrade dep to 0.05 now that the hh:mm(:ss) parsing code is in it
   * Better error checking
   * No need to duplicate order_by's logic, just call thrash explicitly and
     call add_order_by
   * Add Collection->add_order_by, which refines ordering, instead of thrashing
     it
   * Get rid of reference to deprecated method
   * Don't try to encode/decode empty values
   * Handle hh:mm(:ss)? within other duration strings so that "1d 2:30" works
   * More tests for the duration filter (to test different input formats and
     check the raw DB value)
   * Fix version
   * Handle hh:mm:ss in the duration filter as input and output a more concise
     format
   * dd missing dependancies with Class::Trigger in debian packaging for use of
     alone package libjifty-dbi-perl
   * Add optional dependencies on Time::Duration(::Parse) in Makefile.PL
   * Add a duration filter which uses Time::Duration and Time::Duration::Parse.
     Stores durations as seconds in the database and converts them to English
     strings for output.
   * Revert mistaken change
   * UNIVERSAL::require has a memory leak, fixed by 0.11
   * Allow starts_with and ends_with in addition to STARTSWITH and ENDSWITH
   * We were leaking the collection on set_page_info. Yuck! We need some way to
     find these Scalar::Defer leaks
   * Be more careful about initializing values we're using
   * Fix a mismerge in 4642
   * By not reaching inside the pager object, we save on some useless forced
     SQL queries
   * Be a bit cleverer about not always doing a count before doing a select
     (The previous behaviour was pathalogical)



0.48 Thu Nov 29 16:28:11 EST 2007
   * User and password values are excluded from the DSN in a more proper fashion
   * Setting a default for RECORD_MIXINS and altering the mk_classdata() decls
     to avoid any confusion with the mk_accessors() interface.
   * Eliminated the ?: at the end of import() since RECORD_MIXINS is now [] by
     default.
   * Let users run arbitrary code during SQL statement logging
   * Exclude user and passowrd from the DSN so it doesn't show up in the
     terminal
   * use YAML () -> require YAML to suppress error when YAML is not installed
     (but ::Syck is installed)
   * Fix reverse joins.  Broken in multiple ways.
   * added 'escape' option (undef by default) to Collection->limit, to allow "
   * where column like 'something including wildcard(\\%)' ESCAPE '\\'" kind of
     stuff, mainly for SQLite which doesn't seem to be able to escape wildcards
     without ESCAPE
   * changed escape character in the t/01searches.t from backslashes to at mar
   * k, which is cleaner and kind to postgres; added pod
   * typo fix in docs
   * mysql doesn't handle bare varchar's
   * TODO a test that needs us to force mysql to be case sensitive
   * expand the escape documentation
   * manifest skip pm_to_blib, add new test file to manifest
   * Update Changes



0.47 Fri Nov 16 15:23:28 EST 2007
   or, "The chmrr fixfest"

   * Note for posterity why we can't apply acl checks to refers_to columns
   * The formatter can't be decided at compile time, because subclasses
     may override the format.  Hence, make it once and cache it.
   * r4425 actually changed the way that undef foreign objects were
     treated; revert to the old behavior, but make it easier to achieve
     the new (aka Jifty's) behavior.
   * Only create the parser and formatter for DateTime objects once, as
     they are slow to create.
   * When looking up the column object in a limit, try to find the right
     class in the aliases.  This only currently works if you specified
     the model class as the 'table2' in the join, instead of its table
     name.
   * Can now call ->record_class as a class method
   * Force chained auto-joins to be marked distinct
   * Alias columns now count as virtual
   * some tests for referencing.
   * Factor out ->_new_record_args and ->_new_collection_args on both
     Record and Collection; makes for easier subclassing in Jifty
   * (re-)wrapped POD
   * Remove broken ->_normal_join
   * $collection->prefetch is now smarter, stealing code from future
     tisql branch
   * $collection->_preload_columns becomes ->query_columns, to have a
     better name
   * $collection->{aliases} rolled into ->{joins}, to also not lie
   * $collection->{leftjoins} becomes ->{joins}, to not lie
   * Standardize on "prefetch" not "preload"
   * Fix preload for records
   * Don't grovel theough columns to find possible joins, just look at
     the joins
   * derived collections can't be relimited
   * add derived => 1 for prefetched collections
   * Remove Jifty::DBI::Collection->preload_columns, which was old and
     unused 
   * '$sb' -> '$collection' because we aren't SearchBuilder anymore
   * perltidy
   * Get rid of a spurious warning
   * Whoops, turned off the wrong warning
   * POD coverage



0.46 Wed Nov  7 12:24:08 EST 2007
 - POD Coverage nit
 - Fix for a stray tempfiles bug reported by ANDK



0.45
Add a warning for mandatory+till until we fix it

Fix the mandatory/inactive tests

We don't need to check that a column is mandatory if it's not active

Add failing tests for mandatory columns that aren't active, they shouldn't have the not null constraint

Bump to 0.45 because of the JDBI::Filter::DateTime functionality fixes

Improve the decode doc, which was mostly just a copy of encode
More needless warnings gone

Better error message when trying to use load_by_cols on a column that doesn't exist
Two fixes for timezones:

    Coerce input and output to be UTC (or Floating, if JDBI::Filter::Date)
    I think we were depending on DT:F:Strptime being saner than it is

    Use set_time_zone, not time_zone which is only a getter
    defined is not what you check to see if there is a hash entry. this will stop bogus extra sql calls that slowed down your app

Allow the specification of functions as 'column' on sql search criteria.

When we fail to load a related model class for a good reason, actually die, rather than burying the error

mysql doesn't handle bare varchar's

TODO a test that needs us to force mysql to be case sensitive

typo fix in docs

We can have 0-valued columns, again

New column attribute: is case_sensitive

Make load_by_cols respect column case sensitivity.

NOTE this is a behaviour change as columns are by default
case-insensitive, and the call was doing a case sensitive
search, which is different from Collection searching.

To make Jifty::DBI load_by_cols work in the old behaviour:

Use $rec->load_by_cols( name => { value => 'foobar',
case_sensitive => 0,
operator => '=' });

unreadable and immutable are now in attributes.

Refactor Jifty::DBI::Column to split attributes into two groups.
Actual column-related (in jifty::dbi layer) ones, such as type,
remains as accesssors.  The rest goes into the attributes hash.
This allows us to declare higher level meta data without having to
change Jifty::DBI::Column in the future.

Note that if you are accessing the column object's ->{label} directly
this will now fail.  Use ->label instead.

*Test updates for case issues 

* Add support for non-lowercase column names

Make sure limit() does not modify arrays passed in to the "value" parameter.

* Allow is_distinct when joining collections, hinting the
resulting collection is still distinct.

* If table2 is given as a Jifty::DBI::Collection object,
detect if the join is still distinct.

Added documentation for using @EXPORT with mixins.

Fix the call to the after_set trigger.

Added a new accessor, RECORD_MIXINS, for tracking which mixins have been attached to a model.

Adding basic documentation for before_set and after_set triggers.

Adding before_set and after_set triggers and tests for them.

Moved Jifty::DBI to use Class::Trigger instead of its own fork of Class::Trigger.

Added tests and debugged register_triggers_for_column on record plugins.

Improvements to the trigger documentation for after_create and before_create.

Fix the documentation of the after_create trigger to match the actual behavior (and only that, this time).

Removed register_triggers_late() in favor of register_triggers_for_column(), which is nearly the same thing but with clearer semantics.

Updated documentation to discuss the register_triggers_late() method.
0.43 Fri Aug 24 00:13:20 EDT 2007


----------------------------------------------------------------------
r66529 (orig r3939):  audreyt | 2007-08-22 12:38:23 -0400

* Jifty::DBI::Filter::DateTime: The _time_zone setting was not
  honoured by ->decode, because the code had a no-op $dt->time_zone($tz)
  where it should've been $dt->set_time_zone($tz).
----------------------------------------------------------------------
r66518 (orig r3928):  falcone | 2007-08-21 19:09:22 -0400

 r23979@ketch:  falcone | 2007-08-21 18:00:57 -0400
 * tell Pg to be case sensitive on IN clauses and handle the arrayref
   structure used by IN

----------------------------------------------------------------------
r66517 (orig r3927):  falcone | 2007-08-21 19:08:59 -0400

 r23978@ketch:  falcone | 2007-08-21 18:00:27 -0400
 * we don't need to TODO this MySQL test because the case matches exactly
   and returns values

----------------------------------------------------------------------
r66197 (orig r3926):  yves | 2007-08-21 10:49:01 -0400

debian packaging

----------------------------------------------------------------------
r66169 (orig r3923):  efunneko | 2007-08-20 16:57:43 -0400

Added support for the IN operator within limits.  This should be accompanied by an array ref of values to be compared against.  It also allows an array ref to be passed with the '=' operator to accomplish the same thing
----------------------------------------------------------------------
r66164 (orig r3918):  sterling | 2007-08-20 15:56:18 -0400

Fixing the name of the branch.
----------------------------------------------------------------------
r66163 (orig r3917):  sterling | 2007-08-20 15:54:42 -0400

Creating a new branch to develop improvements on indexes and relationships.
----------------------------------------------------------------------
r66157 (orig r3911):  trs | 2007-08-16 15:59:16 -0400

 r26169@zot:  tom | 2007-08-16 15:58:56 -0400
 Backup r3908 for now since it breaks existing code

----------------------------------------------------------------------
r66154 (orig r3908):  sterling | 2007-08-16 10:02:48 -0400

 r8684@dynpc145:  andrew | 2007-08-16 08:55:32 -0500
 Added support for virtual record columns.

----------------------------------------------------------------------
r66153 (orig r3907):  sterling | 2007-08-16 10:02:26 -0400

 r8682@dynpc145:  andrew | 2007-08-15 11:17:32 -0500
 Added more code comments, minor perl tidy, and removed a redundant call to set the column type.

----------------------------------------------------------------------
r65006 (orig r3743):  falcone | 2007-07-31 16:26:13 -0400

 r23202@ketch:  falcone | 2007-07-31 16:25:03 -0400
 * we have code that uses Jifty::Collection::implicit_clauses
   and expects that where clause to still show up on an unlimit.
   This is wrong, but we need to sort out the "right" thing to do.

----------------------------------------------------------------------
r64931 (orig r3741):  jesse | 2007-07-30 20:27:30 -0400

 r64930@pinglin:  jesse | 2007-07-30 20:27:14 -0400
 * Removed this. not time yet

----------------------------------------------------------------------
r64929 (orig r3740):  jesse | 2007-07-30 19:55:14 -0400

 r64923@pinglin:  jesse | 2007-07-30 19:54:31 -0400
  * first stab at a UUID filter

----------------------------------------------------------------------
r64902 (orig r3729):  jesse | 2007-07-28 20:27:31 -0400

 r64901@pinglin:  jesse | 2007-07-28 18:29:15 -0500
 * Added a find_all_rows method which works like 'unlimit' without the side effect of calling _clean_slate and zapping other metadata. 
 * Clarified unlimit's somewhat brutal nature.
 
     - Thanks to Mikko Lipasti

----------------------------------------------------------------------
r60774 (orig r3694):  sartak | 2007-07-16 12:49:13 -0400

Fix 'uninitialized value' warnings
----------------------------------------------------------------------
r60655 (orig r3692):  jesse | 2007-07-14 00:06:17 -0400

 r60634@pinglin:  jesse | 2007-07-13 20:14:44 -0400
 * Additional  bulletproofing to stop jifty from trying to insert a bogus date into the database.

----------------------------------------------------------------------
r60350 (orig r3644):  trs | 2007-07-10 01:32:48 -0400

 r25085@zot:  tom | 2007-07-10 01:32:08 -0400
 Fix type for Pg


0.41 Mon Apr 16 16:16:12 EDT 2007
 * Fixed a broken dependency. Thanks to SAPER

0.40 Sun Apr 15 11:19:45 EDT 2007

 * Added sample code to POD for 'before_create' and 'after_create' to make it easier for users to implement by copy and pasting. -evdb
 
 * Better non-lower()ing of non-string types on search. -jesse
 
 * Fix up and add POD so that POD coverage tests pass -trs
 
 * Kill unused JiftyRecord filter -trs
 
 * Fixed documentation coverage for Jifty::DBI::Handle::Informix. -sterling
 
 * Commented out incomplete apply_limits method in the Sybase handle. -sterling
 
 * Fixed documentation coverage in Jifty::DBI::Record::Cachable. -sterling
 
 * Fixed documentation coverage for Jifty::DBI::Record::Memcached. -sterling
 
 * Added pod-coverage.t to encourage better documentation. Added documentation to Jifty::DBI::Record::Plugin. -sterling
 
 * Added better handling of schema versioning -sterling
 
 * Added _init_methods_for_columns to explicitly handle accessor/mutator creation for all columns attached to a record -sterling
 
 * Applications employing JDBI can specify schema_version() in a sub-class of record to add better handling of "since" and "till" in both schema and code generation -sterling
 
 * Modified columns() on records to only return active columns -sterling
 
 * Added all_columns() to retrieve all columns on a record, even inactive ones -sterling
 
 * Added the active() method to columns to test to see if a column is active for the current schema version -sterling
 
 * Jifty::DBI now requires on Scalar::Defer 0.10. -audreyt
 
 * Jifty::DBI::Schema - Don't rescind &defer and &lazy after the schema{...} block and talks about how to use it. -sterling
 
 * debian changes -yves
 
 * export of defer in Jifty::DB::Schema kills symbols for other use (thx audreyt) -yves
 
 * Make load_by_cols work when a given value is undef by turning the query into IS NULL. -clkao
 
 * Completely finish porting Jifty::DBI::Schema to use Object::Declare.  clkao, audreyt
 
 Visible differences are: 
   
     - "refers App::Class" is now an alias for "refers_to App::Class".
 
     - In refers/refers_to it is no longer neccessary to load App::Class
       beforehand; therefore circular references can now be expressed.
 
     - "length is 30" is now invalid; a compile-time exception will be
       raised that tells the user to use "maxlength is 40" instead.
 
0.39_9999 Fri Jan 26 21:30:48 CST 2007

- Removed unneccessary use of Devel::SimpleTrace.

0.39_999 Fri Jan 26 21:30:48 CST 2007

- Improved error message for "length is 42":

 Due to an incompatible API change, the "length" field in
 Jifty::DBI columns has been renamed to "max_length":
 
     column foo =>
         length is 10;       # NOT VALID 

 Please write this instead:
 
     column foo =>
         max_length is 10    # VALID

- Calling 'column' within a schema class is an error:
 
    package TestApp::Address::Schema;
    column address => ...;        # NOT VALID

  Please write this instead:

    package TestApp::Address;
    use Jifty::DBI::Schema;
    use Jifty::DBI::Record schema {
        column address => ...;    # VALID
    };


0.39_99 Fri Jan 26 19:57:48 CST 2007

- INCOMPATIBLE API CHANGE: "length is 42" must be written as "max_length is 42" instead.
- Switch to Object::Declare for schema declaration, fixing many annoyances such as the inability for two modules to refer to each other in their columns.
- "refers Foo::Bar", a new alias to "refers_to Foo::Bar".

0.34 Sun Jan 28 21:28:00 CST 2007

- Added a method to the schema generator to output the SQL for a single column

0.32 Fri Jan 26 20:51:12 CST 2007

- Improved deprecation warning for "length is 42":

 Due to an incompatible API change, the "length" field in
 Jifty::DBI columns has been renamed to "max_length":
 
     column foo =>
         length is 10;       # NOT VALID 

 Please write this instead:
 
     column foo =>
         max_length is 10    # VALID

- Calling 'column' within a schema class is deprecated:
 
    package TestApp::Address::Schema;
    column address => ...;        # NOT VALID

  Please write this instead:

    package TestApp::Address;
    use Jifty::DBI::Schema;
    use Jifty::DBI::Record schema {
        column address => ...;    # VALID
    };

0.31 Fri Jan 26 19:52:08 CST 2007

- load, load_by_cols, load_from_hash and create are now optionally class methods.
- "length is 42" in schema declarations is deprecated; please write "max_length is 42" instead.
- Jifty::DBI::Collection - document the "LIKE" and "MATCHES" limit operators correctly.

0.30 Wed Jan 17 15:29:44 EST 2007

- update version dependency on DateTime to 0.34
- fixed a "use of uninitialized value" warning in the tests.  [t/01records.t]
- Make sure we don't go looking for the validate_COLUMN sub everytime for columns without validators (thanks to Alex for pointing that out)
- Fix bug where validator_COLUMN subs weren't getting set as validators (thanks to Audrey for help)
-  Test that the declarative syntax automagically sets validators as it should (these fail at the moment, though a fix should be forthcoming)
- fixed the "order_by" bug in sub distinct_query.  [Jifty::DBI::Handle::Pg]
- added unit tests for the Handle::Pg patch.  [t/14handle-pg.t]
- fixed the desc string in the last test.  [t/13collection.t]
- made _order_clause more flexible by dealing with empty aliases [lib/Jifty/DBI/Collection.pm]
- added one test for it.  [t/13collection.t]
- added t/13collection.t to test methods in Jifty::DBI::Collection.
- Jifty::DBI::Handle::ODBC - Bring in the missing build_dsn method from
  DBIx::SearchBuilder such that this backend can work again.
  Requested by: agentzh++
- Jifty::DBI::Column - Recognize "is autocompleted".
- Jifty::DBI::Collection - The "function" argument to the "column" method
  was broken when passed with trailing "?" characters.
- Also clean up the documentation about ->distinct_required.
- Jifty::DBI::Collection - Document the long-undocumented ->column method.
- Jifty::DBI::Handle::ODBC - Doc fixup and author name fixup.
- Jifty::DBI::Schema - Add "is autocompleted".
- Jifty::DBI::Schema - Backport "order is 3" as alias of "sort_order is 3"
  from Jifty::Param land.
- Make "valid are ..." an alias for "valid_values are ..." for real.
-  add 'is indexed' syntax to the declaritive schema generator
- remove sort, it causes CREATE INDEX to run before CREATE TABLE
- add sqlite sql so that these tests run without needing postgres configured
- reorganize the code so its easier to add more databases later, and uses util.pl more
- Jifty::DBI::Collection - More CORE::join() to avoid warnings.
- Jifty::DBI::Collection: Pass through the arguments to L</new> to  L<clean_slate> and on to L<implicit_clauses>
- import Carp::croak so the error message in apply works


0.28, 0.29 Thu Nov 23 22:11:37 EST 2006

* The last upload didn't take

0.27 Thu Nov 23 22:06:09 EST 2006

* Initial implementation of prefetching for related records and collections


0.26 Mon Nov 13 11:11:31 EST 2006

Usability

 * avoid a warning in Jifty::DBI::Schema when our user is executing
   a .pm file. When that is the case, caller(1) is not defined. --gaal
 * Small error string change to suggest looking for missing use lines in models where refer_to is used --bartb

Core code

 * fixed sort_order setting in Jifty::DBI::Schema  --wolfgang
 * Don't use main.*, ever. --clkao
 * Jifty::DBI::Schema - Backport "valid are qw(...)" and "render as '...'"
   support from Jifty::Param::Schema as aliases to "valid_values are" and
   "render_as".  --audreyt
 * added as_hash to Jifty::DBI::Record --jesse
 * @ISA => use base --schwern
 * Use DBIx::DBScehma::Column and ::Table rather than trust that DBIx::DBScehma
   will load them. --schwern

Installation

 * Bump DateTime dependency, as older versions didn't provide the API 
   we're using. (0.22 is known bad) --jesse (Thanks to Matt Trout)

Testing

 * make sure to skip 04memcached.t if you don't have Cache::Memcached --ishigaki
 * Tests updated to not have $sth in scope when we $dbh->disconnect


Doc
 * demonstrate the valid_values alternate syntax that allows display and value to be separate 
 * Document columns and column --schwern
 * Minor changes to pod --evdb




0.25 Tue Sep 12 23:52:45 BST 2006

 * cleaned up DSN generation. 
 * Allowed arbitrary parameter specification in DSNs
 * Corrected the method name "DSN" to "dsn" throughout.
 * ( If a user tries to load a record by columns that happen ot be foriegn keys, and values that are objects, do the right thing
 * Propery cache DBI::Record entries when aliased.
 * Fewer accessor calls.
 * Only apply filters if we have values fetched.
 * make passing a J:D:Collection as a value DTRT
 * Jifty::DBI::Schema - s/die/croak/ to aid debugging.
 * Refactor Jifty::DBI::Filter::Date to be a subclass of ::Filter::DateTime.
 * New ::Filter::Time filter for time of day. ('time' sql type).
 * Update to Module::Install 0.64 to fix auto_install() when Makefile.PL is
   run from the command line and CPANPLUS is not installed.
 * The number of fixed tests in t/10schema.t for Jifty::DBI was wrong.
 * documented limit a bit more
 
 * JDBI::Filter::Date clones dates before setting timezone, so that we
   don't alter the object we're passed.
 * Spelling fixes.
 * Remove the @ISA-mocking code from Jifty::DBI::Schema, so that
 
     use MyApp::Record schema {
         ...;
     }
 
   can work even if MyApp::Record overrides Jifty::Record's column
   building methods.  We do that by arranging the schema callback
   to run after the @ISA chain is set up.
 
 * Jifty::DBI::Schema - defer initialization for columns created via the
  schema{} wrapper, so that users can continue to define column names
  that overlaps with the helper functions, such as "label" and "type".
 * attempt to test "label" and "type" column definitions.
   however, as I don't have Pg, I cannot run this test; help welcome.
 
 * cleaned up case sensitivity code
 * fixed SQLite docs
 * abstract out checking whether it's possible to make a clause case 
    insensitive so that subclasses of Handle can use those tests
 * doc'd Filter::DateTime special behavior when the column type is 'date'
 * Adding a filter to salt and hash passwords
 * Adding an after_set hook to Jifty::DBI::Record
 * Jifty::DBI::Schema: Lift the restriction to use another ::Schema
   package on the record model class; you can now directly write:
 
     package Wifty::Model::Page;
     use Jifty::DBI::Schema;
 
     schema {
     # ... your columns here ...
     };
 
   because &schema will unregister all symbols exported by Jifty::DBI::Schema
   after it runs the column initialization code.  Backward compatibility is
   preserved -- as long as you don't name your record model "Schema"...
 
 * update the testmodels.pl to use new schema decl syntax
 * Lift the call of schema to BEGIN time:
 
 * fixed handling of case sensitivity and numeric columns so opertions 
   like '>' do numeric instead of lexical comparisons
 * Allow collection SELECTs to have preload_columns defined.
 * Case insensitive searches should be, euh, case insensitive in Pg
 * Mark case-sensitive tests as TODO for MySQL
 * drop ::Cachable::new as it does nothing
 * add cache tests: columns names are case insensetive so we should
   generate cache key insenstive too
 ::Cachable::_gen_record_cache_key
  * hash key couldn't be undefined, but '' and 0 are different keys
  * values undef, 0 and '' are different, use '__undef' only when it's
    really undef
  * apply the same logic when $value is hash reference
  * use lower case for key part
  
 ::Cachable::load_from_cache
  * don't generate PK cache key, we do that in subcequent _store call
 
 ::Cachable::__set
  * don't create local arguments hash, just pass @_ throught
 
 ::Cachable::__delete
  * don't eat arguments, may be somebody wants to subclass
    and pass arguments to delete.
 
 ::Cachable::_fetch 
  * fetch again only when we found something in cache with
    keys' aliases
 ::Cachable::_primary_record_cache_key
  * avoid check for $self->id definess as if it's undef then
    record couldn't have pk cache key
  * use $self->primary_keys to get columns of the PK and its
    values, as result we get support for compound PKs here
 
  * Mark undef PK loading as TODO

  * Only mark the one failing test under mysql as TODO
 
  * make Collection smart about guessing table names
 
  * removed a lie from create() pod
  * Make _open_paren and _close_paren into public methods open_paren and close_paren

0.24 Tue Aug  8 23:33:34 EDT 2006
 * artificial version increment

0.23 Thu Jun 15 14:12:20 CEST 2006
 * Add tests for case sensitivity in limits
 * Caching for columns and readable/writable attributes. Only gains us 2% performance. But hey. 2% free
 * Added DateTime::Format::Strptime to requires
 * Do fewer ->COLUMNS calls from ->column, and do fewer ->column calls from
->value.
 * Make Jifty::DBI::Record::_init() expect a hash like Jifty::Record does
 * Fixes 'is_distinct' failure when used in Jifty
 * Use Class::Accessor::Fast.
 * Remove Carp::cluck, as it  hates END and vice versa.
 * Integrate today's hack for dumping callers for sql queries in question.
 * Add tests for case sensitivity in limits
 * Integrate today's hack for dumping callers for sql queries in question.
 * Enforce mandatory things at a Jifty::DBI layer
 * Cleanup 'distinct' column check and tests
 * Tests for column constraints 'mandatory' and 'distinct'
 * Implement support for 'distinct' column checks
 * Perltidy
 * Set validator on the column to validate_whatever (even if it's just
   the autogenerated one)
 * Update Module::Install to 0.21+ to prevent make loop; also
   avoid the use of "our" in VERSION strings for compat with
   older MMs. (Ditto with the previous commit)
 * Oracle fixes from Mark Gardner
 * Jifty::DBI::Filter::Storable - Do not die when the storable image is somehow
   corrupt; instead, simply return undef.
 * upgrade inc/ trees to 0.62+ to reflect the version::vpp fix.
 * Jifty::DBI::Collection - minor POD style and typo fix.
 * add_record now works on empty collections
 * removed a debug warning from alex
 * Enforce "default is ''" on columns
 * Document the use and behavior of refers_to
 * Cache::Memcached was being tested whether or not it was installed. Thanks to Matt Trout
 * Fixed Pod typo
 * Doc fixes relating to filters
 * lib/Jifty/DBI/Record.pm - removed incorrect '=for' directive
 * lib/Jifty/DBI/SchemaGenerator.pm - removed incorrect '=for' directive
 * t/01-version_checks.t - test for CPAN VERSION parsing hang-ups
 * lib/Jifty/DBI/Record.pm - added Class::ReturnValue's to disallowed accessors
 * lib/Jifty/DBI/Record.pm - do not try to set_<foo>() a collection
 * t/11schema_records.t - added tests for trying to set a collection
 * t/10schema.t - silence undef warning
 * lib/Jifty/DBI/Record.pm - catch attempts to set a refers_to
 * lib/Jifty/DBI/SchemaGenerator.pm - crediting myself per Jesse's suggestion :-O (ewilhelm)
 * lib/Jifty/DBI/SchemaGenerator.pm - pod edits:
   Redid synopsis with real example -- 
    maybe somewhat incorrect WRT Model::Schema, but it does work.
   Stripped boilerplate sections.
   Clarified add_model $model requirement.
   Cleanup odd =for public... pod bits.
   Spelling fix.
 * lib/Jifty/DBI/Handle.pm - documentation fixes/cleanup
 * created an api to allow distinct toggling


0.21 Wed May  3 14:14:41 EDT 2006

* We no longer do a count when setting up a collection's pager object by default
* order_by now returns the current orders
* added a "do_search" method to force a search, say before a count
* Added a filter for Dates, lib/Jifty/DBI/Filter/Date.pm
* Switched Jifty::DBI::Record to autocreate methods on object load rather than
  use AUTOLOAD.

0.20 Fri Apr 21 10:23:14 EDT 2006

* Documentation updates and misc bugfixes from Eric Wilhelm
* Performance optimization for the "standard case" of __value
* Postgres sequence parsing fix from Daniel Tabuenca

0.19 Sun Apr  2 18:59:53 JST 2006

* Columns now have a "sort_order" attribute. This way when auto-rendering
  forms, we can render them by "order defined" rather than just alphabetically.
    - idea by Tatsuhiko Miyagawa

0.18 Fri Mar 31 22:15:59 JST 2006

* Test fixes to remove databases after testing. This fixes
  Win32 test failures. -- Kenichi Ishigaki

* Added "filters" method to records, which adds both 
  input_filters and output_filters.

0.17 Sun Mar  5 00:41:41 PST 2006

* Memcached correctness fixes

0.16 Sat Mar  4 18:02:44 PST 2006

* Memcached installation fixes

0.15


* Added support for Memcached
* Updated record docs to show hooks

0.09 Thu Dec 29 07:56:30 EST 2005

* Fixed dependency on Class::Data::Inheritable

* Audrey Tang added "smarter" schema declaration processing to get us warnings on bogus usage.

0.08 Sun Dec 25 14:34:12 EST 2005

* Added a missing prereq: Exporter::Lite. Thanks to sri

0.06 Fri Dec 23 15:44:17 EST 2005

* Added more tests for mysql and Pg now that DBSchema supports them. Tests want more love

0.05_03

Forward-ported features from DBIx::SearchBuilder:
  1.37_01 Thu Dec  8 15:56:50 EST 2005
  * Switched Postgres sequence lookups to use CURRVAL, rather than OIDs
  
  1.36 Fri Dec  2 18:04:21 EST 2005
  
  * Change to how we resolve virtual columns to deal with a  
    "no such attribute" bug in RT
  
  1.35 Wed Nov  2 22:36:02 EST 2005
  * Doc fixes and OrderBy cleanup from ruslan
  
  1.34 Wed Nov  2 22:26:15 EST 2005
  
  * Clone support from Ruslan
  


0.05_02

* Added support for "virtual" columns
* Added support for named references between tables

    column owner =>
        refers_to MyApp::User by 'email';


* not_null deprecated in favor of mandatory

0.05_01 Tue Nov  8 16:29:02 EST 2005

* Initial release