File Coverage

blib/lib/DBIx/Class/ResultSource.pm
Criterion Covered Total %
statement 462 511 90.4
branch 229 296 77.3
condition 146 224 65.1
subroutine 64 74 86.4
pod 32 37 86.4
total 933 1142 81.7


line stmt bran cond sub pod time code
1             package DBIx::Class::ResultSource;
2              
3 379     379   268015 use strict;
  379         844  
  379         11957  
4 379     379   1683 use warnings;
  379         829  
  379         13156  
5              
6 379     379   1596 use base qw/DBIx::Class::ResultSource::RowParser DBIx::Class/;
  379         763  
  379         173754  
7              
8 379     379   2437 use DBIx::Class::ResultSet;
  379         816  
  379         8346  
9 379     379   162284 use DBIx::Class::ResultSourceHandle;
  379         918  
  379         10815  
10              
11 379     379   2170 use DBIx::Class::Carp;
  379         788  
  379         2983  
12 379     379   1987 use DBIx::Class::_Util 'UNRESOLVABLE_CONDITION';
  379         1964  
  379         18440  
13 379     379   1931 use SQL::Abstract 'is_literal_value';
  379         796  
  379         16464  
14 379     379   30533 use Devel::GlobalDestruction;
  379         26781  
  379         2851  
15 379     379   21380 use Try::Tiny;
  379         826  
  379         16756  
16 379     379   1705 use List::Util 'first';
  379         741  
  379         20707  
17 379     379   1834 use Scalar::Util qw/blessed weaken isweak/;
  379         767  
  379         19505  
18              
19 379     379   1701 use namespace::clean;
  379         705  
  379         2014  
20              
21             __PACKAGE__->mk_group_accessors(simple => qw/
22             source_name name source_info
23             _ordered_columns _columns _primaries _unique_constraints
24             _relationships resultset_attributes
25             column_info_from_storage
26             /);
27              
28             __PACKAGE__->mk_group_accessors(component_class => qw/
29             resultset_class
30             result_class
31             /);
32              
33             __PACKAGE__->mk_classdata( sqlt_deploy_callback => 'default_sqlt_deploy_hook' );
34              
35             =head1 NAME
36              
37             DBIx::Class::ResultSource - Result source object
38              
39             =head1 SYNOPSIS
40              
41             # Create a table based result source, in a result class.
42              
43             package MyApp::Schema::Result::Artist;
44             use base qw/DBIx::Class::Core/;
45              
46             __PACKAGE__->table('artist');
47             __PACKAGE__->add_columns(qw/ artistid name /);
48             __PACKAGE__->set_primary_key('artistid');
49             __PACKAGE__->has_many(cds => 'MyApp::Schema::Result::CD');
50              
51             1;
52              
53             # Create a query (view) based result source, in a result class
54             package MyApp::Schema::Result::Year2000CDs;
55             use base qw/DBIx::Class::Core/;
56              
57             __PACKAGE__->load_components('InflateColumn::DateTime');
58             __PACKAGE__->table_class('DBIx::Class::ResultSource::View');
59              
60             __PACKAGE__->table('year2000cds');
61             __PACKAGE__->result_source_instance->is_virtual(1);
62             __PACKAGE__->result_source_instance->view_definition(
63             "SELECT cdid, artist, title FROM cd WHERE year ='2000'"
64             );
65              
66              
67             =head1 DESCRIPTION
68              
69             A ResultSource is an object that represents a source of data for querying.
70              
71             This class is a base class for various specialised types of result
72             sources, for example L. Table is the
73             default result source type, so one is created for you when defining a
74             result class as described in the synopsis above.
75              
76             More specifically, the L base class pulls in the
77             L component, which defines
78             the L method.
79             When called, C creates and stores an instance of
80             L. Luckily, to use tables as result
81             sources, you don't need to remember any of this.
82              
83             Result sources representing select queries, or views, can also be
84             created, see L for full details.
85              
86             =head2 Finding result source objects
87              
88             As mentioned above, a result source instance is created and stored for
89             you when you define a
90             L.
91              
92             You can retrieve the result source at runtime in the following ways:
93              
94             =over
95              
96             =item From a Schema object:
97              
98             $schema->source($source_name);
99              
100             =item From a Result object:
101              
102             $result->result_source;
103              
104             =item From a ResultSet object:
105              
106             $rs->result_source;
107              
108             =back
109              
110             =head1 METHODS
111              
112             =head2 new
113              
114             $class->new();
115              
116             $class->new({attribute_name => value});
117              
118             Creates a new ResultSource object. Not normally called directly by end users.
119              
120             =cut
121              
122             sub new {
123 126399     126399 1 705811 my ($class, $attrs) = @_;
124 126399 100       226229 $class = ref $class if ref $class;
125              
126 126399 50       92440 my $new = bless { %{$attrs || {}} }, $class;
  126399         845259  
127 126399   100     284211 $new->{resultset_class} ||= 'DBIx::Class::ResultSet';
128 126399 100       89608 $new->{resultset_attributes} = { %{$new->{resultset_attributes} || {}} };
  126399         280957  
129 126399 100       105419 $new->{_ordered_columns} = [ @{$new->{_ordered_columns}||[]}];
  126399         326476  
130 126399 100       106099 $new->{_columns} = { %{$new->{_columns}||{}} };
  126399         422437  
131 126399 100       112698 $new->{_relationships} = { %{$new->{_relationships}||{}} };
  126399         403885  
132 126399   50     206146 $new->{name} ||= "!!NAME NOT SET!!";
133 126399   50     344329 $new->{_columns_info_loaded} ||= 0;
134 126399         223924 return $new;
135             }
136              
137             =pod
138              
139             =head2 add_columns
140              
141             =over
142              
143             =item Arguments: @columns
144              
145             =item Return Value: L<$result_source|/new>
146              
147             =back
148              
149             $source->add_columns(qw/col1 col2 col3/);
150              
151             $source->add_columns('col1' => \%col1_info, 'col2' => \%col2_info, ...);
152              
153             $source->add_columns(
154             'col1' => { data_type => 'integer', is_nullable => 1, ... },
155             'col2' => { data_type => 'text', is_auto_increment => 1, ... },
156             );
157              
158             Adds columns to the result source. If supplied colname => hashref
159             pairs, uses the hashref as the L for that column. Repeated
160             calls of this method will add more columns, not replace them.
161              
162             The column names given will be created as accessor methods on your
163             L objects. You can change the name of the accessor
164             by supplying an L in the column_info hash.
165              
166             If a column name beginning with a plus sign ('+col1') is provided, the
167             attributes provided will be merged with any existing attributes for the
168             column, with the new attributes taking precedence in the case that an
169             attribute already exists. Using this without a hashref
170             (C<< $source->add_columns(qw/+col1 +col2/) >>) is legal, but useless --
171             it does the same thing it would do without the plus.
172              
173             The contents of the column_info are not set in stone. The following
174             keys are currently recognised/used by DBIx::Class:
175              
176             =over 4
177              
178             =item accessor
179              
180             { accessor => '_name' }
181              
182             # example use, replace standard accessor with one of your own:
183             sub name {
184             my ($self, $value) = @_;
185              
186             die "Name cannot contain digits!" if($value =~ /\d/);
187             $self->_name($value);
188              
189             return $self->_name();
190             }
191              
192             Use this to set the name of the accessor method for this column. If unset,
193             the name of the column will be used.
194              
195             =item data_type
196              
197             { data_type => 'integer' }
198              
199             This contains the column type. It is automatically filled if you use the
200             L producer, or the
201             L module.
202              
203             Currently there is no standard set of values for the data_type. Use
204             whatever your database supports.
205              
206             =item size
207              
208             { size => 20 }
209              
210             The length of your column, if it is a column type that can have a size
211             restriction. This is currently only used to create tables from your
212             schema, see L.
213              
214             { size => [ 9, 6 ] }
215              
216             For decimal or float values you can specify an ArrayRef in order to
217             control precision, assuming your database's
218             L supports it.
219              
220             =item is_nullable
221              
222             { is_nullable => 1 }
223              
224             Set this to a true value for a column that is allowed to contain NULL
225             values, default is false. This is currently only used to create tables
226             from your schema, see L.
227              
228             =item is_auto_increment
229              
230             { is_auto_increment => 1 }
231              
232             Set this to a true value for a column whose value is somehow
233             automatically set, defaults to false. This is used to determine which
234             columns to empty when cloning objects using
235             L. It is also used by
236             L.
237              
238             =item is_numeric
239              
240             { is_numeric => 1 }
241              
242             Set this to a true or false value (not C) to explicitly specify
243             if this column contains numeric data. This controls how set_column
244             decides whether to consider a column dirty after an update: if
245             C is true a numeric comparison C<< != >> will take place
246             instead of the usual C
247              
248             If not specified the storage class will attempt to figure this out on
249             first access to the column, based on the column C. The
250             result will be cached in this attribute.
251              
252             =item is_foreign_key
253              
254             { is_foreign_key => 1 }
255              
256             Set this to a true value for a column that contains a key from a
257             foreign table, defaults to false. This is currently only used to
258             create tables from your schema, see L.
259              
260             =item default_value
261              
262             { default_value => \'now()' }
263              
264             Set this to the default value which will be inserted into a column by
265             the database. Can contain either a value or a function (use a
266             reference to a scalar e.g. C<\'now()'> if you want a function). This
267             is currently only used to create tables from your schema, see
268             L.
269              
270             See the note on L for more information about possible
271             issues related to db-side default values.
272              
273             =item sequence
274              
275             { sequence => 'my_table_seq' }
276              
277             Set this on a primary key column to the name of the sequence used to
278             generate a new key value. If not specified, L
279             will attempt to retrieve the name of the sequence from the database
280             automatically.
281              
282             =item retrieve_on_insert
283              
284             { retrieve_on_insert => 1 }
285              
286             For every column where this is set to true, DBIC will retrieve the RDBMS-side
287             value upon a new row insertion (normally only the autoincrement PK is
288             retrieved on insert). C is used automatically if
289             supported by the underlying storage, otherwise an extra SELECT statement is
290             executed to retrieve the missing data.
291              
292             =item auto_nextval
293              
294             { auto_nextval => 1 }
295              
296             Set this to a true value for a column whose value is retrieved automatically
297             from a sequence or function (if supported by your Storage driver.) For a
298             sequence, if you do not use a trigger to get the nextval, you have to set the
299             L value as well.
300              
301             Also set this for MSSQL columns with the 'uniqueidentifier'
302             L whose values you want to
303             automatically generate using C, unless they are a primary key in which
304             case this will be done anyway.
305              
306             =item extra
307              
308             This is used by L and L
309             to add extra non-generic data to the column. For example: C<< extra
310             => { unsigned => 1} >> is used by the MySQL producer to set an integer
311             column to unsigned. For more details, see
312             L.
313              
314             =back
315              
316             =head2 add_column
317              
318             =over
319              
320             =item Arguments: $colname, \%columninfo?
321              
322             =item Return Value: 1/0 (true/false)
323              
324             =back
325              
326             $source->add_column('col' => \%info);
327              
328             Add a single column and optional column info. Uses the same column
329             info keys as L.
330              
331             =cut
332              
333             sub add_columns {
334 14203     14203 1 29243 my ($self, @cols) = @_;
335 14203 50       45946 $self->_ordered_columns(\@cols) unless $self->_ordered_columns;
336              
337 14203         110539 my @added;
338 14203         26401 my $columns = $self->_columns;
339 14203         119408 while (my $col = shift @cols) {
340 45410         43298 my $column_info = {};
341 45410 100       78476 if ($col =~ s/^\+//) {
342 651         1897 $column_info = $self->column_info($col);
343             }
344              
345             # If next entry is { ... } use that for the column info, if not
346             # use an empty hashref
347 45410 100       69275 if (ref $cols[0]) {
348 45372         35740 my $new_info = shift(@cols);
349 45372         135833 %$column_info = (%$column_info, %$new_info);
350             }
351 45410 100       91471 push(@added, $col) unless exists $columns->{$col};
352 45410         120447 $columns->{$col} = $column_info;
353             }
354 14203         13426 push @{ $self->_ordered_columns }, @added;
  14203         35185  
355 14203         32491 return $self;
356             }
357              
358 1     1 1 15 sub add_column { shift->add_columns(@_); } # DO NOT CHANGE THIS TO GLOB
359              
360             =head2 has_column
361              
362             =over
363              
364             =item Arguments: $colname
365              
366             =item Return Value: 1/0 (true/false)
367              
368             =back
369              
370             if ($source->has_column($colname)) { ... }
371              
372             Returns true if the source has a column of this name, false otherwise.
373              
374             =cut
375              
376             sub has_column {
377 73457     73457 1 1247704 my ($self, $column) = @_;
378 73457         288625 return exists $self->_columns->{$column};
379             }
380              
381             =head2 column_info
382              
383             =over
384              
385             =item Arguments: $colname
386              
387             =item Return Value: Hashref of info
388              
389             =back
390              
391             my $info = $source->column_info($col);
392              
393             Returns the column metadata hashref for a column, as originally passed
394             to L. See L above for information on the
395             contents of the hashref.
396              
397             =cut
398              
399             sub column_info {
400 59331     59331 1 540480 my ($self, $column) = @_;
401             $self->throw_exception("No such column $column")
402 59331 50       163405 unless exists $self->_columns->{$column};
403              
404 59331 100 66     192009 if ( ! $self->_columns->{$column}{data_type}
      100        
      66        
405             and ! $self->{_columns_info_loaded}
406             and $self->column_info_from_storage
407 1     1   29 and my $stor = try { $self->storage } )
408             {
409 1         18 $self->{_columns_info_loaded}++;
410              
411             # try for the case of storage without table
412             try {
413 1     1   24 my $info = $stor->columns_info_for( $self->from );
414             my $lc_info = { map
415 1         4 { (lc $_) => $info->{$_} }
  4         9  
416             ( keys %$info )
417             };
418              
419 1         2 foreach my $col ( keys %{$self->_columns} ) {
  1         5  
420             $self->_columns->{$col} = {
421 4         10 %{ $self->_columns->{$col} },
422 4 50 33     4 %{ $info->{$col} || $lc_info->{lc $col} || {} }
  4         24  
423             };
424             }
425 1         6 };
426             }
427              
428 59331         353062 return $self->_columns->{$column};
429             }
430              
431             =head2 columns
432              
433             =over
434              
435             =item Arguments: none
436              
437             =item Return Value: Ordered list of column names
438              
439             =back
440              
441             my @column_names = $source->columns;
442              
443             Returns all column names in the order they were declared to L.
444              
445             =cut
446              
447             sub columns {
448 21536     21536 1 224436 my $self = shift;
449 21536 100       42616 $self->throw_exception(
450             "columns() is a read-only accessor, did you mean add_columns()?"
451             ) if @_;
452 21535 50       20454 return @{$self->{_ordered_columns}||[]};
  21535         110331  
453             }
454              
455             =head2 columns_info
456              
457             =over
458              
459             =item Arguments: \@colnames ?
460              
461             =item Return Value: Hashref of column name/info pairs
462              
463             =back
464              
465             my $columns_info = $source->columns_info;
466              
467             Like L but returns information for the requested columns. If
468             the optional column-list arrayref is omitted it returns info on all columns
469             currently defined on the ResultSource via L.
470              
471             =cut
472              
473             sub columns_info {
474 47092     47092 1 58492 my ($self, $columns) = @_;
475              
476 47092         85626 my $colinfo = $self->_columns;
477              
478 47092 100 66     240445 if (
      100        
      100        
479 185550     185550   251294 first { ! $_->{data_type} } values %$colinfo
480             and
481             ! $self->{_columns_info_loaded}
482             and
483             $self->column_info_from_storage
484             and
485 3     3   101 my $stor = try { $self->storage }
486             ) {
487 1         18 $self->{_columns_info_loaded}++;
488              
489             # try for the case of storage without table
490             try {
491 1     1   24 my $info = $stor->columns_info_for( $self->from );
492             my $lc_info = { map
493 1         3 { (lc $_) => $info->{$_} }
  4         8  
494             ( keys %$info )
495             };
496              
497 1         4 foreach my $col ( keys %$colinfo ) {
498             $colinfo->{$col} = {
499 4         6 %{ $colinfo->{$col} },
500 4 50 33     5 %{ $info->{$col} || $lc_info->{lc $col} || {} }
  4         23  
501             };
502             }
503 1         5 };
504             }
505              
506 47092         104695 my %ret;
507              
508 47092 100       74286 if ($columns) {
509 21559         33079 for (@$columns) {
510 41115 100       61494 if (my $inf = $colinfo->{$_}) {
511 41114         72007 $ret{$_} = $inf;
512             }
513             else {
514 1   50     7 $self->throw_exception( sprintf (
515             "No such column '%s' on source '%s'",
516             $_,
517             $self->source_name || $self->name || 'Unknown source...?',
518             ));
519             }
520             }
521             }
522             else {
523 25533         88050 %ret = %$colinfo;
524             }
525              
526 47091         205931 return \%ret;
527             }
528              
529             =head2 remove_columns
530              
531             =over
532              
533             =item Arguments: @colnames
534              
535             =item Return Value: not defined
536              
537             =back
538              
539             $source->remove_columns(qw/col1 col2 col3/);
540              
541             Removes the given list of columns by name, from the result source.
542              
543             B: Removing a column that is also used in the sources primary
544             key, or in one of the sources unique constraints, B result in a
545             broken result source.
546              
547             =head2 remove_column
548              
549             =over
550              
551             =item Arguments: $colname
552              
553             =item Return Value: not defined
554              
555             =back
556              
557             $source->remove_column('col');
558              
559             Remove a single column by name from the result source, similar to
560             L.
561              
562             B: Removing a column that is also used in the sources primary
563             key, or in one of the sources unique constraints, B result in a
564             broken result source.
565              
566             =cut
567              
568             sub remove_columns {
569 2     2 1 6 my ($self, @to_remove) = @_;
570              
571 2 50       12 my $columns = $self->_columns
572             or return;
573              
574 2         3 my %to_remove;
575 2         6 for (@to_remove) {
576 3         4 delete $columns->{$_};
577 3         6 ++$to_remove{$_};
578             }
579              
580 2         3 $self->_ordered_columns([ grep { not $to_remove{$_} } @{$self->_ordered_columns} ]);
  12         21  
  2         9  
581             }
582              
583 0     0 1 0 sub remove_column { shift->remove_columns(@_); } # DO NOT CHANGE THIS TO GLOB
584              
585             =head2 set_primary_key
586              
587             =over 4
588              
589             =item Arguments: @cols
590              
591             =item Return Value: not defined
592              
593             =back
594              
595             Defines one or more columns as primary key for this source. Must be
596             called after L.
597              
598             Additionally, defines a L
599             named C.
600              
601             Note: you normally do want to define a primary key on your sources
602             B.
603             See
604             L
605             for more info.
606              
607             =cut
608              
609             sub set_primary_key {
610 13526     13526 1 4172495 my ($self, @cols) = @_;
611              
612 13526         44546 my $colinfo = $self->columns_info(\@cols);
613 13525         20381 for my $col (@cols) {
614             carp_unique(sprintf (
615             "Primary key of source '%s' includes the column '%s' which has its "
616             . "'is_nullable' attribute set to true. This is a mistake and will cause "
617             . 'various Result-object operations to fail',
618             $self->source_name || $self->name || 'Unknown source...?',
619             $col,
620 18727 100 50     39037 )) if $colinfo->{$col}{is_nullable};
621             }
622              
623 13525         33479 $self->_primaries(\@cols);
624              
625 13525         149597 $self->add_unique_constraint(primary => \@cols);
626             }
627              
628             =head2 primary_columns
629              
630             =over 4
631              
632             =item Arguments: none
633              
634             =item Return Value: Ordered list of primary column names
635              
636             =back
637              
638             Read-only accessor which returns the list of primary keys, supplied by
639             L.
640              
641             =cut
642              
643             sub primary_columns {
644 25146 100   25146 1 32454 return @{shift->_primaries||[]};
  25146         128894  
645             }
646              
647             # a helper method that will automatically die with a descriptive message if
648             # no pk is defined on the source in question. For internal use to save
649             # on if @pks... boilerplate
650             sub _pri_cols_or_die {
651 21717     21717   20484 my $self = shift;
652 21717 100 0     41841 my @pcols = $self->primary_columns
653             or $self->throw_exception (sprintf(
654             "Operation requires a primary key to be declared on '%s' via set_primary_key",
655             # source_name is set only after schema-registration
656             $self->source_name || $self->result_class || $self->name || 'Unknown source...?',
657             ));
658 21715         42279 return @pcols;
659             }
660              
661             # same as above but mandating single-column PK (used by relationship condition
662             # inference)
663             sub _single_pri_col_or_die {
664 18516     18516   132136 my $self = shift;
665 18516         39650 my ($pri, @too_many) = $self->_pri_cols_or_die;
666              
667 18516 50 0     37763 $self->throw_exception( sprintf(
668             "Operation requires a single-column primary key declared on '%s'",
669             $self->source_name || $self->result_class || $self->name || 'Unknown source...?',
670             )) if @too_many;
671 18516         38046 return $pri;
672             }
673              
674              
675             =head2 sequence
676              
677             Manually define the correct sequence for your table, to avoid the overhead
678             associated with looking up the sequence automatically. The supplied sequence
679             will be applied to the L of each L
680              
681             =over 4
682              
683             =item Arguments: $sequence_name
684              
685             =item Return Value: not defined
686              
687             =back
688              
689             =cut
690              
691             sub sequence {
692 325     325 1 186113 my ($self,$seq) = @_;
693              
694 325 50       1500 my @pks = $self->primary_columns
695             or return;
696              
697             $_->{sequence} = $seq
698 325         645 for values %{ $self->columns_info (\@pks) };
  325         1121  
699             }
700              
701              
702             =head2 add_unique_constraint
703              
704             =over 4
705              
706             =item Arguments: $name?, \@colnames
707              
708             =item Return Value: not defined
709              
710             =back
711              
712             Declare a unique constraint on this source. Call once for each unique
713             constraint.
714              
715             # For UNIQUE (column1, column2)
716             __PACKAGE__->add_unique_constraint(
717             constraint_name => [ qw/column1 column2/ ],
718             );
719              
720             Alternatively, you can specify only the columns:
721              
722             __PACKAGE__->add_unique_constraint([ qw/column1 column2/ ]);
723              
724             This will result in a unique constraint named
725             C, where C is replaced with the table
726             name.
727              
728             Unique constraints are used, for example, when you pass the constraint
729             name as the C attribute to L. Then
730             only columns in the constraint are searched.
731              
732             Throws an error if any of the given column names do not yet exist on
733             the result source.
734              
735             =cut
736              
737             sub add_unique_constraint {
738 19561     19561 1 559855 my $self = shift;
739              
740 19561 100       37646 if (@_ > 2) {
741 1         8 $self->throw_exception(
742             'add_unique_constraint() does not accept multiple constraints, use '
743             . 'add_unique_constraints() instead'
744             );
745             }
746              
747 19560         20000 my $cols = pop @_;
748 19560 50       40337 if (ref $cols ne 'ARRAY') {
749 0   0     0 $self->throw_exception (
750             'Expecting an arrayref of constraint columns, got ' . ($cols||'NOTHING')
751             );
752             }
753              
754 19560         20850 my $name = shift @_;
755              
756 19560   66     44079 $name ||= $self->name_unique_constraint($cols);
757              
758 19560         25490 foreach my $col (@$cols) {
759 29023 50       53685 $self->throw_exception("No such column $col on table " . $self->name)
760             unless $self->has_column($col);
761             }
762              
763 19560         44617 my %unique_constraints = $self->unique_constraints;
764 19560         133468 $unique_constraints{$name} = $cols;
765 19560         70704 $self->_unique_constraints(\%unique_constraints);
766             }
767              
768             =head2 add_unique_constraints
769              
770             =over 4
771              
772             =item Arguments: @constraints
773              
774             =item Return Value: not defined
775              
776             =back
777              
778             Declare multiple unique constraints on this source.
779              
780             __PACKAGE__->add_unique_constraints(
781             constraint_name1 => [ qw/column1 column2/ ],
782             constraint_name2 => [ qw/column2 column3/ ],
783             );
784              
785             Alternatively, you can specify only the columns:
786              
787             __PACKAGE__->add_unique_constraints(
788             [ qw/column1 column2/ ],
789             [ qw/column3 column4/ ]
790             );
791              
792             This will result in unique constraints named C and
793             C, where C is replaced with the table name.
794              
795             Throws an error if any of the given column names do not yet exist on
796             the result source.
797              
798             See also L.
799              
800             =cut
801              
802             sub add_unique_constraints {
803 650     650 1 191811 my $self = shift;
804 650         1461 my @constraints = @_;
805              
806 650 100 66 975   4752 if ( !(@constraints % 2) && first { ref $_ ne 'ARRAY' } @constraints ) {
  975         3259  
807             # with constraint name
808 325         1970 while (my ($name, $constraint) = splice @constraints, 0, 2) {
809 650         1328 $self->add_unique_constraint($name => $constraint);
810             }
811             }
812             else {
813             # no constraint name
814 325         873 foreach my $constraint (@constraints) {
815 650         1350 $self->add_unique_constraint($constraint);
816             }
817             }
818             }
819              
820             =head2 name_unique_constraint
821              
822             =over 4
823              
824             =item Arguments: \@colnames
825              
826             =item Return Value: Constraint name
827              
828             =back
829              
830             $source->table('mytable');
831             $source->name_unique_constraint(['col1', 'col2']);
832             # returns
833             'mytable_col1_col2'
834              
835             Return a name for a unique constraint containing the specified
836             columns. The name is created by joining the table name and each column
837             name, using an underscore character.
838              
839             For example, a constraint on a table named C containing the columns
840             C and C would result in a constraint name of C<cd_artist_title>. </td> </tr> <tr> <td class="h" > <a name="841">841</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="842">842</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This is used by L</add_unique_constraint> if you do not specify the </td> </tr> <tr> <td class="h" > <a name="843">843</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> optional constraint name. </td> </tr> <tr> <td class="h" > <a name="844">844</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="845">845</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =cut </td> </tr> <tr> <td class="h" > <a name="846">846</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="847">847</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub name_unique_constraint { </td> </tr> <tr> <td class="h" > <a name="848">848</a> </td> <td class="c3" > 3387 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#848-1"> 3387 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#848-1"> 1 </a> </td> <td > 9114 </td> <td class="s"> my ($self, $cols) = @_; </td> </tr> <tr> <td class="h" > <a name="849">849</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="850">850</a> </td> <td class="c3" > 3387 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 13924 </td> <td class="s"> my $name = $self->name; </td> </tr> <tr> <td class="h" > <a name="851">851</a> </td> <td class="c3" > 3387 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#851-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 8579 </td> <td class="s"> $name = $$name if (ref $name eq 'SCALAR'); </td> </tr> <tr> <td class="h" > <a name="852">852</a> </td> <td class="c3" > 3387 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 10139 </td> <td class="s"> $name =~ s/ ^ [^\.]+ \. //x; # strip possible schema qualifier </td> </tr> <tr> <td class="h" > <a name="853">853</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="854">854</a> </td> <td class="c3" > 3387 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 13974 </td> <td class="s"> return join '_', $name, @$cols; </td> </tr> <tr> <td class="h" > <a name="855">855</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="856">856</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="857">857</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head2 unique_constraints </td> </tr> <tr> <td class="h" > <a name="858">858</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="859">859</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =over 4 </td> </tr> <tr> <td class="h" > <a name="860">860</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="861">861</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Arguments: none </td> </tr> <tr> <td class="h" > <a name="862">862</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="863">863</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Return Value: Hash of unique constraint data </td> </tr> <tr> <td class="h" > <a name="864">864</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="865">865</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =back </td> </tr> <tr> <td class="h" > <a name="866">866</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="867">867</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $source->unique_constraints(); </td> </tr> <tr> <td class="h" > <a name="868">868</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="869">869</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Read-only accessor which returns a hash of unique constraints on this </td> </tr> <tr> <td class="h" > <a name="870">870</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> source. </td> </tr> <tr> <td class="h" > <a name="871">871</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="872">872</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> The hash is keyed by constraint name, and contains an arrayref of </td> </tr> <tr> <td class="h" > <a name="873">873</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> column names as values. </td> </tr> <tr> <td class="h" > <a name="874">874</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="875">875</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =cut </td> </tr> <tr> <td class="h" > <a name="876">876</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="877">877</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub unique_constraints { </td> </tr> <tr> <td class="h" > <a name="878">878</a> </td> <td class="c3" > 29577 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#878-1"> 100 </a> </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#878-1"> 29577 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#878-1"> 1 </a> </td> <td > 25090 </td> <td class="s"> return %{shift->_unique_constraints||{}}; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 29577 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 179662 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="879">879</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="880">880</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="881">881</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head2 unique_constraint_names </td> </tr> <tr> <td class="h" > <a name="882">882</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="883">883</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =over 4 </td> </tr> <tr> <td class="h" > <a name="884">884</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="885">885</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Arguments: none </td> </tr> <tr> <td class="h" > <a name="886">886</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="887">887</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Return Value: Unique constraint names </td> </tr> <tr> <td class="h" > <a name="888">888</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="889">889</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =back </td> </tr> <tr> <td class="h" > <a name="890">890</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="891">891</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $source->unique_constraint_names(); </td> </tr> <tr> <td class="h" > <a name="892">892</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="893">893</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Returns the list of unique constraint names defined on this source. </td> </tr> <tr> <td class="h" > <a name="894">894</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="895">895</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =cut </td> </tr> <tr> <td class="h" > <a name="896">896</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="897">897</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub unique_constraint_names { </td> </tr> <tr> <td class="h" > <a name="898">898</a> </td> <td class="c3" > 1144 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#898-1"> 1144 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#898-1"> 1 </a> </td> <td > 1750 </td> <td class="s"> my ($self) = @_; </td> </tr> <tr> <td class="h" > <a name="899">899</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="900">900</a> </td> <td class="c3" > 1144 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 3555 </td> <td class="s"> my %unique_constraints = $self->unique_constraints; </td> </tr> <tr> <td class="h" > <a name="901">901</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="902">902</a> </td> <td class="c3" > 1144 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 7653 </td> <td class="s"> return keys %unique_constraints; </td> </tr> <tr> <td class="h" > <a name="903">903</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="904">904</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="905">905</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head2 unique_constraint_columns </td> </tr> <tr> <td class="h" > <a name="906">906</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="907">907</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =over 4 </td> </tr> <tr> <td class="h" > <a name="908">908</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="909">909</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Arguments: $constraintname </td> </tr> <tr> <td class="h" > <a name="910">910</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="911">911</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Return Value: List of constraint columns </td> </tr> <tr> <td class="h" > <a name="912">912</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="913">913</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =back </td> </tr> <tr> <td class="h" > <a name="914">914</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="915">915</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $source->unique_constraint_columns('myconstraint'); </td> </tr> <tr> <td class="h" > <a name="916">916</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="917">917</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Returns the list of columns that make up the specified unique constraint. </td> </tr> <tr> <td class="h" > <a name="918">918</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="919">919</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =cut </td> </tr> <tr> <td class="h" > <a name="920">920</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="921">921</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub unique_constraint_columns { </td> </tr> <tr> <td class="h" > <a name="922">922</a> </td> <td class="c3" > 7226 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#922-1"> 7226 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#922-1"> 1 </a> </td> <td > 8862 </td> <td class="s"> my ($self, $constraint_name) = @_; </td> </tr> <tr> <td class="h" > <a name="923">923</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="924">924</a> </td> <td class="c3" > 7226 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 12258 </td> <td class="s"> my %unique_constraints = $self->unique_constraints; </td> </tr> <tr> <td class="h" > <a name="925">925</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="926">926</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->throw_exception( </td> </tr> <tr> <td class="h" > <a name="927">927</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "Unknown unique constraint $constraint_name on '" . $self->name . "'" </td> </tr> <tr> <td class="h" > <a name="928">928</a> </td> <td class="c3" > 7226 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#928-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 16055 </td> <td class="s"> ) unless exists $unique_constraints{$constraint_name}; </td> </tr> <tr> <td class="h" > <a name="929">929</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="930">930</a> </td> <td class="c3" > 7226 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 5830 </td> <td class="s"> return @{ $unique_constraints{$constraint_name} }; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 7226 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 31215 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="931">931</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="932">932</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="933">933</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head2 sqlt_deploy_callback </td> </tr> <tr> <td class="h" > <a name="934">934</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="935">935</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =over </td> </tr> <tr> <td class="h" > <a name="936">936</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="937">937</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Arguments: $callback_name | \&callback_code </td> </tr> <tr> <td class="h" > <a name="938">938</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="939">939</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Return Value: $callback_name | \&callback_code </td> </tr> <tr> <td class="h" > <a name="940">940</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="941">941</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =back </td> </tr> <tr> <td class="h" > <a name="942">942</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="943">943</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> __PACKAGE__->sqlt_deploy_callback('mycallbackmethod'); </td> </tr> <tr> <td class="h" > <a name="944">944</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="945">945</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> or </td> </tr> <tr> <td class="h" > <a name="946">946</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="947">947</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> __PACKAGE__->sqlt_deploy_callback(sub { </td> </tr> <tr> <td class="h" > <a name="948">948</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my ($source_instance, $sqlt_table) = @_; </td> </tr> <tr> <td class="h" > <a name="949">949</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ... </td> </tr> <tr> <td class="h" > <a name="950">950</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } ); </td> </tr> <tr> <td class="h" > <a name="951">951</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="952">952</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> An accessor to set a callback to be called during deployment of </td> </tr> <tr> <td class="h" > <a name="953">953</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the schema via L<DBIx::Class::Schema/create_ddl_dir> or </td> </tr> <tr> <td class="h" > <a name="954">954</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> L<DBIx::Class::Schema/deploy>. </td> </tr> <tr> <td class="h" > <a name="955">955</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="956">956</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> The callback can be set as either a code reference or the name of a </td> </tr> <tr> <td class="h" > <a name="957">957</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> method in the current result class. </td> </tr> <tr> <td class="h" > <a name="958">958</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="959">959</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Defaults to L</default_sqlt_deploy_hook>. </td> </tr> <tr> <td class="h" > <a name="960">960</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="961">961</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Your callback will be passed the $source object representing the </td> </tr> <tr> <td class="h" > <a name="962">962</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ResultSource instance being deployed, and the </td> </tr> <tr> <td class="h" > <a name="963">963</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> L<SQL::Translator::Schema::Table> object being created from it. The </td> </tr> <tr> <td class="h" > <a name="964">964</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> callback can be used to manipulate the table object or add your own </td> </tr> <tr> <td class="h" > <a name="965">965</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> customised indexes. If you need to manipulate a non-table object, use </td> </tr> <tr> <td class="h" > <a name="966">966</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the L<DBIx::Class::Schema/sqlt_deploy_hook>. </td> </tr> <tr> <td class="h" > <a name="967">967</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="968">968</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> See L<DBIx::Class::Manual::Cookbook/Adding Indexes And Functions To </td> </tr> <tr> <td class="h" > <a name="969">969</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Your SQL> for examples. </td> </tr> <tr> <td class="h" > <a name="970">970</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="971">971</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This sqlt deployment callback can only be used to manipulate </td> </tr> <tr> <td class="h" > <a name="972">972</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> SQL::Translator objects as they get turned into SQL. To execute </td> </tr> <tr> <td class="h" > <a name="973">973</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> post-deploy statements which SQL::Translator does not currently </td> </tr> <tr> <td class="h" > <a name="974">974</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> handle, override L<DBIx::Class::Schema/deploy> in your Schema class </td> </tr> <tr> <td class="h" > <a name="975">975</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> and call L<dbh_do|DBIx::Class::Storage::DBI/dbh_do>. </td> </tr> <tr> <td class="h" > <a name="976">976</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="977">977</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head2 default_sqlt_deploy_hook </td> </tr> <tr> <td class="h" > <a name="978">978</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="979">979</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This is the default deploy hook implementation which checks if your </td> </tr> <tr> <td class="h" > <a name="980">980</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> current Result class has a C<sqlt_deploy_hook> method, and if present </td> </tr> <tr> <td class="h" > <a name="981">981</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> invokes it B<on the Result class directly>. This is to preserve the </td> </tr> <tr> <td class="h" > <a name="982">982</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> semantics of C<sqlt_deploy_hook> which was originally designed to expect </td> </tr> <tr> <td class="h" > <a name="983">983</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the Result class name and the </td> </tr> <tr> <td class="h" > <a name="984">984</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> L<$sqlt_table instance|SQL::Translator::Schema::Table> of the table being </td> </tr> <tr> <td class="h" > <a name="985">985</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> deployed. </td> </tr> <tr> <td class="h" > <a name="986">986</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="987">987</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =cut </td> </tr> <tr> <td class="h" > <a name="988">988</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="989">989</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub default_sqlt_deploy_hook { </td> </tr> <tr> <td class="h" > <a name="990">990</a> </td> <td class="c0" > <a href="#992"> 0 </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#990-1"> 0 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#990-1"> 1 </a> </td> <td > 0 </td> <td class="s"> my $self = shift; </td> </tr> <tr> <td class="h" > <a name="991">991</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="992">992</a> </td> <td class="c0" > <a href="#994"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> my $class = $self->result_class; </td> </tr> <tr> <td class="h" > <a name="993">993</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="994">994</a> </td> <td class="c0" > <a href="#995"> 0 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#994-1"> 0 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#994-1"> 0 </a> </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> if ($class and $class->can('sqlt_deploy_hook')) { </td> </tr> <tr> <td class="h" > <a name="995">995</a> </td> <td class="c0" > <a href="#1000"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> $class->sqlt_deploy_hook(@_); </td> </tr> <tr> <td class="h" > <a name="996">996</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="997">997</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="998">998</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="999">999</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub _invoke_sqlt_deploy_hook { </td> </tr> <tr> <td class="h" > <a name="1000">1000</a> </td> <td class="c0" > <a href="#1001"> 0 </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1000-1"> 0 </a> </td> <td >   </td> <td > 0 </td> <td class="s"> my $self = shift; </td> </tr> <tr> <td class="h" > <a name="1001">1001</a> </td> <td class="c0" > <a href="#1002"> 0 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1001-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> if ( my $hook = $self->sqlt_deploy_callback) { </td> </tr> <tr> <td class="h" > <a name="1002">1002</a> </td> <td class="c0" > <a href="#1194"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> $self->$hook(@_); </td> </tr> <tr> <td class="h" > <a name="1003">1003</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1004">1004</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1005">1005</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1006">1006</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head2 result_class </td> </tr> <tr> <td class="h" > <a name="1007">1007</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1008">1008</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =over 4 </td> </tr> <tr> <td class="h" > <a name="1009">1009</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1010">1010</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Arguments: $classname </td> </tr> <tr> <td class="h" > <a name="1011">1011</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1012">1012</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Return Value: $classname </td> </tr> <tr> <td class="h" > <a name="1013">1013</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1014">1014</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =back </td> </tr> <tr> <td class="h" > <a name="1015">1015</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1016">1016</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> use My::Schema::ResultClass::Inflator; </td> </tr> <tr> <td class="h" > <a name="1017">1017</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ... </td> </tr> <tr> <td class="h" > <a name="1018">1018</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1019">1019</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> use My::Schema::Artist; </td> </tr> <tr> <td class="h" > <a name="1020">1020</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ... </td> </tr> <tr> <td class="h" > <a name="1021">1021</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> __PACKAGE__->result_class('My::Schema::ResultClass::Inflator'); </td> </tr> <tr> <td class="h" > <a name="1022">1022</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1023">1023</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Set the default result class for this source. You can use this to create </td> </tr> <tr> <td class="h" > <a name="1024">1024</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> and use your own result inflator. See L<DBIx::Class::ResultSet/result_class> </td> </tr> <tr> <td class="h" > <a name="1025">1025</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> for more details. </td> </tr> <tr> <td class="h" > <a name="1026">1026</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1027">1027</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Please note that setting this to something like </td> </tr> <tr> <td class="h" > <a name="1028">1028</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> L<DBIx::Class::ResultClass::HashRefInflator> will make every result unblessed </td> </tr> <tr> <td class="h" > <a name="1029">1029</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> and make life more difficult. Inflators like those are better suited to </td> </tr> <tr> <td class="h" > <a name="1030">1030</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> temporary usage via L<DBIx::Class::ResultSet/result_class>. </td> </tr> <tr> <td class="h" > <a name="1031">1031</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1032">1032</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head2 resultset </td> </tr> <tr> <td class="h" > <a name="1033">1033</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1034">1034</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =over 4 </td> </tr> <tr> <td class="h" > <a name="1035">1035</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1036">1036</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Arguments: none </td> </tr> <tr> <td class="h" > <a name="1037">1037</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1038">1038</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Return Value: L<$resultset|DBIx::Class::ResultSet> </td> </tr> <tr> <td class="h" > <a name="1039">1039</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1040">1040</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =back </td> </tr> <tr> <td class="h" > <a name="1041">1041</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1042">1042</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Returns a resultset for the given source. This will initially be created </td> </tr> <tr> <td class="h" > <a name="1043">1043</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> on demand by calling </td> </tr> <tr> <td class="h" > <a name="1044">1044</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1045">1045</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->resultset_class->new($self, $self->resultset_attributes) </td> </tr> <tr> <td class="h" > <a name="1046">1046</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1047">1047</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> but is cached from then on unless resultset_class changes. </td> </tr> <tr> <td class="h" > <a name="1048">1048</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1049">1049</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head2 resultset_class </td> </tr> <tr> <td class="h" > <a name="1050">1050</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1051">1051</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =over 4 </td> </tr> <tr> <td class="h" > <a name="1052">1052</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1053">1053</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Arguments: $classname </td> </tr> <tr> <td class="h" > <a name="1054">1054</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1055">1055</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Return Value: $classname </td> </tr> <tr> <td class="h" > <a name="1056">1056</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1057">1057</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =back </td> </tr> <tr> <td class="h" > <a name="1058">1058</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1059">1059</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> package My::Schema::ResultSet::Artist; </td> </tr> <tr> <td class="h" > <a name="1060">1060</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> use base 'DBIx::Class::ResultSet'; </td> </tr> <tr> <td class="h" > <a name="1061">1061</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ... </td> </tr> <tr> <td class="h" > <a name="1062">1062</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1063">1063</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # In the result class </td> </tr> <tr> <td class="h" > <a name="1064">1064</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> __PACKAGE__->resultset_class('My::Schema::ResultSet::Artist'); </td> </tr> <tr> <td class="h" > <a name="1065">1065</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1066">1066</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Or in code </td> </tr> <tr> <td class="h" > <a name="1067">1067</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $source->resultset_class('My::Schema::ResultSet::Artist'); </td> </tr> <tr> <td class="h" > <a name="1068">1068</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1069">1069</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Set the class of the resultset. This is useful if you want to create your </td> </tr> <tr> <td class="h" > <a name="1070">1070</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> own resultset methods. Create your own class derived from </td> </tr> <tr> <td class="h" > <a name="1071">1071</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> L<DBIx::Class::ResultSet>, and set it here. If called with no arguments, </td> </tr> <tr> <td class="h" > <a name="1072">1072</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> this method returns the name of the existing resultset class, if one </td> </tr> <tr> <td class="h" > <a name="1073">1073</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> exists. </td> </tr> <tr> <td class="h" > <a name="1074">1074</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1075">1075</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head2 resultset_attributes </td> </tr> <tr> <td class="h" > <a name="1076">1076</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1077">1077</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =over 4 </td> </tr> <tr> <td class="h" > <a name="1078">1078</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1079">1079</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Arguments: L<\%attrs|DBIx::Class::ResultSet/ATTRIBUTES> </td> </tr> <tr> <td class="h" > <a name="1080">1080</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1081">1081</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Return Value: L<\%attrs|DBIx::Class::ResultSet/ATTRIBUTES> </td> </tr> <tr> <td class="h" > <a name="1082">1082</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1083">1083</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =back </td> </tr> <tr> <td class="h" > <a name="1084">1084</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1085">1085</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # In the result class </td> </tr> <tr> <td class="h" > <a name="1086">1086</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> __PACKAGE__->resultset_attributes({ order_by => [ 'id' ] }); </td> </tr> <tr> <td class="h" > <a name="1087">1087</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1088">1088</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Or in code </td> </tr> <tr> <td class="h" > <a name="1089">1089</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $source->resultset_attributes({ order_by => [ 'id' ] }); </td> </tr> <tr> <td class="h" > <a name="1090">1090</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1091">1091</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Store a collection of resultset attributes, that will be set on every </td> </tr> <tr> <td class="h" > <a name="1092">1092</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> L<DBIx::Class::ResultSet> produced from this result source. </td> </tr> <tr> <td class="h" > <a name="1093">1093</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1094">1094</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> B<CAVEAT>: C<resultset_attributes> comes with its own set of issues and </td> </tr> <tr> <td class="h" > <a name="1095">1095</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> bugs! While C<resultset_attributes> isn't deprecated per se, its usage is </td> </tr> <tr> <td class="h" > <a name="1096">1096</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> not recommended! </td> </tr> <tr> <td class="h" > <a name="1097">1097</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1098">1098</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Since relationships use attributes to link tables together, the "default" </td> </tr> <tr> <td class="h" > <a name="1099">1099</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> attributes you set may cause unpredictable and undesired behavior. Furthermore, </td> </tr> <tr> <td class="h" > <a name="1100">1100</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the defaults cannot be turned off, so you are stuck with them. </td> </tr> <tr> <td class="h" > <a name="1101">1101</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1102">1102</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> In most cases, what you should actually be using are project-specific methods: </td> </tr> <tr> <td class="h" > <a name="1103">1103</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1104">1104</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> package My::Schema::ResultSet::Artist; </td> </tr> <tr> <td class="h" > <a name="1105">1105</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> use base 'DBIx::Class::ResultSet'; </td> </tr> <tr> <td class="h" > <a name="1106">1106</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ... </td> </tr> <tr> <td class="h" > <a name="1107">1107</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1108">1108</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # BAD IDEA! </td> </tr> <tr> <td class="h" > <a name="1109">1109</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> #__PACKAGE__->resultset_attributes({ prefetch => 'tracks' }); </td> </tr> <tr> <td class="h" > <a name="1110">1110</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1111">1111</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # GOOD IDEA! </td> </tr> <tr> <td class="h" > <a name="1112">1112</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub with_tracks { shift->search({}, { prefetch => 'tracks' }) } </td> </tr> <tr> <td class="h" > <a name="1113">1113</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1114">1114</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # in your code </td> </tr> <tr> <td class="h" > <a name="1115">1115</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $schema->resultset('Artist')->with_tracks->... </td> </tr> <tr> <td class="h" > <a name="1116">1116</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1117">1117</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This gives you the flexibility of not using it when you don't need it. </td> </tr> <tr> <td class="h" > <a name="1118">1118</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1119">1119</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> For more complex situations, another solution would be to use a virtual view </td> </tr> <tr> <td class="h" > <a name="1120">1120</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> via L<DBIx::Class::ResultSource::View>. </td> </tr> <tr> <td class="h" > <a name="1121">1121</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1122">1122</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =cut </td> </tr> <tr> <td class="h" > <a name="1123">1123</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1124">1124</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub resultset { </td> </tr> <tr> <td class="h" > <a name="1125">1125</a> </td> <td class="c3" > 14683 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1125-1"> 14683 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1125-1"> 1 </a> </td> <td > 18766 </td> <td class="s"> my $self = shift; </td> </tr> <tr> <td class="h" > <a name="1126">1126</a> </td> <td class="c3" > 14683 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1126-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 31809 </td> <td class="s"> $self->throw_exception( </td> </tr> <tr> <td class="h" > <a name="1127">1127</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'resultset does not take any arguments. If you want another resultset, '. </td> </tr> <tr> <td class="h" > <a name="1128">1128</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'call it on the schema instead.' </td> </tr> <tr> <td class="h" > <a name="1129">1129</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ) if scalar @_; </td> </tr> <tr> <td class="h" > <a name="1130">1130</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1131">1131</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->resultset_class->new( </td> </tr> <tr> <td class="h" > <a name="1132">1132</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self, </td> </tr> <tr> <td class="h" > <a name="1133">1133</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="1134">1134</a> </td> <td class="c3" > 14683 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1134-1"> 14683 </a> </td> <td >   </td> <td > 368650 </td> <td class="s"> try { %{$self->schema->default_resultset_attributes} }, </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 14683 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 35950 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1135">1135</a> </td> <td class="c3" > 14683 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 292392 </td> <td class="s"> %{$self->{resultset_attributes}}, </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 14683 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 757521 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1136">1136</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> }, </td> </tr> <tr> <td class="h" > <a name="1137">1137</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ); </td> </tr> <tr> <td class="h" > <a name="1138">1138</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1139">1139</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1140">1140</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head2 name </td> </tr> <tr> <td class="h" > <a name="1141">1141</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1142">1142</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =over 4 </td> </tr> <tr> <td class="h" > <a name="1143">1143</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1144">1144</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Arguments: none </td> </tr> <tr> <td class="h" > <a name="1145">1145</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1146">1146</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Result value: $name </td> </tr> <tr> <td class="h" > <a name="1147">1147</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1148">1148</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =back </td> </tr> <tr> <td class="h" > <a name="1149">1149</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1150">1150</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Returns the name of the result source, which will typically be the table </td> </tr> <tr> <td class="h" > <a name="1151">1151</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> name. This may be a scalar reference if the result source has a non-standard </td> </tr> <tr> <td class="h" > <a name="1152">1152</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> name. </td> </tr> <tr> <td class="h" > <a name="1153">1153</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1154">1154</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head2 source_name </td> </tr> <tr> <td class="h" > <a name="1155">1155</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1156">1156</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =over 4 </td> </tr> <tr> <td class="h" > <a name="1157">1157</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1158">1158</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Arguments: $source_name </td> </tr> <tr> <td class="h" > <a name="1159">1159</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1160">1160</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Result value: $source_name </td> </tr> <tr> <td class="h" > <a name="1161">1161</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1162">1162</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =back </td> </tr> <tr> <td class="h" > <a name="1163">1163</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1164">1164</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Set an alternate name for the result source when it is loaded into a schema. </td> </tr> <tr> <td class="h" > <a name="1165">1165</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This is useful if you want to refer to a result source by a name other than </td> </tr> <tr> <td class="h" > <a name="1166">1166</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> its class name. </td> </tr> <tr> <td class="h" > <a name="1167">1167</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1168">1168</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> package ArchivedBooks; </td> </tr> <tr> <td class="h" > <a name="1169">1169</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> use base qw/DBIx::Class/; </td> </tr> <tr> <td class="h" > <a name="1170">1170</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> __PACKAGE__->table('books_archive'); </td> </tr> <tr> <td class="h" > <a name="1171">1171</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> __PACKAGE__->source_name('Books'); </td> </tr> <tr> <td class="h" > <a name="1172">1172</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1173">1173</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # from your schema... </td> </tr> <tr> <td class="h" > <a name="1174">1174</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $schema->resultset('Books')->find(1); </td> </tr> <tr> <td class="h" > <a name="1175">1175</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1176">1176</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head2 from </td> </tr> <tr> <td class="h" > <a name="1177">1177</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1178">1178</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =over 4 </td> </tr> <tr> <td class="h" > <a name="1179">1179</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1180">1180</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Arguments: none </td> </tr> <tr> <td class="h" > <a name="1181">1181</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1182">1182</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Return Value: FROM clause </td> </tr> <tr> <td class="h" > <a name="1183">1183</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1184">1184</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =back </td> </tr> <tr> <td class="h" > <a name="1185">1185</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1186">1186</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my $from_clause = $source->from(); </td> </tr> <tr> <td class="h" > <a name="1187">1187</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1188">1188</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Returns an expression of the source to be supplied to storage to specify </td> </tr> <tr> <td class="h" > <a name="1189">1189</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> retrieval from this source. In the case of a database, the required FROM </td> </tr> <tr> <td class="h" > <a name="1190">1190</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> clause contents. </td> </tr> <tr> <td class="h" > <a name="1191">1191</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1192">1192</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =cut </td> </tr> <tr> <td class="h" > <a name="1193">1193</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1194">1194</a> </td> <td class="c0" > <a href="#1366"> 0 </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1194-1"> 0 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1194-1"> 1 </a> </td> <td > 0 </td> <td class="s"> sub from { die 'Virtual method!' } </td> </tr> <tr> <td class="h" > <a name="1195">1195</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1196">1196</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head2 source_info </td> </tr> <tr> <td class="h" > <a name="1197">1197</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1198">1198</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Stores a hashref of per-source metadata. No specific key names </td> </tr> <tr> <td class="h" > <a name="1199">1199</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> have yet been standardized, the examples below are purely hypothetical </td> </tr> <tr> <td class="h" > <a name="1200">1200</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> and don't actually accomplish anything on their own: </td> </tr> <tr> <td class="h" > <a name="1201">1201</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1202">1202</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> __PACKAGE__->source_info({ </td> </tr> <tr> <td class="h" > <a name="1203">1203</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "_tablespace" => 'fast_disk_array_3', </td> </tr> <tr> <td class="h" > <a name="1204">1204</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "_engine" => 'InnoDB', </td> </tr> <tr> <td class="h" > <a name="1205">1205</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> }); </td> </tr> <tr> <td class="h" > <a name="1206">1206</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1207">1207</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head2 schema </td> </tr> <tr> <td class="h" > <a name="1208">1208</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1209">1209</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =over 4 </td> </tr> <tr> <td class="h" > <a name="1210">1210</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1211">1211</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Arguments: L<$schema?|DBIx::Class::Schema> </td> </tr> <tr> <td class="h" > <a name="1212">1212</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1213">1213</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Return Value: L<$schema|DBIx::Class::Schema> </td> </tr> <tr> <td class="h" > <a name="1214">1214</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1215">1215</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =back </td> </tr> <tr> <td class="h" > <a name="1216">1216</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1217">1217</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my $schema = $source->schema(); </td> </tr> <tr> <td class="h" > <a name="1218">1218</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1219">1219</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Sets and/or returns the L<DBIx::Class::Schema> object to which this </td> </tr> <tr> <td class="h" > <a name="1220">1220</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> result source instance has been attached to. </td> </tr> <tr> <td class="h" > <a name="1221">1221</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1222">1222</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =cut </td> </tr> <tr> <td class="h" > <a name="1223">1223</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1224">1224</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub schema { </td> </tr> <tr> <td class="h" > <a name="1225">1225</a> </td> <td class="c3" > 144158 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1225-1"> 100 </a> </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1225-1"> 144158 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1225-1"> 1 </a> </td> <td > 250191 </td> <td class="s"> if (@_ > 1) { </td> </tr> <tr> <td class="h" > <a name="1226">1226</a> </td> <td class="c3" > 72398 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 119533 </td> <td class="s"> $_[0]->{schema} = $_[1]; </td> </tr> <tr> <td class="h" > <a name="1227">1227</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1228">1228</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> else { </td> </tr> <tr> <td class="h" > <a name="1229">1229</a> </td> <td class="c3" > 71760 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1229-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 1378382 </td> <td class="s"> $_[0]->{schema} || do { </td> </tr> <tr> <td class="h" > <a name="1230">1230</a> </td> <td class="c3" > 88 </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1230-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 247 </td> <td class="s"> my $name = $_[0]->{source_name} || '_unnamed_'; </td> </tr> <tr> <td class="h" > <a name="1231">1231</a> </td> <td class="c3" > 88 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 158 </td> <td class="s"> my $err = 'Unable to perform storage-dependent operations with a detached result source ' </td> </tr> <tr> <td class="h" > <a name="1232">1232</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> . "(source '$name' is not associated with a schema)."; </td> </tr> <tr> <td class="h" > <a name="1233">1233</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1234">1234</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $err .= ' You need to use $schema->thaw() or manually set' </td> </tr> <tr> <td class="h" > <a name="1235">1235</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> . ' $DBIx::Class::ResultSourceHandle::thaw_schema while thawing.' </td> </tr> <tr> <td class="h" > <a name="1236">1236</a> </td> <td class="c3" > 88 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1236-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 196 </td> <td class="s"> if $_[0]->{_detached_thaw}; </td> </tr> <tr> <td class="h" > <a name="1237">1237</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1238">1238</a> </td> <td class="c3" > 88 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 273 </td> <td class="s"> DBIx::Class::Exception->throw($err); </td> </tr> <tr> <td class="h" > <a name="1239">1239</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> }; </td> </tr> <tr> <td class="h" > <a name="1240">1240</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1241">1241</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1242">1242</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1243">1243</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head2 storage </td> </tr> <tr> <td class="h" > <a name="1244">1244</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1245">1245</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =over 4 </td> </tr> <tr> <td class="h" > <a name="1246">1246</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1247">1247</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Arguments: none </td> </tr> <tr> <td class="h" > <a name="1248">1248</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1249">1249</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Return Value: L<$storage|DBIx::Class::Storage> </td> </tr> <tr> <td class="h" > <a name="1250">1250</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1251">1251</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =back </td> </tr> <tr> <td class="h" > <a name="1252">1252</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1253">1253</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $source->storage->debug(1); </td> </tr> <tr> <td class="h" > <a name="1254">1254</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1255">1255</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Returns the L<storage handle|DBIx::Class::Storage> for the current schema. </td> </tr> <tr> <td class="h" > <a name="1256">1256</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1257">1257</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =cut </td> </tr> <tr> <td class="h" > <a name="1258">1258</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1259">1259</a> </td> <td class="c3" > 23444 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1259-1"> 23444 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1259-1"> 1 </a> </td> <td > 40594 </td> <td class="s"> sub storage { shift->schema->storage; } </td> </tr> <tr> <td class="h" > <a name="1260">1260</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1261">1261</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head2 add_relationship </td> </tr> <tr> <td class="h" > <a name="1262">1262</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1263">1263</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =over 4 </td> </tr> <tr> <td class="h" > <a name="1264">1264</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1265">1265</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Arguments: $rel_name, $related_source_name, \%cond, \%attrs? </td> </tr> <tr> <td class="h" > <a name="1266">1266</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1267">1267</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Return Value: 1/true if it succeeded </td> </tr> <tr> <td class="h" > <a name="1268">1268</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1269">1269</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =back </td> </tr> <tr> <td class="h" > <a name="1270">1270</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1271">1271</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $source->add_relationship('rel_name', 'related_source', $cond, $attrs); </td> </tr> <tr> <td class="h" > <a name="1272">1272</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1273">1273</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> L<DBIx::Class::Relationship> describes a series of methods which </td> </tr> <tr> <td class="h" > <a name="1274">1274</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> create pre-defined useful types of relationships. Look there first </td> </tr> <tr> <td class="h" > <a name="1275">1275</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> before using this method directly. </td> </tr> <tr> <td class="h" > <a name="1276">1276</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1277">1277</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> The relationship name can be arbitrary, but must be unique for each </td> </tr> <tr> <td class="h" > <a name="1278">1278</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> relationship attached to this result source. 'related_source' should </td> </tr> <tr> <td class="h" > <a name="1279">1279</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> be the name with which the related result source was registered with </td> </tr> <tr> <td class="h" > <a name="1280">1280</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the current schema. For example: </td> </tr> <tr> <td class="h" > <a name="1281">1281</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1282">1282</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $schema->source('Book')->add_relationship('reviews', 'Review', { </td> </tr> <tr> <td class="h" > <a name="1283">1283</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'foreign.book_id' => 'self.id', </td> </tr> <tr> <td class="h" > <a name="1284">1284</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> }); </td> </tr> <tr> <td class="h" > <a name="1285">1285</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1286">1286</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> The condition C<$cond> needs to be an L<SQL::Abstract>-style </td> </tr> <tr> <td class="h" > <a name="1287">1287</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> representation of the join between the tables. For example, if you're </td> </tr> <tr> <td class="h" > <a name="1288">1288</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> creating a relation from Author to Book, </td> </tr> <tr> <td class="h" > <a name="1289">1289</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1290">1290</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { 'foreign.author_id' => 'self.id' } </td> </tr> <tr> <td class="h" > <a name="1291">1291</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1292">1292</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> will result in the JOIN clause </td> </tr> <tr> <td class="h" > <a name="1293">1293</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1294">1294</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> author me JOIN book foreign ON foreign.author_id = me.id </td> </tr> <tr> <td class="h" > <a name="1295">1295</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1296">1296</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> You can specify as many foreign => self mappings as necessary. </td> </tr> <tr> <td class="h" > <a name="1297">1297</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1298">1298</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Valid attributes are as follows: </td> </tr> <tr> <td class="h" > <a name="1299">1299</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1300">1300</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =over 4 </td> </tr> <tr> <td class="h" > <a name="1301">1301</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1302">1302</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item join_type </td> </tr> <tr> <td class="h" > <a name="1303">1303</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1304">1304</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Explicitly specifies the type of join to use in the relationship. Any </td> </tr> <tr> <td class="h" > <a name="1305">1305</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> SQL join type is valid, e.g. C<LEFT> or C<RIGHT>. It will be placed in </td> </tr> <tr> <td class="h" > <a name="1306">1306</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the SQL command immediately before C<JOIN>. </td> </tr> <tr> <td class="h" > <a name="1307">1307</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1308">1308</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item proxy </td> </tr> <tr> <td class="h" > <a name="1309">1309</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1310">1310</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> An arrayref containing a list of accessors in the foreign class to proxy in </td> </tr> <tr> <td class="h" > <a name="1311">1311</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the main class. If, for example, you do the following: </td> </tr> <tr> <td class="h" > <a name="1312">1312</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1313">1313</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> CD->might_have(liner_notes => 'LinerNotes', undef, { </td> </tr> <tr> <td class="h" > <a name="1314">1314</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> proxy => [ qw/notes/ ], </td> </tr> <tr> <td class="h" > <a name="1315">1315</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> }); </td> </tr> <tr> <td class="h" > <a name="1316">1316</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1317">1317</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Then, assuming LinerNotes has an accessor named notes, you can do: </td> </tr> <tr> <td class="h" > <a name="1318">1318</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1319">1319</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my $cd = CD->find(1); </td> </tr> <tr> <td class="h" > <a name="1320">1320</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # set notes -- LinerNotes object is created if it doesn't exist </td> </tr> <tr> <td class="h" > <a name="1321">1321</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $cd->notes('Notes go here'); </td> </tr> <tr> <td class="h" > <a name="1322">1322</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1323">1323</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item accessor </td> </tr> <tr> <td class="h" > <a name="1324">1324</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1325">1325</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Specifies the type of accessor that should be created for the </td> </tr> <tr> <td class="h" > <a name="1326">1326</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> relationship. Valid values are C<single> (for when there is only a single </td> </tr> <tr> <td class="h" > <a name="1327">1327</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> related object), C<multi> (when there can be many), and C<filter> (for </td> </tr> <tr> <td class="h" > <a name="1328">1328</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> when there is a single related object, but you also want the relationship </td> </tr> <tr> <td class="h" > <a name="1329">1329</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> accessor to double as a column accessor). For C<multi> accessors, an </td> </tr> <tr> <td class="h" > <a name="1330">1330</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> add_to_* method is also created, which calls C<create_related> for the </td> </tr> <tr> <td class="h" > <a name="1331">1331</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> relationship. </td> </tr> <tr> <td class="h" > <a name="1332">1332</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1333">1333</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =back </td> </tr> <tr> <td class="h" > <a name="1334">1334</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1335">1335</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Throws an exception if the condition is improperly supplied, or cannot </td> </tr> <tr> <td class="h" > <a name="1336">1336</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> be resolved. </td> </tr> <tr> <td class="h" > <a name="1337">1337</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1338">1338</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =cut </td> </tr> <tr> <td class="h" > <a name="1339">1339</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1340">1340</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub add_relationship { </td> </tr> <tr> <td class="h" > <a name="1341">1341</a> </td> <td class="c3" > 29096 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1341-1"> 29096 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1341-1"> 1 </a> </td> <td > 40091 </td> <td class="s"> my ($self, $rel, $f_source_name, $cond, $attrs) = @_; </td> </tr> <tr> <td class="h" > <a name="1342">1342</a> </td> <td class="c3" > 29096 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1342-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 54081 </td> <td class="s"> $self->throw_exception("Can't create relationship without join condition") </td> </tr> <tr> <td class="h" > <a name="1343">1343</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> unless $cond; </td> </tr> <tr> <td class="h" > <a name="1344">1344</a> </td> <td class="c3" > 29095 </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1344-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 48562 </td> <td class="s"> $attrs ||= {}; </td> </tr> <tr> <td class="h" > <a name="1345">1345</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1346">1346</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Check foreign and self are right in cond </td> </tr> <tr> <td class="h" > <a name="1347">1347</a> </td> <td class="c3" > 29095 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1347-1"> 100 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1347-1"> 50 </a> </td> <td >   </td> <td >   </td> <td > 80521 </td> <td class="s"> if ( (ref $cond ||'') eq 'HASH') { </td> </tr> <tr> <td class="h" > <a name="1348">1348</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $_ =~ /^foreign\./ or $self->throw_exception("Malformed relationship condition key '$_': must be prefixed with 'foreign.'") </td> </tr> <tr> <td class="h" > <a name="1349">1349</a> </td> <td class="c3" > 24081 </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1349-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 112510 </td> <td class="s"> for keys %$cond; </td> </tr> <tr> <td class="h" > <a name="1350">1350</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1351">1351</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $_ =~ /^self\./ or $self->throw_exception("Malformed relationship condition value '$_': must be prefixed with 'self.'") </td> </tr> <tr> <td class="h" > <a name="1352">1352</a> </td> <td class="c3" > 24078 </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1352-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 89357 </td> <td class="s"> for values %$cond; </td> </tr> <tr> <td class="h" > <a name="1353">1353</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1354">1354</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1355">1355</a> </td> <td class="c3" > 29088 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 27164 </td> <td class="s"> my %rels = %{ $self->_relationships }; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 29088 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 142623 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1356">1356</a> </td> <td class="c3" > 29088 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 233404 </td> <td class="s"> $rels{$rel} = { class => $f_source_name, </td> </tr> <tr> <td class="h" > <a name="1357">1357</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> source => $f_source_name, </td> </tr> <tr> <td class="h" > <a name="1358">1358</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> cond => $cond, </td> </tr> <tr> <td class="h" > <a name="1359">1359</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> attrs => $attrs }; </td> </tr> <tr> <td class="h" > <a name="1360">1360</a> </td> <td class="c3" > 29088 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 74681 </td> <td class="s"> $self->_relationships(\%rels); </td> </tr> <tr> <td class="h" > <a name="1361">1361</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1362">1362</a> </td> <td class="c3" > 29088 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 60965 </td> <td class="s"> return $self; </td> </tr> <tr> <td class="h" > <a name="1363">1363</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1364">1364</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # XXX disabled. doesn't work properly currently. skip in tests. </td> </tr> <tr> <td class="h" > <a name="1365">1365</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1366">1366</a> </td> <td class="c0" > <a href="#1367"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> my $f_source = $self->schema->source($f_source_name); </td> </tr> <tr> <td class="h" > <a name="1367">1367</a> </td> <td class="c0" > <a href="#1368"> 0 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1367-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> unless ($f_source) { </td> </tr> <tr> <td class="h" > <a name="1368">1368</a> </td> <td class="c0" > <a href="#1369"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> $self->ensure_class_loaded($f_source_name); </td> </tr> <tr> <td class="h" > <a name="1369">1369</a> </td> <td class="c0" > <a href="#1375"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> $f_source = $f_source_name->result_source; </td> </tr> <tr> <td class="h" > <a name="1370">1370</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> #my $s_class = ref($self->schema); </td> </tr> <tr> <td class="h" > <a name="1371">1371</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> #$f_source_name =~ m/^${s_class}::(.*)$/; </td> </tr> <tr> <td class="h" > <a name="1372">1372</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> #$self->schema->register_class(($1 || $f_source_name), $f_source_name); </td> </tr> <tr> <td class="h" > <a name="1373">1373</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> #$f_source = $self->schema->source($f_source_name); </td> </tr> <tr> <td class="h" > <a name="1374">1374</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1375">1375</a> </td> <td class="c0" > <a href="#1377"> 0 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1375-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> return unless $f_source; # Can't test rel without f_source </td> </tr> <tr> <td class="h" > <a name="1376">1376</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1377">1377</a> </td> <td class="c0" > <a href="#1380"> 0 </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1377-1"> 0 </a> </td> <td >   </td> <td > 0 </td> <td class="s"> try { $self->_resolve_join($rel, 'me', {}, []) } </td> </tr> <tr> <td class="h" > <a name="1378">1378</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> catch { </td> </tr> <tr> <td class="h" > <a name="1379">1379</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # If the resolve failed, back out and re-throw the error </td> </tr> <tr> <td class="h" > <a name="1380">1380</a> </td> <td class="c0" > <a href="#1381"> 0 </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1380-1"> 0 </a> </td> <td >   </td> <td > 0 </td> <td class="s"> delete $rels{$rel}; </td> </tr> <tr> <td class="h" > <a name="1381">1381</a> </td> <td class="c0" > <a href="#1382"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> $self->_relationships(\%rels); </td> </tr> <tr> <td class="h" > <a name="1382">1382</a> </td> <td class="c0" > <a href="#1383"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> $self->throw_exception("Error creating relationship $rel: $_"); </td> </tr> <tr> <td class="h" > <a name="1383">1383</a> </td> <td class="c0" > <a href="#1385"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> }; </td> </tr> <tr> <td class="h" > <a name="1384">1384</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1385">1385</a> </td> <td class="c0" > <a href="#1540"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> 1; </td> </tr> <tr> <td class="h" > <a name="1386">1386</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1387">1387</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1388">1388</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head2 relationships </td> </tr> <tr> <td class="h" > <a name="1389">1389</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1390">1390</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =over 4 </td> </tr> <tr> <td class="h" > <a name="1391">1391</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1392">1392</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Arguments: none </td> </tr> <tr> <td class="h" > <a name="1393">1393</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1394">1394</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Return Value: L<@rel_names|DBIx::Class::Relationship> </td> </tr> <tr> <td class="h" > <a name="1395">1395</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1396">1396</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =back </td> </tr> <tr> <td class="h" > <a name="1397">1397</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1398">1398</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my @rel_names = $source->relationships(); </td> </tr> <tr> <td class="h" > <a name="1399">1399</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1400">1400</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Returns all relationship names for this source. </td> </tr> <tr> <td class="h" > <a name="1401">1401</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1402">1402</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =cut </td> </tr> <tr> <td class="h" > <a name="1403">1403</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1404">1404</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub relationships { </td> </tr> <tr> <td class="h" > <a name="1405">1405</a> </td> <td class="c3" > 9583 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1405-1"> 9583 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1405-1"> 1 </a> </td> <td > 9564 </td> <td class="s"> return keys %{shift->_relationships}; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 9583 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 49865 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1406">1406</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1407">1407</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1408">1408</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head2 relationship_info </td> </tr> <tr> <td class="h" > <a name="1409">1409</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1410">1410</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =over 4 </td> </tr> <tr> <td class="h" > <a name="1411">1411</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1412">1412</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Arguments: L<$rel_name|DBIx::Class::Relationship> </td> </tr> <tr> <td class="h" > <a name="1413">1413</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1414">1414</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Return Value: L<\%rel_data|DBIx::Class::Relationship::Base/add_relationship> </td> </tr> <tr> <td class="h" > <a name="1415">1415</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1416">1416</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =back </td> </tr> <tr> <td class="h" > <a name="1417">1417</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1418">1418</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Returns a hash of relationship information for the specified relationship </td> </tr> <tr> <td class="h" > <a name="1419">1419</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> name. The keys/values are as specified for L<DBIx::Class::Relationship::Base/add_relationship>. </td> </tr> <tr> <td class="h" > <a name="1420">1420</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1421">1421</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =cut </td> </tr> <tr> <td class="h" > <a name="1422">1422</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1423">1423</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub relationship_info { </td> </tr> <tr> <td class="h" > <a name="1424">1424</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> #my ($self, $rel) = @_; </td> </tr> <tr> <td class="h" > <a name="1425">1425</a> </td> <td class="c3" > 95219 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1425-1"> 95219 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1425-1"> 1 </a> </td> <td > 685190 </td> <td class="s"> return shift->_relationships->{+shift}; </td> </tr> <tr> <td class="h" > <a name="1426">1426</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1427">1427</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1428">1428</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head2 has_relationship </td> </tr> <tr> <td class="h" > <a name="1429">1429</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1430">1430</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =over 4 </td> </tr> <tr> <td class="h" > <a name="1431">1431</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1432">1432</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Arguments: L<$rel_name|DBIx::Class::Relationship> </td> </tr> <tr> <td class="h" > <a name="1433">1433</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1434">1434</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Return Value: 1/0 (true/false) </td> </tr> <tr> <td class="h" > <a name="1435">1435</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1436">1436</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =back </td> </tr> <tr> <td class="h" > <a name="1437">1437</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1438">1438</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Returns true if the source has a relationship of this name, false otherwise. </td> </tr> <tr> <td class="h" > <a name="1439">1439</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1440">1440</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =cut </td> </tr> <tr> <td class="h" > <a name="1441">1441</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1442">1442</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub has_relationship { </td> </tr> <tr> <td class="h" > <a name="1443">1443</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> #my ($self, $rel) = @_; </td> </tr> <tr> <td class="h" > <a name="1444">1444</a> </td> <td class="c3" > 16416 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1444-1"> 16416 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1444-1"> 1 </a> </td> <td > 50733 </td> <td class="s"> return exists shift->_relationships->{+shift}; </td> </tr> <tr> <td class="h" > <a name="1445">1445</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1446">1446</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1447">1447</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head2 reverse_relationship_info </td> </tr> <tr> <td class="h" > <a name="1448">1448</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1449">1449</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =over 4 </td> </tr> <tr> <td class="h" > <a name="1450">1450</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1451">1451</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Arguments: L<$rel_name|DBIx::Class::Relationship> </td> </tr> <tr> <td class="h" > <a name="1452">1452</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1453">1453</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Return Value: L<\%rel_data|DBIx::Class::Relationship::Base/add_relationship> </td> </tr> <tr> <td class="h" > <a name="1454">1454</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1455">1455</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =back </td> </tr> <tr> <td class="h" > <a name="1456">1456</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1457">1457</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Looks through all the relationships on the source this relationship </td> </tr> <tr> <td class="h" > <a name="1458">1458</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> points to, looking for one whose condition is the reverse of the </td> </tr> <tr> <td class="h" > <a name="1459">1459</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> condition on this relationship. </td> </tr> <tr> <td class="h" > <a name="1460">1460</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1461">1461</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> A common use of this is to find the name of the C<belongs_to> relation </td> </tr> <tr> <td class="h" > <a name="1462">1462</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> opposing a C<has_many> relation. For definition of these look in </td> </tr> <tr> <td class="h" > <a name="1463">1463</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> L<DBIx::Class::Relationship>. </td> </tr> <tr> <td class="h" > <a name="1464">1464</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1465">1465</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> The returned hashref is keyed by the name of the opposing </td> </tr> <tr> <td class="h" > <a name="1466">1466</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> relationship, and contains its data in the same manner as </td> </tr> <tr> <td class="h" > <a name="1467">1467</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> L</relationship_info>. </td> </tr> <tr> <td class="h" > <a name="1468">1468</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1469">1469</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =cut </td> </tr> <tr> <td class="h" > <a name="1470">1470</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1471">1471</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub reverse_relationship_info { </td> </tr> <tr> <td class="h" > <a name="1472">1472</a> </td> <td class="c3" > 927 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1472-1"> 927 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1472-1"> 1 </a> </td> <td > 1490 </td> <td class="s"> my ($self, $rel) = @_; </td> </tr> <tr> <td class="h" > <a name="1473">1473</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1474">1474</a> </td> <td class="c3" > 927 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1474-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 1872 </td> <td class="s"> my $rel_info = $self->relationship_info($rel) </td> </tr> <tr> <td class="h" > <a name="1475">1475</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> or $self->throw_exception("No such relationship '$rel'"); </td> </tr> <tr> <td class="h" > <a name="1476">1476</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1477">1477</a> </td> <td class="c3" > 927 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1389 </td> <td class="s"> my $ret = {}; </td> </tr> <tr> <td class="h" > <a name="1478">1478</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1479">1479</a> </td> <td class="c3" > 927 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1479-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 2775 </td> <td class="s"> return $ret unless ((ref $rel_info->{cond}) eq 'HASH'); </td> </tr> <tr> <td class="h" > <a name="1480">1480</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1481">1481</a> </td> <td class="c3" > 926 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2654 </td> <td class="s"> my $stripped_cond = $self->__strip_relcond ($rel_info->{cond}); </td> </tr> <tr> <td class="h" > <a name="1482">1482</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1483">1483</a> </td> <td class="c3" > 926 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2312 </td> <td class="s"> my $registered_source_name = $self->source_name; </td> </tr> <tr> <td class="h" > <a name="1484">1484</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1485">1485</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # this may be a partial schema or something else equally esoteric </td> </tr> <tr> <td class="h" > <a name="1486">1486</a> </td> <td class="c3" > 926 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 5559 </td> <td class="s"> my $other_rsrc = $self->related_source($rel); </td> </tr> <tr> <td class="h" > <a name="1487">1487</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1488">1488</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Get all the relationships for that source that related to this source </td> </tr> <tr> <td class="h" > <a name="1489">1489</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # whose foreign column set are our self columns on $rel and whose self </td> </tr> <tr> <td class="h" > <a name="1490">1490</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # columns are our foreign columns on $rel </td> </tr> <tr> <td class="h" > <a name="1491">1491</a> </td> <td class="c3" > 926 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 4989 </td> <td class="s"> foreach my $other_rel ($other_rsrc->relationships) { </td> </tr> <tr> <td class="h" > <a name="1492">1492</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1493">1493</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # only consider stuff that points back to us </td> </tr> <tr> <td class="h" > <a name="1494">1494</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # "us" here is tricky - if we are in a schema registration, we want </td> </tr> <tr> <td class="h" > <a name="1495">1495</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # to use the source_names, otherwise we will use the actual classes </td> </tr> <tr> <td class="h" > <a name="1496">1496</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1497">1497</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # the schema may be partial </td> </tr> <tr> <td class="h" > <a name="1498">1498</a> </td> <td class="c3" > 8261 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1498-1"> 8261 </a> </td> <td >   </td> <td > 198997 </td> <td class="s"> my $roundtrip_rsrc = try { $other_rsrc->related_source($other_rel) } </td> </tr> <tr> <td class="h" > <a name="1499">1499</a> </td> <td class="c3" > 8261 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1499-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 35470 </td> <td class="s"> or next; </td> </tr> <tr> <td class="h" > <a name="1500">1500</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1501">1501</a> </td> <td class="c3" > 8261 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1501-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 70750 </td> <td class="s"> if ($registered_source_name) { </td> </tr> <tr> <td class="h" > <a name="1502">1502</a> </td> <td class="c3" > 8247 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1502-1"> 100 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1502-1"> 50 </a> </td> <td >   </td> <td >   </td> <td > 31722 </td> <td class="s"> next if $registered_source_name ne ($roundtrip_rsrc->source_name || '') </td> </tr> <tr> <td class="h" > <a name="1503">1503</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1504">1504</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> else { </td> </tr> <tr> <td class="h" > <a name="1505">1505</a> </td> <td class="c3" > 14 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1505-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 413 </td> <td class="s"> next if $self->result_class ne $roundtrip_rsrc->result_class; </td> </tr> <tr> <td class="h" > <a name="1506">1506</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1507">1507</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1508">1508</a> </td> <td class="c3" > 2952 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 4730 </td> <td class="s"> my $other_rel_info = $other_rsrc->relationship_info($other_rel); </td> </tr> <tr> <td class="h" > <a name="1509">1509</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1510">1510</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # this can happen when we have a self-referential class </td> </tr> <tr> <td class="h" > <a name="1511">1511</a> </td> <td class="c3" > 2952 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1511-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 7252 </td> <td class="s"> next if $other_rel_info eq $rel_info; </td> </tr> <tr> <td class="h" > <a name="1512">1512</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1513">1513</a> </td> <td class="c3" > 2945 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1513-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 7336 </td> <td class="s"> next unless ref $other_rel_info->{cond} eq 'HASH'; </td> </tr> <tr> <td class="h" > <a name="1514">1514</a> </td> <td class="c3" > 2036 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 3365 </td> <td class="s"> my $other_stripped_cond = $self->__strip_relcond($other_rel_info->{cond}); </td> </tr> <tr> <td class="h" > <a name="1515">1515</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1516">1516</a> </td> <td class="c3" > 2036 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1516-1"> 100 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1516-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 8734 </td> <td class="s"> $ret->{$other_rel} = $other_rel_info if ( </td> </tr> <tr> <td class="h" > <a name="1517">1517</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->_compare_relationship_keys ( </td> </tr> <tr> <td class="h" > <a name="1518">1518</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [ keys %$stripped_cond ], [ values %$other_stripped_cond ] </td> </tr> <tr> <td class="h" > <a name="1519">1519</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ) </td> </tr> <tr> <td class="h" > <a name="1520">1520</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> and </td> </tr> <tr> <td class="h" > <a name="1521">1521</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->_compare_relationship_keys ( </td> </tr> <tr> <td class="h" > <a name="1522">1522</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [ values %$stripped_cond ], [ keys %$other_stripped_cond ] </td> </tr> <tr> <td class="h" > <a name="1523">1523</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ) </td> </tr> <tr> <td class="h" > <a name="1524">1524</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ); </td> </tr> <tr> <td class="h" > <a name="1525">1525</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1526">1526</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1527">1527</a> </td> <td class="c3" > 926 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 4722 </td> <td class="s"> return $ret; </td> </tr> <tr> <td class="h" > <a name="1528">1528</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1529">1529</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1530">1530</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # all this does is removes the foreign/self prefix from a condition </td> </tr> <tr> <td class="h" > <a name="1531">1531</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub __strip_relcond { </td> </tr> <tr> <td class="h" > <a name="1532">1532</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> +{ </td> </tr> <tr> <td class="h" > <a name="1533">1533</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> map </td> </tr> <tr> <td class="h" > <a name="1534">1534</a> </td> <td class="c3" > 2962 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 3677 </td> <td class="s"> { map { /^ (?:foreign|self) \. (\w+) $/x } ($_, $_[1]{$_}) } </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 5924 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 26340 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1535">1535</a> </td> <td class="c3" > 2962 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1535-1"> 2962 </a> </td> <td >   </td> <td > 2639 </td> <td class="s"> keys %{$_[1]} </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 2962 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 7115 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1536">1536</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1537">1537</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1538">1538</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1539">1539</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub compare_relationship_keys { </td> </tr> <tr> <td class="h" > <a name="1540">1540</a> </td> <td class="c0" > <a href="#1541"> 0 </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1540-1"> 0 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1540-1"> 0 </a> </td> <td > 0 </td> <td class="s"> carp 'compare_relationship_keys is a private method, stop calling it'; </td> </tr> <tr> <td class="h" > <a name="1541">1541</a> </td> <td class="c0" > <a href="#1542"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> my $self = shift; </td> </tr> <tr> <td class="h" > <a name="1542">1542</a> </td> <td class="c0" > <a href="# "> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> $self->_compare_relationship_keys (@_); </td> </tr> <tr> <td class="h" > <a name="1543">1543</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1544">1544</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1545">1545</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Returns true if both sets of keynames are the same, false otherwise. </td> </tr> <tr> <td class="h" > <a name="1546">1546</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub _compare_relationship_keys { </td> </tr> <tr> <td class="h" > <a name="1547">1547</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # my ($self, $keys1, $keys2) = @_; </td> </tr> <tr> <td class="h" > <a name="1548">1548</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> return </td> </tr> <tr> <td class="h" > <a name="1549">1549</a> </td> <td class="c3" > 3607 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 5908 </td> <td class="s"> join ("\x00", sort @{$_[1]}) </td> </tr> <tr> <td class="h" > <a name="1550">1550</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> eq </td> </tr> <tr> <td class="h" > <a name="1551">1551</a> </td> <td class="c3" > 3607 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1551-1"> 3607 </a> </td> <td >   </td> <td > 3201 </td> <td class="s"> join ("\x00", sort @{$_[2]}) </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 3607 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 20096 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1552">1552</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ; </td> </tr> <tr> <td class="h" > <a name="1553">1553</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1554">1554</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1555">1555</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # optionally takes either an arrayref of column names, or a hashref of already </td> </tr> <tr> <td class="h" > <a name="1556">1556</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # retrieved colinfos </td> </tr> <tr> <td class="h" > <a name="1557">1557</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # returns an arrayref of column names of the shortest unique constraint </td> </tr> <tr> <td class="h" > <a name="1558">1558</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # (matching some of the input if any), giving preference to the PK </td> </tr> <tr> <td class="h" > <a name="1559">1559</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub _identifying_column_set { </td> </tr> <tr> <td class="h" > <a name="1560">1560</a> </td> <td class="c3" > 665 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1560-1"> 665 </a> </td> <td >   </td> <td > 1084 </td> <td class="s"> my ($self, $cols) = @_; </td> </tr> <tr> <td class="h" > <a name="1561">1561</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1562">1562</a> </td> <td class="c3" > 665 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2080 </td> <td class="s"> my %unique = $self->unique_constraints; </td> </tr> <tr> <td class="h" > <a name="1563">1563</a> </td> <td class="c3" > 665 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1563-1"> 100 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1563-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 2906 </td> <td class="s"> my $colinfos = ref $cols eq 'HASH' ? $cols : $self->columns_info($cols||()); </td> </tr> <tr> <td class="h" > <a name="1564">1564</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1565">1565</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # always prefer the PK first, and then shortest constraints first </td> </tr> <tr> <td class="h" > <a name="1566">1566</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> USET: </td> </tr> <tr> <td class="h" > <a name="1567">1567</a> </td> <td class="c3" > 665 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2508 </td> <td class="s"> for my $set (delete $unique{primary}, sort { @$a <=> @$b } (values %unique) ) { </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 370 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 810 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1568">1568</a> </td> <td class="c3" > 833 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1568-1"> 50 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1568-1"> 33 </a> </td> <td >   </td> <td >   </td> <td > 3659 </td> <td class="s"> next unless $set && @$set; </td> </tr> <tr> <td class="h" > <a name="1569">1569</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1570">1570</a> </td> <td class="c3" > 833 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1447 </td> <td class="s"> for (@$set) { </td> </tr> <tr> <td class="h" > <a name="1571">1571</a> </td> <td class="c3" > 1016 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1571-1"> 100 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1571-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 4622 </td> <td class="s"> next USET unless ($colinfos->{$_} && !$colinfos->{$_}{is_nullable} ); </td> </tr> <tr> <td class="h" > <a name="1572">1572</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1573">1573</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1574">1574</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # copy so we can mangle it at will </td> </tr> <tr> <td class="h" > <a name="1575">1575</a> </td> <td class="c3" > 630 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 4562 </td> <td class="s"> return [ @$set ]; </td> </tr> <tr> <td class="h" > <a name="1576">1576</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1577">1577</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1578">1578</a> </td> <td class="c3" > 35 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 184 </td> <td class="s"> return undef; </td> </tr> <tr> <td class="h" > <a name="1579">1579</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1580">1580</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1581">1581</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub _minimal_valueset_satisfying_constraint { </td> </tr> <tr> <td class="h" > <a name="1582">1582</a> </td> <td class="c3" > 3214 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1582-1"> 3214 </a> </td> <td >   </td> <td > 4232 </td> <td class="s"> my $self = shift; </td> </tr> <tr> <td class="h" > <a name="1583">1583</a> </td> <td class="c3" > 3214 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1583-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 13804 </td> <td class="s"> my $args = { ref $_[0] eq 'HASH' ? %{ $_[0] } : @_ }; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c0" > <a href="#1691"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1584">1584</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1585">1585</a> </td> <td class="c3" > 3214 </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1585-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 8021 </td> <td class="s"> $args->{columns_info} ||= $self->columns_info; </td> </tr> <tr> <td class="h" > <a name="1586">1586</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1587">1587</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my $vals = $self->storage->_extract_fixed_condition_columns( </td> </tr> <tr> <td class="h" > <a name="1588">1588</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $args->{values}, </td> </tr> <tr> <td class="h" > <a name="1589">1589</a> </td> <td class="c3" > 3214 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1589-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 6978 </td> <td class="s"> ($args->{carp_on_nulls} ? 'consider_nulls' : undef ), </td> </tr> <tr> <td class="h" > <a name="1590">1590</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ); </td> </tr> <tr> <td class="h" > <a name="1591">1591</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1592">1592</a> </td> <td class="c3" > 3210 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 3750 </td> <td class="s"> my $cols; </td> </tr> <tr> <td class="h" > <a name="1593">1593</a> </td> <td class="c3" > 3210 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 7700 </td> <td class="s"> for my $col ($self->unique_constraint_columns($args->{constraint_name}) ) { </td> </tr> <tr> <td class="h" > <a name="1594">1594</a> </td> <td class="c3" > 4209 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1594-1"> 100 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1594-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 19012 </td> <td class="s"> if( ! exists $vals->{$col} or ( $vals->{$col}||'' ) eq UNRESOLVABLE_CONDITION ) { </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#-2"> 100 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#-2"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1595">1595</a> </td> <td class="c3" > 2804 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 6016 </td> <td class="s"> $cols->{missing}{$col} = undef; </td> </tr> <tr> <td class="h" > <a name="1596">1596</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1597">1597</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> elsif( ! defined $vals->{$col} ) { </td> </tr> <tr> <td class="h" > <a name="1598">1598</a> </td> <td class="c3" > 2 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1598-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 8 </td> <td class="s"> $cols->{$args->{carp_on_nulls} ? 'undefined' : 'missing'}{$col} = undef; </td> </tr> <tr> <td class="h" > <a name="1599">1599</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1600">1600</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> else { </td> </tr> <tr> <td class="h" > <a name="1601">1601</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # we need to inject back the '=' as _extract_fixed_condition_columns </td> </tr> <tr> <td class="h" > <a name="1602">1602</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # will strip it from literals and values alike, resulting in an invalid </td> </tr> <tr> <td class="h" > <a name="1603">1603</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # condition in the end </td> </tr> <tr> <td class="h" > <a name="1604">1604</a> </td> <td class="c3" > 1403 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 5949 </td> <td class="s"> $cols->{present}{$col} = { '=' => $vals->{$col} }; </td> </tr> <tr> <td class="h" > <a name="1605">1605</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1606">1606</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1607">1607</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $cols->{fc}{$col} = 1 if ( </td> </tr> <tr> <td class="h" > <a name="1608">1608</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ( ! $cols->{missing} or ! exists $cols->{missing}{$col} ) </td> </tr> <tr> <td class="h" > <a name="1609">1609</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> and </td> </tr> <tr> <td class="h" > <a name="1610">1610</a> </td> <td class="c3" > 4209 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1610-1"> 100 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1610-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 18741 </td> <td class="s"> keys %{ $args->{columns_info}{$col}{_filter_info} || {} } </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 1405 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#-2"> 100 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#-2"> 100 </a> </td> <td >   </td> <td >   </td> <td > 10932 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1611">1611</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ); </td> </tr> <tr> <td class="h" > <a name="1612">1612</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1613">1613</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1614">1614</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->throw_exception( sprintf ( "Unable to satisfy requested constraint '%s', missing values for column(s): %s", </td> </tr> <tr> <td class="h" > <a name="1615">1615</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $args->{constraint_name}, </td> </tr> <tr> <td class="h" > <a name="1616">1616</a> </td> <td class="c3" > 2804 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 16070 </td> <td class="s"> join (', ', map { "'$_'" } sort keys %{$cols->{missing}} ), </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 1949 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 6068 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1617">1617</a> </td> <td class="c3" > 3210 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1617-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 8814 </td> <td class="s"> ) ) if $cols->{missing}; </td> </tr> <tr> <td class="h" > <a name="1618">1618</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1619">1619</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->throw_exception( sprintf ( </td> </tr> <tr> <td class="h" > <a name="1620">1620</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "Unable to satisfy requested constraint '%s', FilterColumn values not usable for column(s): %s", </td> </tr> <tr> <td class="h" > <a name="1621">1621</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $args->{constraint_name}, </td> </tr> <tr> <td class="h" > <a name="1622">1622</a> </td> <td class="c3" > 2 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 17 </td> <td class="s"> join (', ', map { "'$_'" } sort keys %{$cols->{fc}}), </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 2 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 4 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1623">1623</a> </td> <td class="c3" > 1261 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1623-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 3249 </td> <td class="s"> )) if $cols->{fc}; </td> </tr> <tr> <td class="h" > <a name="1624">1624</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1625">1625</a> </td> <td class="c3" > 1259 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1625-1"> 100 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1625-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 3578 </td> <td class="s"> if ( </td> </tr> <tr> <td class="h" > <a name="1626">1626</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $cols->{undefined} </td> </tr> <tr> <td class="h" > <a name="1627">1627</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> and </td> </tr> <tr> <td class="h" > <a name="1628">1628</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> !$ENV{DBIC_NULLABLE_KEY_NOWARN} </td> </tr> <tr> <td class="h" > <a name="1629">1629</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ) { </td> </tr> <tr> <td class="h" > <a name="1630">1630</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> carp_unique ( sprintf ( </td> </tr> <tr> <td class="h" > <a name="1631">1631</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "NULL/undef values supplied for requested unique constraint '%s' (NULL " </td> </tr> <tr> <td class="h" > <a name="1632">1632</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> . 'values in column(s): %s). This is almost certainly not what you wanted, ' </td> </tr> <tr> <td class="h" > <a name="1633">1633</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> . 'though you can set DBIC_NULLABLE_KEY_NOWARN to disable this warning.', </td> </tr> <tr> <td class="h" > <a name="1634">1634</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $args->{constraint_name}, </td> </tr> <tr> <td class="h" > <a name="1635">1635</a> </td> <td class="c3" > 2 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 4 </td> <td class="s"> join (', ', map { "'$_'" } sort keys %{$cols->{undefined}}), </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 2 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 17 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 2 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 4 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1636">1636</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> )); </td> </tr> <tr> <td class="h" > <a name="1637">1637</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1638">1638</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1639">1639</a> </td> <td class="c3" > 1259 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1639-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 2246 </td> <td class="s"> return { map { %{ $cols->{$_}||{} } } qw(present undefined) }; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 2518 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2083 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 2518 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 17664 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1640">1640</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1641">1641</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1642">1642</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Returns the {from} structure used to express JOIN conditions </td> </tr> <tr> <td class="h" > <a name="1643">1643</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub _resolve_join { </td> </tr> <tr> <td class="h" > <a name="1644">1644</a> </td> <td class="c3" > 2393 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1644-1"> 2393 </a> </td> <td >   </td> <td > 4164 </td> <td class="s"> my ($self, $join, $alias, $seen, $jpath, $parent_force_left) = @_; </td> </tr> <tr> <td class="h" > <a name="1645">1645</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1646">1646</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # we need a supplied one, because we do in-place modifications, no returns </td> </tr> <tr> <td class="h" > <a name="1647">1647</a> </td> <td class="c3" > 2393 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1647-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 5280 </td> <td class="s"> $self->throw_exception ('You must supply a seen hashref as the 3rd argument to _resolve_join') </td> </tr> <tr> <td class="h" > <a name="1648">1648</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> unless ref $seen eq 'HASH'; </td> </tr> <tr> <td class="h" > <a name="1649">1649</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1650">1650</a> </td> <td class="c3" > 2393 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1650-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 4504 </td> <td class="s"> $self->throw_exception ('You must supply a joinpath arrayref as the 4th argument to _resolve_join') </td> </tr> <tr> <td class="h" > <a name="1651">1651</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> unless ref $jpath eq 'ARRAY'; </td> </tr> <tr> <td class="h" > <a name="1652">1652</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1653">1653</a> </td> <td class="c3" > 2393 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 3251 </td> <td class="s"> $jpath = [@$jpath]; # copy </td> </tr> <tr> <td class="h" > <a name="1654">1654</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1655">1655</a> </td> <td class="c3" > 2393 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1655-1"> 100 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1655-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 13925 </td> <td class="s"> if (not defined $join or not length $join) { </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#-2"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#-3"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#-4"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1656">1656</a> </td> <td class="c3" > 428 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1491 </td> <td class="s"> return (); </td> </tr> <tr> <td class="h" > <a name="1657">1657</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1658">1658</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> elsif (ref $join eq 'ARRAY') { </td> </tr> <tr> <td class="h" > <a name="1659">1659</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> return </td> </tr> <tr> <td class="h" > <a name="1660">1660</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> map { </td> </tr> <tr> <td class="h" > <a name="1661">1661</a> </td> <td class="c3" > 529 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1181 </td> <td class="s"> $self->_resolve_join($_, $alias, $seen, $jpath, $parent_force_left); </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 741 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2038 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1662">1662</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } @$join; </td> </tr> <tr> <td class="h" > <a name="1663">1663</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1664">1664</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> elsif (ref $join eq 'HASH') { </td> </tr> <tr> <td class="h" > <a name="1665">1665</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1666">1666</a> </td> <td class="c3" > 259 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 290 </td> <td class="s"> my @ret; </td> </tr> <tr> <td class="h" > <a name="1667">1667</a> </td> <td class="c3" > 259 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 735 </td> <td class="s"> for my $rel (keys %$join) { </td> </tr> <tr> <td class="h" > <a name="1668">1668</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1669">1669</a> </td> <td class="c3" > 256 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1669-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 790 </td> <td class="s"> my $rel_info = $self->relationship_info($rel) </td> </tr> <tr> <td class="h" > <a name="1670">1670</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> or $self->throw_exception("No such relationship '$rel' on " . $self->source_name); </td> </tr> <tr> <td class="h" > <a name="1671">1671</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1672">1672</a> </td> <td class="c3" > 256 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 375 </td> <td class="s"> my $force_left = $parent_force_left; </td> </tr> <tr> <td class="h" > <a name="1673">1673</a> </td> <td class="c3" > 256 </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1673-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 1868 </td> <td class="s"> $force_left ||= lc($rel_info->{attrs}{join_type}||'') eq 'left'; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#-2"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1674">1674</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1675">1675</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # the actual seen value will be incremented by the recursion </td> </tr> <tr> <td class="h" > <a name="1676">1676</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my $as = $self->storage->relname_to_table_alias( </td> </tr> <tr> <td class="h" > <a name="1677">1677</a> </td> <td class="c3" > 256 </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1677-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 711 </td> <td class="s"> $rel, ($seen->{$rel} && $seen->{$rel} + 1) </td> </tr> <tr> <td class="h" > <a name="1678">1678</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ); </td> </tr> <tr> <td class="h" > <a name="1679">1679</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1680">1680</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> push @ret, ( </td> </tr> <tr> <td class="h" > <a name="1681">1681</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->_resolve_join($rel, $alias, $seen, [@$jpath], $force_left), </td> </tr> <tr> <td class="h" > <a name="1682">1682</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->related_source($rel)->_resolve_join( </td> </tr> <tr> <td class="h" > <a name="1683">1683</a> </td> <td class="c3" > 256 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1220 </td> <td class="s"> $join->{$rel}, $as, $seen, [@$jpath, { $rel => $as }], $force_left </td> </tr> <tr> <td class="h" > <a name="1684">1684</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ) </td> </tr> <tr> <td class="h" > <a name="1685">1685</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ); </td> </tr> <tr> <td class="h" > <a name="1686">1686</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1687">1687</a> </td> <td class="c3" > 259 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1387 </td> <td class="s"> return @ret; </td> </tr> <tr> <td class="h" > <a name="1688">1688</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1689">1689</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1690">1690</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> elsif (ref $join) { </td> </tr> <tr> <td class="h" > <a name="1691">1691</a> </td> <td class="c0" > <a href="#1724"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> $self->throw_exception("No idea how to resolve join reftype ".ref $join); </td> </tr> <tr> <td class="h" > <a name="1692">1692</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1693">1693</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> else { </td> </tr> <tr> <td class="h" > <a name="1694">1694</a> </td> <td class="c3" > 1177 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2705 </td> <td class="s"> my $count = ++$seen->{$join}; </td> </tr> <tr> <td class="h" > <a name="1695">1695</a> </td> <td class="c3" > 1177 </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1695-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 3207 </td> <td class="s"> my $as = $self->storage->relname_to_table_alias( </td> </tr> <tr> <td class="h" > <a name="1696">1696</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $join, ($count > 1 && $count) </td> </tr> <tr> <td class="h" > <a name="1697">1697</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ); </td> </tr> <tr> <td class="h" > <a name="1698">1698</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1699">1699</a> </td> <td class="c3" > 1177 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1699-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 3056 </td> <td class="s"> my $rel_info = $self->relationship_info($join) </td> </tr> <tr> <td class="h" > <a name="1700">1700</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> or $self->throw_exception("No such relationship $join on " . $self->source_name); </td> </tr> <tr> <td class="h" > <a name="1701">1701</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1702">1702</a> </td> <td class="c3" > 1177 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 3330 </td> <td class="s"> my $rel_src = $self->related_source($join); </td> </tr> <tr> <td class="h" > <a name="1703">1703</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> return [ { $as => $rel_src->from, </td> </tr> <tr> <td class="h" > <a name="1704">1704</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> -rsrc => $rel_src, </td> </tr> <tr> <td class="h" > <a name="1705">1705</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> -join_type => $parent_force_left </td> </tr> <tr> <td class="h" > <a name="1706">1706</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ? 'left' </td> </tr> <tr> <td class="h" > <a name="1707">1707</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> : $rel_info->{attrs}{join_type} </td> </tr> <tr> <td class="h" > <a name="1708">1708</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> , </td> </tr> <tr> <td class="h" > <a name="1709">1709</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> -join_path => [@$jpath, { $join => $as } ], </td> </tr> <tr> <td class="h" > <a name="1710">1710</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> -is_single => ( </td> </tr> <tr> <td class="h" > <a name="1711">1711</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> (! $rel_info->{attrs}{accessor}) </td> </tr> <tr> <td class="h" > <a name="1712">1712</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> or </td> </tr> <tr> <td class="h" > <a name="1713">1713</a> </td> <td class="c3" > 2068 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1713-1"> 2068 </a> </td> <td >   </td> <td > 15017 </td> <td class="s"> first { $rel_info->{attrs}{accessor} eq $_ } (qw/single filter/) </td> </tr> <tr> <td class="h" > <a name="1714">1714</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ), </td> </tr> <tr> <td class="h" > <a name="1715">1715</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> -alias => $as, </td> </tr> <tr> <td class="h" > <a name="1716">1716</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> -relation_chain_depth => ( $seen->{-relation_chain_depth} || 0 ) + 1, </td> </tr> <tr> <td class="h" > <a name="1717">1717</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> }, </td> </tr> <tr> <td class="h" > <a name="1718">1718</a> </td> <td class="c3" > 1177 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1718-1"> 100 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1718-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 6688 </td> <td class="s"> scalar $self->_resolve_condition($rel_info->{cond}, $as, $alias, $join) </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#-2"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1719">1719</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ]; </td> </tr> <tr> <td class="h" > <a name="1720">1720</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1721">1721</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1722">1722</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1723">1723</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub pk_depends_on { </td> </tr> <tr> <td class="h" > <a name="1724">1724</a> </td> <td class="c0" > <a href="#1725"> 0 </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1724-1"> 0 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1724-1"> 0 </a> </td> <td > 0 </td> <td class="s"> carp 'pk_depends_on is a private method, stop calling it'; </td> </tr> <tr> <td class="h" > <a name="1725">1725</a> </td> <td class="c0" > <a href="#1726"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> my $self = shift; </td> </tr> <tr> <td class="h" > <a name="1726">1726</a> </td> <td class="c0" > <a href="#1762"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> $self->_pk_depends_on (@_); </td> </tr> <tr> <td class="h" > <a name="1727">1727</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1728">1728</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1729">1729</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Determines whether a relation is dependent on an object from this source </td> </tr> <tr> <td class="h" > <a name="1730">1730</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # having already been inserted. Takes the name of the relationship and a </td> </tr> <tr> <td class="h" > <a name="1731">1731</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # hashref of columns of the related object. </td> </tr> <tr> <td class="h" > <a name="1732">1732</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub _pk_depends_on { </td> </tr> <tr> <td class="h" > <a name="1733">1733</a> </td> <td class="c3" > 686 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1733-1"> 686 </a> </td> <td >   </td> <td > 980 </td> <td class="s"> my ($self, $rel_name, $rel_data) = @_; </td> </tr> <tr> <td class="h" > <a name="1734">1734</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1735">1735</a> </td> <td class="c3" > 686 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1296 </td> <td class="s"> my $relinfo = $self->relationship_info($rel_name); </td> </tr> <tr> <td class="h" > <a name="1736">1736</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1737">1737</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # don't assume things if the relationship direction is specified </td> </tr> <tr> <td class="h" > <a name="1738">1738</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> return $relinfo->{attrs}{is_foreign_key_constraint} </td> </tr> <tr> <td class="h" > <a name="1739">1739</a> </td> <td class="c3" > 686 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1739-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 4087 </td> <td class="s"> if exists ($relinfo->{attrs}{is_foreign_key_constraint}); </td> </tr> <tr> <td class="h" > <a name="1740">1740</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1741">1741</a> </td> <td class="c3" > 194 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 292 </td> <td class="s"> my $cond = $relinfo->{cond}; </td> </tr> <tr> <td class="h" > <a name="1742">1742</a> </td> <td class="c3" > 194 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1742-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 505 </td> <td class="s"> return 0 unless ref($cond) eq 'HASH'; </td> </tr> <tr> <td class="h" > <a name="1743">1743</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1744">1744</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # map { foreign.foo => 'self.bar' } to { bar => 'foo' } </td> </tr> <tr> <td class="h" > <a name="1745">1745</a> </td> <td class="c3" > 194 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 487 </td> <td class="s"> my $keyhash = { map { my $x = $_; $x =~ s/.*\.//; $x; } reverse %$cond }; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 388 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 423 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 388 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1232 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 388 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 883 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1746">1746</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1747">1747</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # assume anything that references our PK probably is dependent on us </td> </tr> <tr> <td class="h" > <a name="1748">1748</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # rather than vice versa, unless the far side is (a) defined or (b) </td> </tr> <tr> <td class="h" > <a name="1749">1749</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # auto-increment </td> </tr> <tr> <td class="h" > <a name="1750">1750</a> </td> <td class="c3" > 194 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 494 </td> <td class="s"> my $rel_source = $self->related_source($rel_name); </td> </tr> <tr> <td class="h" > <a name="1751">1751</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1752">1752</a> </td> <td class="c3" > 194 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 996 </td> <td class="s"> foreach my $p ($self->primary_columns) { </td> </tr> <tr> <td class="h" > <a name="1753">1753</a> </td> <td class="c3" > 194 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1753-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 523 </td> <td class="s"> if (exists $keyhash->{$p}) { </td> </tr> <tr> <td class="h" > <a name="1754">1754</a> </td> <td class="c3" > 194 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1754-1"> 50 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1754-1"> 33 </a> </td> <td >   </td> <td >   </td> <td > 1026 </td> <td class="s"> unless (defined($rel_data->{$keyhash->{$p}}) </td> </tr> <tr> <td class="h" > <a name="1755">1755</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> || $rel_source->column_info($keyhash->{$p}) </td> </tr> <tr> <td class="h" > <a name="1756">1756</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ->{is_auto_increment}) { </td> </tr> <tr> <td class="h" > <a name="1757">1757</a> </td> <td class="c3" > 194 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 972 </td> <td class="s"> return 0; </td> </tr> <tr> <td class="h" > <a name="1758">1758</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1759">1759</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1760">1760</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1761">1761</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1762">1762</a> </td> <td class="c0" > <a href="#1766"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> return 1; </td> </tr> <tr> <td class="h" > <a name="1763">1763</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1764">1764</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1765">1765</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub resolve_condition { </td> </tr> <tr> <td class="h" > <a name="1766">1766</a> </td> <td class="c0" > <a href="#1767"> 0 </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1766-1"> 0 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1766-1"> 0 </a> </td> <td > 0 </td> <td class="s"> carp 'resolve_condition is a private method, stop calling it'; </td> </tr> <tr> <td class="h" > <a name="1767">1767</a> </td> <td class="c0" > <a href="#1797"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> shift->_resolve_condition (@_); </td> </tr> <tr> <td class="h" > <a name="1768">1768</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1769">1769</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1770">1770</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub _resolve_condition { </td> </tr> <tr> <td class="h" > <a name="1771">1771</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # carp_unique sprintf </td> </tr> <tr> <td class="h" > <a name="1772">1772</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # '_resolve_condition is a private method, and moreover is about to go ' </td> </tr> <tr> <td class="h" > <a name="1773">1773</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # . 'away. Please contact the development team at %s if you believe you ' </td> </tr> <tr> <td class="h" > <a name="1774">1774</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # . 'have a genuine use for this method, in order to discuss alternatives.', </td> </tr> <tr> <td class="h" > <a name="1775">1775</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # DBIx::Class::_ENV_::HELP_URL, </td> </tr> <tr> <td class="h" > <a name="1776">1776</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # ; </td> </tr> <tr> <td class="h" > <a name="1777">1777</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1778">1778</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ####################### </td> </tr> <tr> <td class="h" > <a name="1779">1779</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ### API Design? What's that...? (a backwards compatible shim, kill me now) </td> </tr> <tr> <td class="h" > <a name="1780">1780</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1781">1781</a> </td> <td class="c3" > 4159 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1781-1"> 4159 </a> </td> <td >   </td> <td > 5048 </td> <td class="s"> my ($self, $cond, @res_args, $rel_name); </td> </tr> <tr> <td class="h" > <a name="1782">1782</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1783">1783</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # we *SIMPLY DON'T KNOW YET* which arg is which, yay </td> </tr> <tr> <td class="h" > <a name="1784">1784</a> </td> <td class="c3" > 4159 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 9654 </td> <td class="s"> ($self, $cond, $res_args[0], $res_args[1], $rel_name) = @_; </td> </tr> <tr> <td class="h" > <a name="1785">1785</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1786">1786</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # assume that an undef is an object-like unset (set_from_related(undef)) </td> </tr> <tr> <td class="h" > <a name="1787">1787</a> </td> <td class="c3" > 4159 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1787-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 6254 </td> <td class="s"> my @is_objlike = map { ! defined $_ or length ref $_ } (@res_args); </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 8318 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 33437 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1788">1788</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1789">1789</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # turn objlike into proper objects for saner code further down </td> </tr> <tr> <td class="h" > <a name="1790">1790</a> </td> <td class="c3" > 4159 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 7667 </td> <td class="s"> for (0,1) { </td> </tr> <tr> <td class="h" > <a name="1791">1791</a> </td> <td class="c3" > 8318 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1791-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 15611 </td> <td class="s"> next unless $is_objlike[$_]; </td> </tr> <tr> <td class="h" > <a name="1792">1792</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1793">1793</a> </td> <td class="c3" > 2982 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1793-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 10909 </td> <td class="s"> if ( defined blessed $res_args[$_] ) { </td> </tr> <tr> <td class="h" > <a name="1794">1794</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1795">1795</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # but wait - there is more!!! WHAT THE FUCK?!?!?!?! </td> </tr> <tr> <td class="h" > <a name="1796">1796</a> </td> <td class="c3" > 2975 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1796-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 22788 </td> <td class="s"> if ($res_args[$_]->isa('DBIx::Class::ResultSet')) { </td> </tr> <tr> <td class="h" > <a name="1797">1797</a> </td> <td class="c0" > <a href="#1798"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> carp('Passing a resultset for relationship resolution makes no sense - invoking __gremlins__'); </td> </tr> <tr> <td class="h" > <a name="1798">1798</a> </td> <td class="c0" > <a href="#1799"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> $is_objlike[$_] = 0; </td> </tr> <tr> <td class="h" > <a name="1799">1799</a> </td> <td class="c0" > <a href="# "> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> $res_args[$_] = '__gremlins__'; </td> </tr> <tr> <td class="h" > <a name="1800">1800</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1801">1801</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1802">1802</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> else { </td> </tr> <tr> <td class="h" > <a name="1803">1803</a> </td> <td class="c3" > 7 </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1803-1"> 50 </a> </td> <td >   </td> <td >   </td> <td > 21 </td> <td class="s"> $res_args[$_] ||= {}; </td> </tr> <tr> <td class="h" > <a name="1804">1804</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1805">1805</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # hate everywhere - have to pass in as a plain hash </td> </tr> <tr> <td class="h" > <a name="1806">1806</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # pretending to be an object at least for now </td> </tr> <tr> <td class="h" > <a name="1807">1807</a> </td> <td class="c3" > 7 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1807-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 33 </td> <td class="s"> $self->throw_exception("Unsupported object-like structure encountered: $res_args[$_]") </td> </tr> <tr> <td class="h" > <a name="1808">1808</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> unless ref $res_args[$_] eq 'HASH'; </td> </tr> <tr> <td class="h" > <a name="1809">1809</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1810">1810</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1811">1811</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1812">1812</a> </td> <td class="c3" > 4159 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1812-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 27499 </td> <td class="s"> my $args = { </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#-2"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#-3"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1813">1813</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> condition => $cond, </td> </tr> <tr> <td class="h" > <a name="1814">1814</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1815">1815</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # where-is-waldo block guesses relname, then further down we override it if available </td> </tr> <tr> <td class="h" > <a name="1816">1816</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ( </td> </tr> <tr> <td class="h" > <a name="1817">1817</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $is_objlike[1] ? ( rel_name => $res_args[0], self_alias => $res_args[0], foreign_alias => 'me', self_result_object => $res_args[1] ) </td> </tr> <tr> <td class="h" > <a name="1818">1818</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> : $is_objlike[0] ? ( rel_name => $res_args[1], self_alias => 'me', foreign_alias => $res_args[1], foreign_values => $res_args[0] ) </td> </tr> <tr> <td class="h" > <a name="1819">1819</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> : ( rel_name => $res_args[0], self_alias => $res_args[1], foreign_alias => $res_args[0] ) </td> </tr> <tr> <td class="h" > <a name="1820">1820</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ), </td> </tr> <tr> <td class="h" > <a name="1821">1821</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1822">1822</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ( $rel_name ? ( rel_name => $rel_name ) : () ), </td> </tr> <tr> <td class="h" > <a name="1823">1823</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> }; </td> </tr> <tr> <td class="h" > <a name="1824">1824</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ####################### </td> </tr> <tr> <td class="h" > <a name="1825">1825</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1826">1826</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # now it's fucking easy isn't it?! </td> </tr> <tr> <td class="h" > <a name="1827">1827</a> </td> <td class="c3" > 4159 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 10883 </td> <td class="s"> my $rc = $self->_resolve_relationship_condition( $args ); </td> </tr> <tr> <td class="h" > <a name="1828">1828</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1829">1829</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my @res = ( </td> </tr> <tr> <td class="h" > <a name="1830">1830</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ( $rc->{join_free_condition} || $rc->{condition} ), </td> </tr> <tr> <td class="h" > <a name="1831">1831</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ! $rc->{join_free_condition}, </td> </tr> <tr> <td class="h" > <a name="1832">1832</a> </td> <td class="c3" > 4157 </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1832-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 16505 </td> <td class="s"> ); </td> </tr> <tr> <td class="h" > <a name="1833">1833</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1834">1834</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # _resolve_relationship_condition always returns qualified cols even in the </td> </tr> <tr> <td class="h" > <a name="1835">1835</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # case of join_free_condition, but nothing downstream expects this </td> </tr> <tr> <td class="h" > <a name="1836">1836</a> </td> <td class="c3" > 4157 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1836-1"> 100 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1836-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 16567 </td> <td class="s"> if ($rc->{join_free_condition} and ref $res[0] eq 'HASH') { </td> </tr> <tr> <td class="h" > <a name="1837">1837</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $res[0] = { map </td> </tr> <tr> <td class="h" > <a name="1838">1838</a> </td> <td class="c3" > 2853 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 15579 </td> <td class="s"> { ($_ =~ /\.(.+)/) => $res[0]{$_} } </td> </tr> <tr> <td class="h" > <a name="1839">1839</a> </td> <td class="c3" > 2811 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2909 </td> <td class="s"> keys %{$res[0]} </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 2811 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 5880 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1840">1840</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> }; </td> </tr> <tr> <td class="h" > <a name="1841">1841</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1842">1842</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1843">1843</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # and more legacy </td> </tr> <tr> <td class="h" > <a name="1844">1844</a> </td> <td class="c3" > 4157 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1844-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 37298 </td> <td class="s"> return wantarray ? @res : $res[0]; </td> </tr> <tr> <td class="h" > <a name="1845">1845</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1846">1846</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1847">1847</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Keep this indefinitely. There is evidence of both CPAN and </td> </tr> <tr> <td class="h" > <a name="1848">1848</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # darkpan using it, and there isn't much harm in an extra var </td> </tr> <tr> <td class="h" > <a name="1849">1849</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # anyway. </td> </tr> <tr> <td class="h" > <a name="1850">1850</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> our $UNRESOLVABLE_CONDITION = UNRESOLVABLE_CONDITION; </td> </tr> <tr> <td class="h" > <a name="1851">1851</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # YES I KNOW THIS IS EVIL </td> </tr> <tr> <td class="h" > <a name="1852">1852</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # it is there to save darkpan from themselves, since internally </td> </tr> <tr> <td class="h" > <a name="1853">1853</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # we are moving to a constant </td> </tr> <tr> <td class="h" > <a name="1854">1854</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Internals::SvREADONLY($UNRESOLVABLE_CONDITION => 1); </td> </tr> <tr> <td class="h" > <a name="1855">1855</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1856">1856</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Resolves the passed condition to a concrete query fragment and extra </td> </tr> <tr> <td class="h" > <a name="1857">1857</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # metadata </td> </tr> <tr> <td class="h" > <a name="1858">1858</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # </td> </tr> <tr> <td class="h" > <a name="1859">1859</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ## self-explanatory API, modeled on the custom cond coderef: </td> </tr> <tr> <td class="h" > <a name="1860">1860</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # rel_name => (scalar) </td> </tr> <tr> <td class="h" > <a name="1861">1861</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # foreign_alias => (scalar) </td> </tr> <tr> <td class="h" > <a name="1862">1862</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # foreign_values => (either not supplied, or a hashref, or a foreign ResultObject (to be ->get_columns()ed), or plain undef ) </td> </tr> <tr> <td class="h" > <a name="1863">1863</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # self_alias => (scalar) </td> </tr> <tr> <td class="h" > <a name="1864">1864</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # self_result_object => (either not supplied or a result object) </td> </tr> <tr> <td class="h" > <a name="1865">1865</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # require_join_free_condition => (boolean, throws on failure to construct a JF-cond) </td> </tr> <tr> <td class="h" > <a name="1866">1866</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # infer_values_based_on => (either not supplied or a hashref, implies require_join_free_condition) </td> </tr> <tr> <td class="h" > <a name="1867">1867</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # condition => (sqla cond struct, optional, defeaults to from $self->rel_info(rel_name)->{cond}) </td> </tr> <tr> <td class="h" > <a name="1868">1868</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # </td> </tr> <tr> <td class="h" > <a name="1869">1869</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ## returns a hash </td> </tr> <tr> <td class="h" > <a name="1870">1870</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # condition => (a valid *likely fully qualified* sqla cond structure) </td> </tr> <tr> <td class="h" > <a name="1871">1871</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # identity_map => (a hashref of foreign-to-self *unqualified* column equality names) </td> </tr> <tr> <td class="h" > <a name="1872">1872</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # join_free_condition => (a valid *fully qualified* sqla cond structure, maybe unset) </td> </tr> <tr> <td class="h" > <a name="1873">1873</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # inferred_values => (in case of an available join_free condition, this is a hashref of </td> </tr> <tr> <td class="h" > <a name="1874">1874</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # *unqualified* column/value *EQUALITY* pairs, representing an amalgamation </td> </tr> <tr> <td class="h" > <a name="1875">1875</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # of the JF-cond parse and infer_values_based_on </td> </tr> <tr> <td class="h" > <a name="1876">1876</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # always either complete or unset) </td> </tr> <tr> <td class="h" > <a name="1877">1877</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # </td> </tr> <tr> <td class="h" > <a name="1878">1878</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub _resolve_relationship_condition { </td> </tr> <tr> <td class="h" > <a name="1879">1879</a> </td> <td class="c3" > 5978 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#1879-1"> 5978 </a> </td> <td >   </td> <td > 7046 </td> <td class="s"> my $self = shift; </td> </tr> <tr> <td class="h" > <a name="1880">1880</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1881">1881</a> </td> <td class="c3" > 5978 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1881-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 18017 </td> <td class="s"> my $args = { ref $_[0] eq 'HASH' ? %{ $_[0] } : @_ }; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 4193 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 17082 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1882">1882</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1883">1883</a> </td> <td class="c3" > 5978 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 10626 </td> <td class="s"> for ( qw( rel_name self_alias foreign_alias ) ) { </td> </tr> <tr> <td class="h" > <a name="1884">1884</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->throw_exception("Mandatory argument '$_' to _resolve_relationship_condition() is not a plain string") </td> </tr> <tr> <td class="h" > <a name="1885">1885</a> </td> <td class="c3" > 17934 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1885-1"> 50 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1885-1"> 33 </a> </td> <td >   </td> <td >   </td> <td > 64316 </td> <td class="s"> if !defined $args->{$_} or length ref $args->{$_}; </td> </tr> <tr> <td class="h" > <a name="1886">1886</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1887">1887</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1888">1888</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->throw_exception("Arguments 'self_alias' and 'foreign_alias' may not be identical") </td> </tr> <tr> <td class="h" > <a name="1889">1889</a> </td> <td class="c3" > 5978 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1889-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 13687 </td> <td class="s"> if $args->{self_alias} eq $args->{foreign_alias}; </td> </tr> <tr> <td class="h" > <a name="1890">1890</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1891">1891</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # TEMP </td> </tr> <tr> <td class="h" > <a name="1892">1892</a> </td> <td class="c3" > 5978 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 11636 </td> <td class="s"> my $exception_rel_id = "relationship '$args->{rel_name}' on source '@{[ $self->source_name ]}'"; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 5978 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 23677 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1893">1893</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1894">1894</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my $rel_info = $self->relationship_info($args->{rel_name}) </td> </tr> <tr> <td class="h" > <a name="1895">1895</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # TEMP </td> </tr> <tr> <td class="h" > <a name="1896">1896</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # or $self->throw_exception( "No such $exception_rel_id" ); </td> </tr> <tr> <td class="h" > <a name="1897">1897</a> </td> <td class="c3" > 5978 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1897-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 41349 </td> <td class="s"> or carp_unique("Requesting resolution on non-existent relationship '$args->{rel_name}' on source '@{[ $self->source_name ]}': fix your code *soon*, as it will break with the next major version"); </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c0" > <a href="#1935"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1898">1898</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1899">1899</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # TEMP </td> </tr> <tr> <td class="h" > <a name="1900">1900</a> </td> <td class="c3" > 77 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 202 </td> <td class="s"> $exception_rel_id = "relationship '$rel_info->{_original_name}' on source '@{[ $self->source_name ]}'" </td> </tr> <tr> <td class="h" > <a name="1901">1901</a> </td> <td class="c3" > 5978 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1901-1"> 100 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1901-1"> 33 </a> </td> <td >   </td> <td >   </td> <td > 20758 </td> <td class="s"> if $rel_info and exists $rel_info->{_original_name}; </td> </tr> <tr> <td class="h" > <a name="1902">1902</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1903">1903</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->throw_exception("No practical way to resolve $exception_rel_id between two data structures") </td> </tr> <tr> <td class="h" > <a name="1904">1904</a> </td> <td class="c3" > 5978 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1904-1"> 50 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1904-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 15841 </td> <td class="s"> if exists $args->{self_result_object} and exists $args->{foreign_values}; </td> </tr> <tr> <td class="h" > <a name="1905">1905</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1906">1906</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->throw_exception( "Argument to infer_values_based_on must be a hash" ) </td> </tr> <tr> <td class="h" > <a name="1907">1907</a> </td> <td class="c3" > 5978 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1907-1"> 50 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1907-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 16390 </td> <td class="s"> if exists $args->{infer_values_based_on} and ref $args->{infer_values_based_on} ne 'HASH'; </td> </tr> <tr> <td class="h" > <a name="1908">1908</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1909">1909</a> </td> <td class="c3" > 5978 </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1909-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 23732 </td> <td class="s"> $args->{require_join_free_condition} ||= !!$args->{infer_values_based_on}; </td> </tr> <tr> <td class="h" > <a name="1910">1910</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1911">1911</a> </td> <td class="c3" > 5978 </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1911-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 14289 </td> <td class="s"> $args->{condition} ||= $rel_info->{cond}; </td> </tr> <tr> <td class="h" > <a name="1912">1912</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1913">1913</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->throw_exception( "Argument 'self_result_object' must be an object inheriting from DBIx::Class::Row" ) </td> </tr> <tr> <td class="h" > <a name="1914">1914</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> if ( </td> </tr> <tr> <td class="h" > <a name="1915">1915</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> exists $args->{self_result_object} </td> </tr> <tr> <td class="h" > <a name="1916">1916</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> and </td> </tr> <tr> <td class="h" > <a name="1917">1917</a> </td> <td class="c3" > 5978 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1917-1"> 50 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1917-1"> 33 </a> </td> <td >   </td> <td >   </td> <td > 42459 </td> <td class="s"> ( ! defined blessed $args->{self_result_object} or ! $args->{self_result_object}->isa('DBIx::Class::Row') ) </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#-2"> 66 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1918">1918</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ) </td> </tr> <tr> <td class="h" > <a name="1919">1919</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ; </td> </tr> <tr> <td class="h" > <a name="1920">1920</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1921">1921</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> #TEMP </td> </tr> <tr> <td class="h" > <a name="1922">1922</a> </td> <td class="c3" > 5978 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 6917 </td> <td class="s"> my $rel_rsrc;# = $self->related_source($args->{rel_name}); </td> </tr> <tr> <td class="h" > <a name="1923">1923</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1924">1924</a> </td> <td class="c3" > 5978 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1924-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 10431 </td> <td class="s"> if (exists $args->{foreign_values}) { </td> </tr> <tr> <td class="h" > <a name="1925">1925</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # TEMP </td> </tr> <tr> <td class="h" > <a name="1926">1926</a> </td> <td class="c3" > 603 </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1926-1"> 33 </a> </td> <td >   </td> <td >   </td> <td > 2016 </td> <td class="s"> $rel_rsrc ||= $self->related_source($args->{rel_name}); </td> </tr> <tr> <td class="h" > <a name="1927">1927</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1928">1928</a> </td> <td class="c3" > 603 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1928-1"> 100 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1928-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 3733 </td> <td class="s"> if (defined blessed $args->{foreign_values}) { </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#-2"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1929">1929</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1930">1930</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->throw_exception( "Objects supplied as 'foreign_values' ($args->{foreign_values}) must inherit from DBIx::Class::Row" ) </td> </tr> <tr> <td class="h" > <a name="1931">1931</a> </td> <td class="c3" > 594 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1931-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 3016 </td> <td class="s"> unless $args->{foreign_values}->isa('DBIx::Class::Row'); </td> </tr> <tr> <td class="h" > <a name="1932">1932</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1933">1933</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> carp_unique( </td> </tr> <tr> <td class="h" > <a name="1934">1934</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "Objects supplied as 'foreign_values' ($args->{foreign_values}) " </td> </tr> <tr> <td class="h" > <a name="1935">1935</a> </td> <td class="c0" > <a href="#1945"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> . "usually should inherit from the related ResultClass ('@{[ $rel_rsrc->result_class ]}'), " </td> </tr> <tr> <td class="h" > <a name="1936">1936</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> . "perhaps you've made a mistake invoking the condition resolver?" </td> </tr> <tr> <td class="h" > <a name="1937">1937</a> </td> <td class="c3" > 594 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1937-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 11117 </td> <td class="s"> ) unless $args->{foreign_values}->isa($rel_rsrc->result_class); </td> </tr> <tr> <td class="h" > <a name="1938">1938</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1939">1939</a> </td> <td class="c3" > 594 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2258 </td> <td class="s"> $args->{foreign_values} = { $args->{foreign_values}->get_columns }; </td> </tr> <tr> <td class="h" > <a name="1940">1940</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1941">1941</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> elsif (! defined $args->{foreign_values} or ref $args->{foreign_values} eq 'HASH') { </td> </tr> <tr> <td class="h" > <a name="1942">1942</a> </td> <td class="c3" > 9 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 46 </td> <td class="s"> my $ri = { map { $_ => 1 } $rel_rsrc->relationships }; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 107 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 153 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1943">1943</a> </td> <td class="c3" > 9 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 44 </td> <td class="s"> my $ci = $rel_rsrc->columns_info; </td> </tr> <tr> <td class="h" > <a name="1944">1944</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ! exists $ci->{$_} and ! exists $ri->{$_} and $self->throw_exception( </td> </tr> <tr> <td class="h" > <a name="1945">1945</a> </td> <td class="c0" > <a href="#1949"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> "Key '$_' supplied as 'foreign_values' is not a column on related source '@{[ $rel_rsrc->source_name ]}'" </td> </tr> <tr> <td class="h" > <a name="1946">1946</a> </td> <td class="c3" > 9 </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1946-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 16 </td> <td class="s"> ) for keys %{ $args->{foreign_values} ||= {} }; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 9 </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#-2"> 66 </a> </td> <td >   </td> <td >   </td> <td > 99 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#-3"> 33 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1947">1947</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1948">1948</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> else { </td> </tr> <tr> <td class="h" > <a name="1949">1949</a> </td> <td class="c0" > <a href="#1950"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> $self->throw_exception( </td> </tr> <tr> <td class="h" > <a name="1950">1950</a> </td> <td class="c0" > <a href="#2091"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> "Argument 'foreign_values' must be either an object inheriting from '@{[ $rel_rsrc->result_class ]}', " </td> </tr> <tr> <td class="h" > <a name="1951">1951</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> . "or a hash reference, or undef" </td> </tr> <tr> <td class="h" > <a name="1952">1952</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ); </td> </tr> <tr> <td class="h" > <a name="1953">1953</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1954">1954</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1955">1955</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1956">1956</a> </td> <td class="c3" > 5978 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 5975 </td> <td class="s"> my $ret; </td> </tr> <tr> <td class="h" > <a name="1957">1957</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1958">1958</a> </td> <td class="c3" > 5978 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1958-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 18234 </td> <td class="s"> if (ref $args->{condition} eq 'CODE') { </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#-2"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#-3"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1959">1959</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1960">1960</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my $cref_args = { </td> </tr> <tr> <td class="h" > <a name="1961">1961</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> rel_name => $args->{rel_name}, </td> </tr> <tr> <td class="h" > <a name="1962">1962</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> self_resultsource => $self, </td> </tr> <tr> <td class="h" > <a name="1963">1963</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> self_alias => $args->{self_alias}, </td> </tr> <tr> <td class="h" > <a name="1964">1964</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> foreign_alias => $args->{foreign_alias}, </td> </tr> <tr> <td class="h" > <a name="1965">1965</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ( map </td> </tr> <tr> <td class="h" > <a name="1966">1966</a> </td> <td class="c3" > 226 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1966-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 476 </td> <td class="s"> { (exists $args->{$_}) ? ( $_ => $args->{$_} ) : () } </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 452 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1274 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1967">1967</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> qw( self_result_object foreign_values ) </td> </tr> <tr> <td class="h" > <a name="1968">1968</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ), </td> </tr> <tr> <td class="h" > <a name="1969">1969</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> }; </td> </tr> <tr> <td class="h" > <a name="1970">1970</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1971">1971</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # legacy - never remove these!!! </td> </tr> <tr> <td class="h" > <a name="1972">1972</a> </td> <td class="c3" > 226 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 346 </td> <td class="s"> $cref_args->{foreign_relname} = $cref_args->{rel_name}; </td> </tr> <tr> <td class="h" > <a name="1973">1973</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1974">1974</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $cref_args->{self_rowobj} = $cref_args->{self_result_object} </td> </tr> <tr> <td class="h" > <a name="1975">1975</a> </td> <td class="c3" > 226 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1975-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 464 </td> <td class="s"> if exists $cref_args->{self_result_object}; </td> </tr> <tr> <td class="h" > <a name="1976">1976</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1977">1977</a> </td> <td class="c3" > 226 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 596 </td> <td class="s"> ($ret->{condition}, $ret->{join_free_condition}, my @extra) = $args->{condition}->($cref_args); </td> </tr> <tr> <td class="h" > <a name="1978">1978</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1979">1979</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # sanity check </td> </tr> <tr> <td class="h" > <a name="1980">1980</a> </td> <td class="c3" > 226 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1980-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 1703 </td> <td class="s"> $self->throw_exception("A custom condition coderef can return at most 2 conditions, but $exception_rel_id returned extra values: @extra") </td> </tr> <tr> <td class="h" > <a name="1981">1981</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> if @extra; </td> </tr> <tr> <td class="h" > <a name="1982">1982</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1983">1983</a> </td> <td class="c3" > 225 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1983-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 767 </td> <td class="s"> if (my $jfc = $ret->{join_free_condition}) { </td> </tr> <tr> <td class="h" > <a name="1984">1984</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1985">1985</a> </td> <td class="c3" > 22 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1985-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 57 </td> <td class="s"> $self->throw_exception ( </td> </tr> <tr> <td class="h" > <a name="1986">1986</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "The join-free condition returned for $exception_rel_id must be a hash reference" </td> </tr> <tr> <td class="h" > <a name="1987">1987</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ) unless ref $jfc eq 'HASH'; </td> </tr> <tr> <td class="h" > <a name="1988">1988</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1989">1989</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # TEMP </td> </tr> <tr> <td class="h" > <a name="1990">1990</a> </td> <td class="c3" > 22 </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#1990-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 76 </td> <td class="s"> $rel_rsrc ||= $self->related_source($args->{rel_name}); </td> </tr> <tr> <td class="h" > <a name="1991">1991</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1992">1992</a> </td> <td class="c3" > 22 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 68 </td> <td class="s"> my ($joinfree_alias, $joinfree_source); </td> </tr> <tr> <td class="h" > <a name="1993">1993</a> </td> <td class="c3" > 22 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#1993-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 55 </td> <td class="s"> if (defined $args->{self_result_object}) { </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#-2"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1994">1994</a> </td> <td class="c3" > 19 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 24 </td> <td class="s"> $joinfree_alias = $args->{foreign_alias}; </td> </tr> <tr> <td class="h" > <a name="1995">1995</a> </td> <td class="c3" > 19 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 17 </td> <td class="s"> $joinfree_source = $rel_rsrc; </td> </tr> <tr> <td class="h" > <a name="1996">1996</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1997">1997</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> elsif (defined $args->{foreign_values}) { </td> </tr> <tr> <td class="h" > <a name="1998">1998</a> </td> <td class="c3" > 3 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 5 </td> <td class="s"> $joinfree_alias = $args->{self_alias}; </td> </tr> <tr> <td class="h" > <a name="1999">1999</a> </td> <td class="c3" > 3 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 5 </td> <td class="s"> $joinfree_source = $self; </td> </tr> <tr> <td class="h" > <a name="2000">2000</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2001">2001</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2002">2002</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # FIXME sanity check until things stabilize, remove at some point </td> </tr> <tr> <td class="h" > <a name="2003">2003</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->throw_exception ( </td> </tr> <tr> <td class="h" > <a name="2004">2004</a> </td> <td class="c3" > 22 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2004-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 48 </td> <td class="s"> "A join-free condition returned for $exception_rel_id without a result object to chain from" </td> </tr> <tr> <td class="h" > <a name="2005">2005</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ) unless $joinfree_alias; </td> </tr> <tr> <td class="h" > <a name="2006">2006</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2007">2007</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my $fq_col_list = { map </td> </tr> <tr> <td class="h" > <a name="2008">2008</a> </td> <td class="c3" > 22 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 51 </td> <td class="s"> { ( "$joinfree_alias.$_" => 1 ) } </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 120 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 229 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2009">2009</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $joinfree_source->columns </td> </tr> <tr> <td class="h" > <a name="2010">2010</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> }; </td> </tr> <tr> <td class="h" > <a name="2011">2011</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2012">2012</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> exists $fq_col_list->{$_} or $self->throw_exception ( </td> </tr> <tr> <td class="h" > <a name="2013">2013</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "The join-free condition returned for $exception_rel_id may only " </td> </tr> <tr> <td class="h" > <a name="2014">2014</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> . 'contain keys that are fully qualified column names of the corresponding source ' </td> </tr> <tr> <td class="h" > <a name="2015">2015</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> . "(it returned '$_')" </td> </tr> <tr> <td class="h" > <a name="2016">2016</a> </td> <td class="c3" > 22 </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#2016-1"> 33 </a> </td> <td >   </td> <td >   </td> <td > 129 </td> <td class="s"> ) for keys %$jfc; </td> </tr> <tr> <td class="h" > <a name="2017">2017</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2018">2018</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ( </td> </tr> <tr> <td class="h" > <a name="2019">2019</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> length ref $_ </td> </tr> <tr> <td class="h" > <a name="2020">2020</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> and </td> </tr> <tr> <td class="h" > <a name="2021">2021</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> defined blessed($_) </td> </tr> <tr> <td class="h" > <a name="2022">2022</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> and </td> </tr> <tr> <td class="h" > <a name="2023">2023</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $_->isa('DBIx::Class::Row') </td> </tr> <tr> <td class="h" > <a name="2024">2024</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> and </td> </tr> <tr> <td class="h" > <a name="2025">2025</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->throw_exception ( </td> </tr> <tr> <td class="h" > <a name="2026">2026</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "The join-free condition returned for $exception_rel_id may not " </td> </tr> <tr> <td class="h" > <a name="2027">2027</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> . 'contain result objects as values - perhaps instead of invoking ' </td> </tr> <tr> <td class="h" > <a name="2028">2028</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> . '->$something you meant to return ->get_column($something)' </td> </tr> <tr> <td class="h" > <a name="2029">2029</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ) </td> </tr> <tr> <td class="h" > <a name="2030">2030</a> </td> <td class="c3" > 22 </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#2030-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 230 </td> <td class="s"> ) for values %$jfc; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#-2"> 33 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#-3"> 33 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2031">2031</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2032">2032</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2033">2033</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2034">2034</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> elsif (ref $args->{condition} eq 'HASH') { </td> </tr> <tr> <td class="h" > <a name="2035">2035</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2036">2036</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # the condition is static - use parallel arrays </td> </tr> <tr> <td class="h" > <a name="2037">2037</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # for a "pivot" depending on which side of the </td> </tr> <tr> <td class="h" > <a name="2038">2038</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # rel did we get as an object </td> </tr> <tr> <td class="h" > <a name="2039">2039</a> </td> <td class="c3" > 5735 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 5558 </td> <td class="s"> my (@f_cols, @l_cols); </td> </tr> <tr> <td class="h" > <a name="2040">2040</a> </td> <td class="c3" > 5735 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 5037 </td> <td class="s"> for my $fc (keys %{$args->{condition}}) { </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 5735 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 15717 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2041">2041</a> </td> <td class="c3" > 5847 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 9739 </td> <td class="s"> my $lc = $args->{condition}{$fc}; </td> </tr> <tr> <td class="h" > <a name="2042">2042</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2043">2043</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # FIXME STRICTMODE should probably check these are valid columns </td> </tr> <tr> <td class="h" > <a name="2044">2044</a> </td> <td class="c3" > 5847 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2044-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 27969 </td> <td class="s"> $fc =~ s/^foreign\.// || </td> </tr> <tr> <td class="h" > <a name="2045">2045</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->throw_exception("Invalid rel cond key '$fc'"); </td> </tr> <tr> <td class="h" > <a name="2046">2046</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2047">2047</a> </td> <td class="c3" > 5847 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2047-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 19411 </td> <td class="s"> $lc =~ s/^self\.// || </td> </tr> <tr> <td class="h" > <a name="2048">2048</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->throw_exception("Invalid rel cond val '$lc'"); </td> </tr> <tr> <td class="h" > <a name="2049">2049</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2050">2050</a> </td> <td class="c3" > 5847 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 9188 </td> <td class="s"> push @f_cols, $fc; </td> </tr> <tr> <td class="h" > <a name="2051">2051</a> </td> <td class="c3" > 5847 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 9811 </td> <td class="s"> push @l_cols, $lc; </td> </tr> <tr> <td class="h" > <a name="2052">2052</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2053">2053</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2054">2054</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # construct the crosstable condition and the identity map </td> </tr> <tr> <td class="h" > <a name="2055">2055</a> </td> <td class="c3" > 5735 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 13995 </td> <td class="s"> for (0..$#f_cols) { </td> </tr> <tr> <td class="h" > <a name="2056">2056</a> </td> <td class="c3" > 5847 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 31767 </td> <td class="s"> $ret->{condition}{"$args->{foreign_alias}.$f_cols[$_]"} = { -ident => "$args->{self_alias}.$l_cols[$_]" }; </td> </tr> <tr> <td class="h" > <a name="2057">2057</a> </td> <td class="c3" > 5847 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 16745 </td> <td class="s"> $ret->{identity_map}{$l_cols[$_]} = $f_cols[$_]; </td> </tr> <tr> <td class="h" > <a name="2058">2058</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> }; </td> </tr> <tr> <td class="h" > <a name="2059">2059</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2060">2060</a> </td> <td class="c3" > 5735 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2060-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 16769 </td> <td class="s"> if ($args->{foreign_values}) { </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#-2"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2061">2061</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $ret->{join_free_condition}{"$args->{self_alias}.$l_cols[$_]"} = $args->{foreign_values}{$f_cols[$_]} </td> </tr> <tr> <td class="h" > <a name="2062">2062</a> </td> <td class="c3" > 599 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2918 </td> <td class="s"> for 0..$#f_cols; </td> </tr> <tr> <td class="h" > <a name="2063">2063</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2064">2064</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> elsif (defined $args->{self_result_object}) { </td> </tr> <tr> <td class="h" > <a name="2065">2065</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2066">2066</a> </td> <td class="c3" > 4035 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 6459 </td> <td class="s"> for my $i (0..$#l_cols) { </td> </tr> <tr> <td class="h" > <a name="2067">2067</a> </td> <td class="c3" > 4065 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2067-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 15484 </td> <td class="s"> if ( $args->{self_result_object}->has_column_loaded($l_cols[$i]) ) { </td> </tr> <tr> <td class="h" > <a name="2068">2068</a> </td> <td class="c3" > 3975 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 11719 </td> <td class="s"> $ret->{join_free_condition}{"$args->{foreign_alias}.$f_cols[$i]"} = $args->{self_result_object}->get_column($l_cols[$i]); </td> </tr> <tr> <td class="h" > <a name="2069">2069</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2070">2070</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> else { </td> </tr> <tr> <td class="h" > <a name="2071">2071</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->throw_exception(sprintf </td> </tr> <tr> <td class="h" > <a name="2072">2072</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "Unable to resolve relationship '%s' from object '%s': column '%s' not " </td> </tr> <tr> <td class="h" > <a name="2073">2073</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> . 'loaded from storage (or not passed to new() prior to insert()). You ' </td> </tr> <tr> <td class="h" > <a name="2074">2074</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> . 'probably need to call ->discard_changes to get the server-side defaults ' </td> </tr> <tr> <td class="h" > <a name="2075">2075</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> . 'from the database.', </td> </tr> <tr> <td class="h" > <a name="2076">2076</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $args->{rel_name}, </td> </tr> <tr> <td class="h" > <a name="2077">2077</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $args->{self_result_object}, </td> </tr> <tr> <td class="h" > <a name="2078">2078</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $l_cols[$i], </td> </tr> <tr> <td class="h" > <a name="2079">2079</a> </td> <td class="c3" > 90 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2079-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 376 </td> <td class="s"> ) if $args->{self_result_object}->in_storage; </td> </tr> <tr> <td class="h" > <a name="2080">2080</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2081">2081</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # FIXME - temporarly force-override </td> </tr> <tr> <td class="h" > <a name="2082">2082</a> </td> <td class="c3" > 88 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1521 </td> <td class="s"> delete $args->{require_join_free_condition}; </td> </tr> <tr> <td class="h" > <a name="2083">2083</a> </td> <td class="c3" > 88 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 152 </td> <td class="s"> $ret->{join_free_condition} = UNRESOLVABLE_CONDITION; </td> </tr> <tr> <td class="h" > <a name="2084">2084</a> </td> <td class="c3" > 88 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 175 </td> <td class="s"> last; </td> </tr> <tr> <td class="h" > <a name="2085">2085</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2086">2086</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2087">2087</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2088">2088</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2089">2089</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> elsif (ref $args->{condition} eq 'ARRAY') { </td> </tr> <tr> <td class="h" > <a name="2090">2090</a> </td> <td class="c3" > 17 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2090-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 31 </td> <td class="s"> if (@{$args->{condition}} == 0) { </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 17 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#-2"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 52 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2091">2091</a> </td> <td class="c0" > <a href="#2099"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> $ret = { </td> </tr> <tr> <td class="h" > <a name="2092">2092</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> condition => UNRESOLVABLE_CONDITION, </td> </tr> <tr> <td class="h" > <a name="2093">2093</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> join_free_condition => UNRESOLVABLE_CONDITION, </td> </tr> <tr> <td class="h" > <a name="2094">2094</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> }; </td> </tr> <tr> <td class="h" > <a name="2095">2095</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2096">2096</a> </td> <td class="c3" > 17 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 55 </td> <td class="s"> elsif (@{$args->{condition}} == 1) { </td> </tr> <tr> <td class="h" > <a name="2097">2097</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $ret = $self->_resolve_relationship_condition({ </td> </tr> <tr> <td class="h" > <a name="2098">2098</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> %$args, </td> </tr> <tr> <td class="h" > <a name="2099">2099</a> </td> <td class="c0" > <a href="#2117"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> condition => $args->{condition}[0], </td> </tr> <tr> <td class="h" > <a name="2100">2100</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> }); </td> </tr> <tr> <td class="h" > <a name="2101">2101</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2102">2102</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> else { </td> </tr> <tr> <td class="h" > <a name="2103">2103</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # we are discarding inferred values here... likely incorrect... </td> </tr> <tr> <td class="h" > <a name="2104">2104</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # then again - the entire thing is an OR, so we *can't* use them anyway </td> </tr> <tr> <td class="h" > <a name="2105">2105</a> </td> <td class="c3" > 17 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 27 </td> <td class="s"> for my $subcond ( map </td> </tr> <tr> <td class="h" > <a name="2106">2106</a> </td> <td class="c3" > 34 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 266 </td> <td class="s"> { $self->_resolve_relationship_condition({ %$args, condition => $_ }) } </td> </tr> <tr> <td class="h" > <a name="2107">2107</a> </td> <td class="c3" > 17 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 44 </td> <td class="s"> @{$args->{condition}} </td> </tr> <tr> <td class="h" > <a name="2108">2108</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ) { </td> </tr> <tr> <td class="h" > <a name="2109">2109</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->throw_exception('Either all or none of the OR-condition members must resolve to a join-free condition') </td> </tr> <tr> <td class="h" > <a name="2110">2110</a> </td> <td class="c3" > 34 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2110-1"> 50 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#2110-1"> 50 </a> </td> <td >   </td> <td >   </td> <td > 161 </td> <td class="s"> if ( $ret and ( $ret->{join_free_condition} xor $subcond->{join_free_condition} ) ); </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#-2"> 66 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2111">2111</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2112">2112</a> </td> <td class="c3" > 34 </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#2112-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 88 </td> <td class="s"> $subcond->{$_} and push @{$ret->{$_}}, $subcond->{$_} for (qw(condition join_free_condition)); </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 54 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 164 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2113">2113</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2114">2114</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2115">2115</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2116">2116</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> else { </td> </tr> <tr> <td class="h" > <a name="2117">2117</a> </td> <td class="c0" > <a href="#2246"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> $self->throw_exception ("Can't handle condition $args->{condition} for $exception_rel_id yet :("); </td> </tr> <tr> <td class="h" > <a name="2118">2118</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2119">2119</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2120">2120</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->throw_exception(ucfirst "$exception_rel_id does not resolve to a join-free condition fragment") if ( </td> </tr> <tr> <td class="h" > <a name="2121">2121</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $args->{require_join_free_condition} </td> </tr> <tr> <td class="h" > <a name="2122">2122</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> and </td> </tr> <tr> <td class="h" > <a name="2123">2123</a> </td> <td class="c3" > 5975 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2123-1"> 100 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#2123-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 19384 </td> <td class="s"> ( ! $ret->{join_free_condition} or $ret->{join_free_condition} eq UNRESOLVABLE_CONDITION ) </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#-2"> 66 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2124">2124</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ); </td> </tr> <tr> <td class="h" > <a name="2125">2125</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2126">2126</a> </td> <td class="c3" > 5974 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 12952 </td> <td class="s"> my $storage = $self->schema->storage; </td> </tr> <tr> <td class="h" > <a name="2127">2127</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2128">2128</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # we got something back - sanity check and infer values if we can </td> </tr> <tr> <td class="h" > <a name="2129">2129</a> </td> <td class="c3" > 5974 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 63429 </td> <td class="s"> my @nonvalues; </td> </tr> <tr> <td class="h" > <a name="2130">2130</a> </td> <td class="c3" > 5974 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2130-1"> 100 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#2130-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 29972 </td> <td class="s"> if ( my $jfc = $ret->{join_free_condition} and $ret->{join_free_condition} ne UNRESOLVABLE_CONDITION ) { </td> </tr> <tr> <td class="h" > <a name="2131">2131</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2132">2132</a> </td> <td class="c3" > 4576 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 16439 </td> <td class="s"> my $jfc_eqs = $storage->_extract_fixed_condition_columns($jfc, 'consider_nulls'); </td> </tr> <tr> <td class="h" > <a name="2133">2133</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2134">2134</a> </td> <td class="c3" > 4576 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2134-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 10709 </td> <td class="s"> if (keys %$jfc_eqs) { </td> </tr> <tr> <td class="h" > <a name="2135">2135</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2136">2136</a> </td> <td class="c3" > 4566 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 7566 </td> <td class="s"> for (keys %$jfc) { </td> </tr> <tr> <td class="h" > <a name="2137">2137</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # $jfc is fully qualified by definition </td> </tr> <tr> <td class="h" > <a name="2138">2138</a> </td> <td class="c3" > 4648 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 19920 </td> <td class="s"> my ($col) = $_ =~ /\.(.+)/; </td> </tr> <tr> <td class="h" > <a name="2139">2139</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2140">2140</a> </td> <td class="c3" > 4648 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2140-1"> 100 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#2140-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 25741 </td> <td class="s"> if (exists $jfc_eqs->{$_} and ($jfc_eqs->{$_}||'') ne UNRESOLVABLE_CONDITION) { </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#-2"> 100 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#-2"> 66 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#-3"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2141">2141</a> </td> <td class="c3" > 4637 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 14557 </td> <td class="s"> $ret->{inferred_values}{$col} = $jfc_eqs->{$_}; </td> </tr> <tr> <td class="h" > <a name="2142">2142</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2143">2143</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> elsif ( !$args->{infer_values_based_on} or ! exists $args->{infer_values_based_on}{$col} ) { </td> </tr> <tr> <td class="h" > <a name="2144">2144</a> </td> <td class="c3" > 10 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 15 </td> <td class="s"> push @nonvalues, $col; </td> </tr> <tr> <td class="h" > <a name="2145">2145</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2146">2146</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2147">2147</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2148">2148</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # all or nothing </td> </tr> <tr> <td class="h" > <a name="2149">2149</a> </td> <td class="c3" > 4566 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2149-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 11650 </td> <td class="s"> delete $ret->{inferred_values} if @nonvalues; </td> </tr> <tr> <td class="h" > <a name="2150">2150</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2151">2151</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2152">2152</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2153">2153</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # did the user explicitly ask </td> </tr> <tr> <td class="h" > <a name="2154">2154</a> </td> <td class="c3" > 5974 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2154-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 12975 </td> <td class="s"> if ($args->{infer_values_based_on}) { </td> </tr> <tr> <td class="h" > <a name="2155">2155</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2156">2156</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->throw_exception(sprintf ( </td> </tr> <tr> <td class="h" > <a name="2157">2157</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "Unable to complete value inferrence - custom $exception_rel_id returns conditions instead of values for column(s): %s", </td> </tr> <tr> <td class="h" > <a name="2158">2158</a> </td> <td class="c3" > 1248 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2158-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 2269 </td> <td class="s"> map { "'$_'" } @nonvalues </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 1 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 12 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2159">2159</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> )) if @nonvalues; </td> </tr> <tr> <td class="h" > <a name="2160">2160</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2161">2161</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2162">2162</a> </td> <td class="c3" > 1247 </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#2162-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 2472 </td> <td class="s"> $ret->{inferred_values} ||= {}; </td> </tr> <tr> <td class="h" > <a name="2163">2163</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2164">2164</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $ret->{inferred_values}{$_} = $args->{infer_values_based_on}{$_} </td> </tr> <tr> <td class="h" > <a name="2165">2165</a> </td> <td class="c3" > 1247 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1030 </td> <td class="s"> for keys %{$args->{infer_values_based_on}}; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 1247 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 4189 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2166">2166</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2167">2167</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2168">2168</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # add the identities based on the main condition </td> </tr> <tr> <td class="h" > <a name="2169">2169</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # (may already be there, since easy to calculate on the fly in the HASH case) </td> </tr> <tr> <td class="h" > <a name="2170">2170</a> </td> <td class="c3" > 5973 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2170-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 11521 </td> <td class="s"> if ( ! $ret->{identity_map} ) { </td> </tr> <tr> <td class="h" > <a name="2171">2171</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2172">2172</a> </td> <td class="c3" > 240 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 740 </td> <td class="s"> my $col_eqs = $storage->_extract_fixed_condition_columns($ret->{condition}); </td> </tr> <tr> <td class="h" > <a name="2173">2173</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2174">2174</a> </td> <td class="c3" > 240 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 215 </td> <td class="s"> my $colinfos; </td> </tr> <tr> <td class="h" > <a name="2175">2175</a> </td> <td class="c3" > 240 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 456 </td> <td class="s"> for my $lhs (keys %$col_eqs) { </td> </tr> <tr> <td class="h" > <a name="2176">2176</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2177">2177</a> </td> <td class="c3" > 222 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2177-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 585 </td> <td class="s"> next if $col_eqs->{$lhs} eq UNRESOLVABLE_CONDITION; </td> </tr> <tr> <td class="h" > <a name="2178">2178</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2179">2179</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # TEMP </td> </tr> <tr> <td class="h" > <a name="2180">2180</a> </td> <td class="c3" > 222 </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#2180-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 796 </td> <td class="s"> $rel_rsrc ||= $self->related_source($args->{rel_name}); </td> </tr> <tr> <td class="h" > <a name="2181">2181</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2182">2182</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # there is no way to know who is right and who is left in a cref </td> </tr> <tr> <td class="h" > <a name="2183">2183</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # therefore a full blown resolution call, and figure out the </td> </tr> <tr> <td class="h" > <a name="2184">2184</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # direction a bit further below </td> </tr> <tr> <td class="h" > <a name="2185">2185</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $colinfos ||= $storage->_resolve_column_info([ </td> </tr> <tr> <td class="h" > <a name="2186">2186</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { -alias => $args->{self_alias}, -rsrc => $self }, </td> </tr> <tr> <td class="h" > <a name="2187">2187</a> </td> <td class="c3" > 222 </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#2187-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 2020 </td> <td class="s"> { -alias => $args->{foreign_alias}, -rsrc => $rel_rsrc }, </td> </tr> <tr> <td class="h" > <a name="2188">2188</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ]); </td> </tr> <tr> <td class="h" > <a name="2189">2189</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2190">2190</a> </td> <td class="c3" > 222 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2190-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 673 </td> <td class="s"> next unless $colinfos->{$lhs}; # someone is engaging in witchcraft </td> </tr> <tr> <td class="h" > <a name="2191">2191</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2192">2192</a> </td> <td class="c3" > 222 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2192-1"> 100 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#2192-1"> 50 </a> </td> <td >   </td> <td >   </td> <td > 620 </td> <td class="s"> if ( my $rhs_ref = is_literal_value( $col_eqs->{$lhs} ) ) { </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#-2"> 100 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#-2"> 66 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2193">2193</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2194">2194</a> </td> <td class="c3" > 184 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2194-1"> 100 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#2194-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 3330 </td> <td class="s"> if ( </td> </tr> <tr> <td class="h" > <a name="2195">2195</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $colinfos->{$rhs_ref->[0]} </td> </tr> <tr> <td class="h" > <a name="2196">2196</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> and </td> </tr> <tr> <td class="h" > <a name="2197">2197</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $colinfos->{$lhs}{-source_alias} ne $colinfos->{$rhs_ref->[0]}{-source_alias} </td> </tr> <tr> <td class="h" > <a name="2198">2198</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ) { </td> </tr> <tr> <td class="h" > <a name="2199">2199</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ( $colinfos->{$lhs}{-source_alias} eq $args->{self_alias} ) </td> </tr> <tr> <td class="h" > <a name="2200">2200</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ? ( $ret->{identity_map}{$colinfos->{$lhs}{-colname}} = $colinfos->{$rhs_ref->[0]}{-colname} ) </td> </tr> <tr> <td class="h" > <a name="2201">2201</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> : ( $ret->{identity_map}{$colinfos->{$rhs_ref->[0]}{-colname}} = $colinfos->{$lhs}{-colname} ) </td> </tr> <tr> <td class="h" > <a name="2202">2202</a> </td> <td class="c3" > 8 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2202-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 112 </td> <td class="s"> ; </td> </tr> <tr> <td class="h" > <a name="2203">2203</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2204">2204</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2205">2205</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> elsif ( </td> </tr> <tr> <td class="h" > <a name="2206">2206</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $col_eqs->{$lhs} =~ /^ ( \Q$args->{self_alias}\E \. .+ ) /x </td> </tr> <tr> <td class="h" > <a name="2207">2207</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> and </td> </tr> <tr> <td class="h" > <a name="2208">2208</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ($colinfos->{$1}||{})->{-result_source} == $rel_rsrc </td> </tr> <tr> <td class="h" > <a name="2209">2209</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ) { </td> </tr> <tr> <td class="h" > <a name="2210">2210</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my ($lcol, $rcol) = map </td> </tr> <tr> <td class="h" > <a name="2211">2211</a> </td> <td class="c3" > 2 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 78 </td> <td class="s"> { $colinfos->{$_}{-colname} } </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 4 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 12 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2212">2212</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ( $lhs, $1 ) </td> </tr> <tr> <td class="h" > <a name="2213">2213</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ; </td> </tr> <tr> <td class="h" > <a name="2214">2214</a> </td> <td class="c3" > 2 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 16 </td> <td class="s"> carp_unique( </td> </tr> <tr> <td class="h" > <a name="2215">2215</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "The $exception_rel_id specifies equality of column '$lcol' and the " </td> </tr> <tr> <td class="h" > <a name="2216">2216</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> . "*VALUE* '$rcol' (you did not use the { -ident => ... } operator)" </td> </tr> <tr> <td class="h" > <a name="2217">2217</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ); </td> </tr> <tr> <td class="h" > <a name="2218">2218</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2219">2219</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2220">2220</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2221">2221</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2222">2222</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # FIXME - temporary, to fool the idiotic check in SQLMaker::_join_condition </td> </tr> <tr> <td class="h" > <a name="2223">2223</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $ret->{condition} = { -and => [ $ret->{condition} ] } </td> </tr> <tr> <td class="h" > <a name="2224">2224</a> </td> <td class="c3" > 5973 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2224-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 29648 </td> <td class="s"> unless $ret->{condition} eq UNRESOLVABLE_CONDITION; </td> </tr> <tr> <td class="h" > <a name="2225">2225</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2226">2226</a> </td> <td class="c3" > 5973 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 34408 </td> <td class="s"> $ret; </td> </tr> <tr> <td class="h" > <a name="2227">2227</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2228">2228</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2229">2229</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head2 related_source </td> </tr> <tr> <td class="h" > <a name="2230">2230</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2231">2231</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =over 4 </td> </tr> <tr> <td class="h" > <a name="2232">2232</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2233">2233</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Arguments: $rel_name </td> </tr> <tr> <td class="h" > <a name="2234">2234</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2235">2235</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Return Value: $source </td> </tr> <tr> <td class="h" > <a name="2236">2236</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2237">2237</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =back </td> </tr> <tr> <td class="h" > <a name="2238">2238</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2239">2239</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Returns the result source object for the given relationship. </td> </tr> <tr> <td class="h" > <a name="2240">2240</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2241">2241</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =cut </td> </tr> <tr> <td class="h" > <a name="2242">2242</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2243">2243</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub related_source { </td> </tr> <tr> <td class="h" > <a name="2244">2244</a> </td> <td class="c3" > 16320 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#2244-1"> 16320 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#2244-1"> 1 </a> </td> <td > 20291 </td> <td class="s"> my ($self, $rel) = @_; </td> </tr> <tr> <td class="h" > <a name="2245">2245</a> </td> <td class="c3" > 16320 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2245-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 25947 </td> <td class="s"> if( !$self->has_relationship( $rel ) ) { </td> </tr> <tr> <td class="h" > <a name="2246">2246</a> </td> <td class="c0" > <a href="#2277"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> $self->throw_exception("No such relationship '$rel' on " . $self->source_name); </td> </tr> <tr> <td class="h" > <a name="2247">2247</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2248">2248</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2249">2249</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # if we are not registered with a schema - just use the prototype </td> </tr> <tr> <td class="h" > <a name="2250">2250</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # however if we do have a schema - ask for the source by name (and </td> </tr> <tr> <td class="h" > <a name="2251">2251</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # throw in the process if all fails) </td> </tr> <tr> <td class="h" > <a name="2252">2252</a> </td> <td class="c3" > 16320 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2252-1"> 100 </a> </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#2252-1"> 16320 </a> </td> <td >   </td> <td > 65954 </td> <td class="s"> if (my $schema = try { $self->schema }) { </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 16320 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 386036 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2253">2253</a> </td> <td class="c3" > 16301 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 122569 </td> <td class="s"> $schema->source($self->relationship_info($rel)->{source}); </td> </tr> <tr> <td class="h" > <a name="2254">2254</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2255">2255</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> else { </td> </tr> <tr> <td class="h" > <a name="2256">2256</a> </td> <td class="c3" > 19 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 345 </td> <td class="s"> my $class = $self->relationship_info($rel)->{class}; </td> </tr> <tr> <td class="h" > <a name="2257">2257</a> </td> <td class="c3" > 19 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 70 </td> <td class="s"> $self->ensure_class_loaded($class); </td> </tr> <tr> <td class="h" > <a name="2258">2258</a> </td> <td class="c3" > 19 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 763 </td> <td class="s"> $class->result_source_instance; </td> </tr> <tr> <td class="h" > <a name="2259">2259</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2260">2260</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2261">2261</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2262">2262</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head2 related_class </td> </tr> <tr> <td class="h" > <a name="2263">2263</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2264">2264</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =over 4 </td> </tr> <tr> <td class="h" > <a name="2265">2265</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2266">2266</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Arguments: $rel_name </td> </tr> <tr> <td class="h" > <a name="2267">2267</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2268">2268</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Return Value: $classname </td> </tr> <tr> <td class="h" > <a name="2269">2269</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2270">2270</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =back </td> </tr> <tr> <td class="h" > <a name="2271">2271</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2272">2272</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Returns the class name for objects in the given relationship. </td> </tr> <tr> <td class="h" > <a name="2273">2273</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2274">2274</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =cut </td> </tr> <tr> <td class="h" > <a name="2275">2275</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2276">2276</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub related_class { </td> </tr> <tr> <td class="h" > <a name="2277">2277</a> </td> <td class="c0" > <a href="#2278"> 0 </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#2277-1"> 0 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#2277-1"> 1 </a> </td> <td > 0 </td> <td class="s"> my ($self, $rel) = @_; </td> </tr> <tr> <td class="h" > <a name="2278">2278</a> </td> <td class="c0" > <a href="#2279"> 0 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2278-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> if( !$self->has_relationship( $rel ) ) { </td> </tr> <tr> <td class="h" > <a name="2279">2279</a> </td> <td class="c0" > <a href="#2281"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> $self->throw_exception("No such relationship '$rel' on " . $self->source_name); </td> </tr> <tr> <td class="h" > <a name="2280">2280</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2281">2281</a> </td> <td class="c0" > <a href="#2357"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> return $self->schema->class($self->relationship_info($rel)->{source}); </td> </tr> <tr> <td class="h" > <a name="2282">2282</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2283">2283</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2284">2284</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head2 handle </td> </tr> <tr> <td class="h" > <a name="2285">2285</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2286">2286</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =over 4 </td> </tr> <tr> <td class="h" > <a name="2287">2287</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2288">2288</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Arguments: none </td> </tr> <tr> <td class="h" > <a name="2289">2289</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2290">2290</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Return Value: L<$source_handle|DBIx::Class::ResultSourceHandle> </td> </tr> <tr> <td class="h" > <a name="2291">2291</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2292">2292</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =back </td> </tr> <tr> <td class="h" > <a name="2293">2293</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2294">2294</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Obtain a new L<result source handle instance|DBIx::Class::ResultSourceHandle> </td> </tr> <tr> <td class="h" > <a name="2295">2295</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> for this source. Used as a serializable pointer to this resultsource, as it is not </td> </tr> <tr> <td class="h" > <a name="2296">2296</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> easy (nor advisable) to serialize CODErefs which may very well be present in e.g. </td> </tr> <tr> <td class="h" > <a name="2297">2297</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> relationship definitions. </td> </tr> <tr> <td class="h" > <a name="2298">2298</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2299">2299</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =cut </td> </tr> <tr> <td class="h" > <a name="2300">2300</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2301">2301</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub handle { </td> </tr> <tr> <td class="h" > <a name="2302">2302</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> return DBIx::Class::ResultSourceHandle->new({ </td> </tr> <tr> <td class="h" > <a name="2303">2303</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> source_moniker => $_[0]->source_name, </td> </tr> <tr> <td class="h" > <a name="2304">2304</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2305">2305</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # so that a detached thaw can be re-frozen </td> </tr> <tr> <td class="h" > <a name="2306">2306</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $_[0]->{_detached_thaw} </td> </tr> <tr> <td class="h" > <a name="2307">2307</a> </td> <td class="c3" > 206 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2307-1"> 50 </a> </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#2307-1"> 206 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#2307-1"> 1 </a> </td> <td > 836 </td> <td class="s"> ? ( _detached_source => $_[0] ) </td> </tr> <tr> <td class="h" > <a name="2308">2308</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> : ( schema => $_[0]->schema ) </td> </tr> <tr> <td class="h" > <a name="2309">2309</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> , </td> </tr> <tr> <td class="h" > <a name="2310">2310</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> }); </td> </tr> <tr> <td class="h" > <a name="2311">2311</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2312">2312</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2313">2313</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my $global_phase_destroy; </td> </tr> <tr> <td class="h" > <a name="2314">2314</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub DESTROY { </td> </tr> <tr> <td class="h" > <a name="2315">2315</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ### NO detected_reinvoked_destructor check </td> </tr> <tr> <td class="h" > <a name="2316">2316</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ### This code very much relies on being called multuple times </td> </tr> <tr> <td class="h" > <a name="2317">2317</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2318">2318</a> </td> <td class="c3" > 123203 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2318-1"> 50 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#2318-1"> 33 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#2318-1"> 123203 </a> </td> <td >   </td> <td > 2338271 </td> <td class="s"> return if $global_phase_destroy ||= in_global_destruction; </td> </tr> <tr> <td class="h" > <a name="2319">2319</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2320">2320</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ###### </td> </tr> <tr> <td class="h" > <a name="2321">2321</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # !!! ACHTUNG !!!! </td> </tr> <tr> <td class="h" > <a name="2322">2322</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ###### </td> </tr> <tr> <td class="h" > <a name="2323">2323</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # </td> </tr> <tr> <td class="h" > <a name="2324">2324</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Under no circumstances shall $_[0] be stored anywhere else (like copied to </td> </tr> <tr> <td class="h" > <a name="2325">2325</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # a lexical variable, or shifted, or anything else). Doing so will mess up </td> </tr> <tr> <td class="h" > <a name="2326">2326</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # the refcount of this particular result source, and will allow the $schema </td> </tr> <tr> <td class="h" > <a name="2327">2327</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # we are trying to save to reattach back to the source we are destroying. </td> </tr> <tr> <td class="h" > <a name="2328">2328</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # The relevant code checking refcounts is in ::Schema::DESTROY() </td> </tr> <tr> <td class="h" > <a name="2329">2329</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2330">2330</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # if we are not a schema instance holder - we don't matter </td> </tr> <tr> <td class="h" > <a name="2331">2331</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> return if( </td> </tr> <tr> <td class="h" > <a name="2332">2332</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ! ref $_[0]->{schema} </td> </tr> <tr> <td class="h" > <a name="2333">2333</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> or </td> </tr> <tr> <td class="h" > <a name="2334">2334</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> isweak $_[0]->{schema} </td> </tr> <tr> <td class="h" > <a name="2335">2335</a> </td> <td class="c3" > 123203 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2335-1"> 100 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--condition.html#2335-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 1633501 </td> <td class="s"> ); </td> </tr> <tr> <td class="h" > <a name="2336">2336</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2337">2337</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # weaken our schema hold forcing the schema to find somewhere else to live </td> </tr> <tr> <td class="h" > <a name="2338">2338</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # during global destruction (if we have not yet bailed out) this will throw </td> </tr> <tr> <td class="h" > <a name="2339">2339</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # which will serve as a signal to not try doing anything else </td> </tr> <tr> <td class="h" > <a name="2340">2340</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # however beware - on older perls the exception seems randomly untrappable </td> </tr> <tr> <td class="h" > <a name="2341">2341</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # due to some weird race condition during thread joining :((( </td> </tr> <tr> <td class="h" > <a name="2342">2342</a> </td> <td class="c3" > 18675 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 16711 </td> <td class="s"> local $@; </td> </tr> <tr> <td class="h" > <a name="2343">2343</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> eval { </td> </tr> <tr> <td class="h" > <a name="2344">2344</a> </td> <td class="c3" > 18675 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 27361 </td> <td class="s"> weaken $_[0]->{schema}; </td> </tr> <tr> <td class="h" > <a name="2345">2345</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2346">2346</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # if schema is still there reintroduce ourselves with strong refs back to us </td> </tr> <tr> <td class="h" > <a name="2347">2347</a> </td> <td class="c3" > 18675 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2347-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 30351 </td> <td class="s"> if ($_[0]->{schema}) { </td> </tr> <tr> <td class="h" > <a name="2348">2348</a> </td> <td class="c3" > 18665 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 306898 </td> <td class="s"> my $srcregs = $_[0]->{schema}->source_registrations; </td> </tr> <tr> <td class="h" > <a name="2349">2349</a> </td> <td class="c3" > 18665 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 227839 </td> <td class="s"> for (keys %$srcregs) { </td> </tr> <tr> <td class="h" > <a name="2350">2350</a> </td> <td class="c3" > 858686 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2350-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 1004484 </td> <td class="s"> next unless $srcregs->{$_}; </td> </tr> <tr> <td class="h" > <a name="2351">2351</a> </td> <td class="c3" > 858686 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2351-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 1139294 </td> <td class="s"> $srcregs->{$_} = $_[0] if $srcregs->{$_} == $_[0]; </td> </tr> <tr> <td class="h" > <a name="2352">2352</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2353">2353</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2354">2354</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2355">2355</a> </td> <td class="c3" > 18675 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 56643 </td> <td class="s"> 1; </td> </tr> <tr> <td class="h" > <a name="2356">2356</a> </td> <td class="c3" > 18675 </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2356-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 18769 </td> <td class="s"> } or do { </td> </tr> <tr> <td class="h" > <a name="2357">2357</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> $global_phase_destroy = 1; </td> </tr> <tr> <td class="h" > <a name="2358">2358</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> }; </td> </tr> <tr> <td class="h" > <a name="2359">2359</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2360">2360</a> </td> <td class="c3" > 18675 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 98114 </td> <td class="s"> return; </td> </tr> <tr> <td class="h" > <a name="2361">2361</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2362">2362</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2363">2363</a> </td> <td class="c3" > 204 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#2363-1"> 204 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#2363-1"> 0 </a> </td> <td > 3686 </td> <td class="s"> sub STORABLE_freeze { Storable::nfreeze($_[0]->handle) } </td> </tr> <tr> <td class="h" > <a name="2364">2364</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2365">2365</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub STORABLE_thaw { </td> </tr> <tr> <td class="h" > <a name="2366">2366</a> </td> <td class="c3" > 204 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#2366-1"> 204 </a> </td> <td class="c0" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#2366-1"> 0 </a> </td> <td > 2634 </td> <td class="s"> my ($self, $cloning, $ice) = @_; </td> </tr> <tr> <td class="h" > <a name="2367">2367</a> </td> <td class="c3" > 204 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 171 </td> <td class="s"> %$self = %{ (Storable::thaw($ice))->resolve }; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 204 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 373 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2368">2368</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2369">2369</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2370">2370</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head2 throw_exception </td> </tr> <tr> <td class="h" > <a name="2371">2371</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2372">2372</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> See L<DBIx::Class::Schema/"throw_exception">. </td> </tr> <tr> <td class="h" > <a name="2373">2373</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2374">2374</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =cut </td> </tr> <tr> <td class="h" > <a name="2375">2375</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2376">2376</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub throw_exception { </td> </tr> <tr> <td class="h" > <a name="2377">2377</a> </td> <td class="c3" > 2038 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#2377-1"> 2038 </a> </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--subroutine.html#2377-1"> 1 </a> </td> <td > 3505 </td> <td class="s"> my $self = shift; </td> </tr> <tr> <td class="h" > <a name="2378">2378</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2379">2379</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->{schema} </td> </tr> <tr> <td class="h" > <a name="2380">2380</a> </td> <td class="c3" > 2038 </td> <td class="c3" > <a href="blib-lib-DBIx-Class-ResultSource-pm--branch.html#2380-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 10613 </td> <td class="s"> ? $self->{schema}->throw_exception(@_) </td> </tr> <tr> <td class="h" > <a name="2381">2381</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> : DBIx::Class::Exception->throw(@_) </td> </tr> <tr> <td class="h" > <a name="2382">2382</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ; </td> </tr> <tr> <td class="h" > <a name="2383">2383</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2384">2384</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2385">2385</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head2 column_info_from_storage </td> </tr> <tr> <td class="h" > <a name="2386">2386</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2387">2387</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =over </td> </tr> <tr> <td class="h" > <a name="2388">2388</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2389">2389</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Arguments: 1/0 (default: 0) </td> </tr> <tr> <td class="h" > <a name="2390">2390</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2391">2391</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =item Return Value: 1/0 </td> </tr> <tr> <td class="h" > <a name="2392">2392</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2393">2393</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =back </td> </tr> <tr> <td class="h" > <a name="2394">2394</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2395">2395</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> __PACKAGE__->column_info_from_storage(1); </td> </tr> <tr> <td class="h" > <a name="2396">2396</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2397">2397</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Enables the on-demand automatic loading of the above column </td> </tr> <tr> <td class="h" > <a name="2398">2398</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> metadata from storage as necessary. This is *deprecated*, and </td> </tr> <tr> <td class="h" > <a name="2399">2399</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> should not be used. It will be removed before 1.0. </td> </tr> <tr> <td class="h" > <a name="2400">2400</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2401">2401</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head1 FURTHER QUESTIONS? </td> </tr> <tr> <td class="h" > <a name="2402">2402</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2403">2403</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Check the list of L<additional DBIC resources|DBIx::Class/GETTING HELP/SUPPORT>. </td> </tr> <tr> <td class="h" > <a name="2404">2404</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2405">2405</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =head1 COPYRIGHT AND LICENSE </td> </tr> <tr> <td class="h" > <a name="2406">2406</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2407">2407</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This module is free software L<copyright|DBIx::Class/COPYRIGHT AND LICENSE> </td> </tr> <tr> <td class="h" > <a name="2408">2408</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> by the L<DBIx::Class (DBIC) authors|DBIx::Class/AUTHORS>. You can </td> </tr> <tr> <td class="h" > <a name="2409">2409</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> redistribute it and/or modify it under the same terms as the </td> </tr> <tr> <td class="h" > <a name="2410">2410</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> L<DBIx::Class library|DBIx::Class/COPYRIGHT AND LICENSE>. </td> </tr> <tr> <td class="h" > <a name="2411">2411</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2412">2412</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> =cut </td> </tr> <tr> <td class="h" > <a name="2413">2413</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2414">2414</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 1; </td> </tr> </table> </body> </html>