Introduced Krawfish::Compile::Segment::Nowhere
Change-Id: If7f73dd173f1b2dde8b44068ecfdd473513a5018
diff --git a/lib/Krawfish/Compile.pm b/lib/Krawfish/Compile.pm
index 8efd01f..fb46c1a 100644
--- a/lib/Krawfish/Compile.pm
+++ b/lib/Krawfish/Compile.pm
@@ -89,6 +89,10 @@
};
+sub clone {
+ warn 'Unimplemented';
+};
+
# Get maximum frequency
sub max_freq {
$_[0]->{query}->max_freq;
diff --git a/lib/Krawfish/Compile/Segment/Nowhere.pm b/lib/Krawfish/Compile/Segment/Nowhere.pm
new file mode 100644
index 0000000..c6c37ed
--- /dev/null
+++ b/lib/Krawfish/Compile/Segment/Nowhere.pm
@@ -0,0 +1,14 @@
+package Krawfish::Compile::Segment::Nowhere;
+use strict;
+use warnings;
+use Role::Tiny;
+
+with 'Krawfish::Query::Nowhere';
+with 'Krawfish::Compile';
+
+
+sub compile {
+ return shift->result;
+};
+
+1;
diff --git a/lib/Krawfish/Corpus.pm b/lib/Krawfish/Corpus.pm
index 6b7d7f9..699efe2 100644
--- a/lib/Krawfish/Corpus.pm
+++ b/lib/Krawfish/Corpus.pm
@@ -93,4 +93,11 @@
};
+# Stop compilation of results in non-compile queries
+sub compile {
+ 1;
+};
+
+
+
1;
diff --git a/lib/Krawfish/Koral/Compile.pm b/lib/Krawfish/Koral/Compile.pm
index 2629bee..300a927 100644
--- a/lib/Krawfish/Koral/Compile.pm
+++ b/lib/Krawfish/Koral/Compile.pm
@@ -255,18 +255,6 @@
};
-# Send to segments
-sub to_segment {
- ...
-};
-
-
-# Optimize query
-sub optimize {
- ...
-};
-
-
1;
diff --git a/lib/Krawfish/Koral/Compile/Builder.pm b/lib/Krawfish/Koral/Compile/Builder.pm
index ef1b1c3..f7cb3cc 100644
--- a/lib/Krawfish/Koral/Compile/Builder.pm
+++ b/lib/Krawfish/Koral/Compile/Builder.pm
@@ -155,6 +155,7 @@
);
};
+
sub e_inline {
# TODO:
# Add inline annotation information, like
@@ -167,6 +168,7 @@
...
};
+
# Enrich with Term lists per class
sub e_terms {
shift;
diff --git a/lib/Krawfish/Koral/Compile/Node/Aggregate.pm b/lib/Krawfish/Koral/Compile/Node/Aggregate.pm
index 7adaffb..88a83d0 100644
--- a/lib/Krawfish/Koral/Compile/Node/Aggregate.pm
+++ b/lib/Krawfish/Koral/Compile/Node/Aggregate.pm
@@ -1,6 +1,6 @@
package Krawfish::Koral::Compile::Node::Aggregate;
use Krawfish::Compile::Segment::Aggregate;
-use Krawfish::Query::Nowhere;
+use Krawfish::Compile::Segment::Nowhere;
use strict;
use warnings;
@@ -54,7 +54,7 @@
# null-values for aggregation that need to
# be returned.
if ($query->max_freq == 0) {
- return Krawfish::Query::Nowhere->new;
+ return Krawfish::Compile::Segment::Nowhere->new;
};
# Get all aggregations
diff --git a/lib/Krawfish/Koral/Compile/Node/Enrich/CorpusClasses.pm b/lib/Krawfish/Koral/Compile/Node/Enrich/CorpusClasses.pm
index a06e2a6..f7e14a9 100644
--- a/lib/Krawfish/Koral/Compile/Node/Enrich/CorpusClasses.pm
+++ b/lib/Krawfish/Koral/Compile/Node/Enrich/CorpusClasses.pm
@@ -1,7 +1,7 @@
package Krawfish::Koral::Compile::Node::Enrich::CorpusClasses;
use Krawfish::Compile::Segment::Enrich::CorpusClasses;
use Krawfish::Util::Bits;
-use Krawfish::Query::Nowhere;
+use Krawfish::Compile::Segment::Nowhere;
use strict;
use warnings;
@@ -40,7 +40,7 @@
my $query = $self->{query}->optimize($segment);
if ($query->max_freq == 0) {
- return Krawfish::Query::Nowhere->new;
+ return Krawfish::Compile::Segment::Nowhere->new;
};
# Create corpus class object
diff --git a/lib/Krawfish/Koral/Compile/Node/Enrich/Fields.pm b/lib/Krawfish/Koral/Compile/Node/Enrich/Fields.pm
index 0dce9f3..387c532 100644
--- a/lib/Krawfish/Koral/Compile/Node/Enrich/Fields.pm
+++ b/lib/Krawfish/Koral/Compile/Node/Enrich/Fields.pm
@@ -1,7 +1,7 @@
package Krawfish::Koral::Compile::Node::Enrich::Fields;
use Krawfish::Compile::Segment::Enrich::Fields;
use Krawfish::Util::String qw/squote/;
-use Krawfish::Query::Nowhere;
+use Krawfish::Compile::Segment::Nowhere;
use strict;
use warnings;
@@ -63,7 +63,7 @@
my $query = $self->{query}->optimize($segment);
if ($query->max_freq == 0) {
- return Krawfish::Query::Nowhere->new;
+ return Krawfish::Compile::Segment::Nowhere->new;
};
return Krawfish::Compile::Segment::Enrich::Fields->new(
diff --git a/lib/Krawfish/Koral/Compile/Node/Enrich/Snippet.pm b/lib/Krawfish/Koral/Compile/Node/Enrich/Snippet.pm
index 8ac16c7..a4d5d43 100644
--- a/lib/Krawfish/Koral/Compile/Node/Enrich/Snippet.pm
+++ b/lib/Krawfish/Koral/Compile/Node/Enrich/Snippet.pm
@@ -1,7 +1,7 @@
package Krawfish::Koral::Compile::Node::Enrich::Snippet;
use Krawfish::Compile::Segment::Enrich::Snippet;
use Krawfish::Util::String qw/squote/;
-use Krawfish::Query::Nowhere;
+use Krawfish::Compile::Segment::Nowhere;
use strict;
use warnings;
@@ -64,7 +64,7 @@
my $query = $self->{query}->optimize($segment);
if ($query->max_freq == 0) {
- return Krawfish::Query::Nowhere->new;
+ return Krawfish::Compile::Segment::Nowhere->new;
};
# Create left context object
diff --git a/lib/Krawfish/Koral/Compile/Node/Enrich/Terms.pm b/lib/Krawfish/Koral/Compile/Node/Enrich/Terms.pm
index 618c67f..9d91860 100644
--- a/lib/Krawfish/Koral/Compile/Node/Enrich/Terms.pm
+++ b/lib/Krawfish/Koral/Compile/Node/Enrich/Terms.pm
@@ -1,6 +1,6 @@
package Krawfish::Koral::Compile::Node::Enrich::Terms;
use Krawfish::Compile::Segment::Enrich::Terms;
-use Krawfish::Query::Nowhere;
+use Krawfish::Compile::Segment::Nowhere;
use strict;
use warnings;
@@ -37,7 +37,7 @@
my $query = $self->{query}->optimize($segment);
if ($query->max_freq == 0) {
- return Krawfish::Query::Nowhere->new;
+ return Krawfish::Compile::Segment::Nowhere->new;
};
return Krawfish::Compile::Segment::Enrich::Terms->new(
diff --git a/lib/Krawfish/Koral/Compile/Node/Group/ClassFrequencies.pm b/lib/Krawfish/Koral/Compile/Node/Group/ClassFrequencies.pm
index 5c71ab9..93bf0c7 100644
--- a/lib/Krawfish/Koral/Compile/Node/Group/ClassFrequencies.pm
+++ b/lib/Krawfish/Koral/Compile/Node/Group/ClassFrequencies.pm
@@ -1,7 +1,7 @@
package Krawfish::Koral::Compile::Node::Group::ClassFrequencies;
use Krawfish::Compile::Segment::Group::ClassFrequencies;
use Krawfish::Util::String qw/squote/;
-use Krawfish::Query::Nowhere;
+use Krawfish::Compile::Segment::Nowhere;
use strict;
use warnings;
@@ -38,7 +38,7 @@
my $query = $self->{query}->optimize($segment);
if ($query->max_freq == 0) {
- return Krawfish::Query::Nowhere->new;
+ return Krawfish::Compile::Segment::Nowhere->new;
};
return Krawfish::Compile::Segment::Group::ClassFrequencies->new(
diff --git a/lib/Krawfish/Koral/Compile/Node/Group/Fields.pm b/lib/Krawfish/Koral/Compile/Node/Group/Fields.pm
index 72329ca..209eeac 100644
--- a/lib/Krawfish/Koral/Compile/Node/Group/Fields.pm
+++ b/lib/Krawfish/Koral/Compile/Node/Group/Fields.pm
@@ -1,7 +1,7 @@
package Krawfish::Koral::Compile::Node::Group::Fields;
use Krawfish::Compile::Segment::Group::Fields;
use Krawfish::Util::String qw/squote/;
-use Krawfish::Query::Nowhere;
+use Krawfish::Compile::Segment::Nowhere;
use strict;
use warnings;
@@ -63,7 +63,7 @@
my $query = $self->{query}->optimize($segment);
if ($query->max_freq == 0) {
- return Krawfish::Query::Nowhere->new;
+ return Krawfish::Compile::Segment::Nowhere->new;
};
return Krawfish::Compile::Segment::Group::Fields->new(
diff --git a/lib/Krawfish/Koral/Compile/Node/Limit.pm b/lib/Krawfish/Koral/Compile/Node/Limit.pm
index 0196824..deb7463 100644
--- a/lib/Krawfish/Koral/Compile/Node/Limit.pm
+++ b/lib/Krawfish/Koral/Compile/Node/Limit.pm
@@ -4,7 +4,7 @@
# Limiting can only be done on the cluster level!
use Krawfish::Compile::Cluster::Limit;
-use Krawfish::Query::Nowhere;
+use Krawfish::Compile::Segment::Nowhere;
use Krawfish::Log;
use strict;
use warnings;
@@ -50,7 +50,7 @@
my $query = $self->{query}->optimize($segment);
if ($query->max_freq == 0) {
- return Krawfish::Query::Nowhere->new;
+ return Krawfish::Compile::Segment::Nowhere->new;
};
return Krawfish::Compile::Limit->new(
diff --git a/lib/Krawfish/Koral/Compile/Node/Sort.pm b/lib/Krawfish/Koral/Compile/Node/Sort.pm
index 395b286..a68a4ea 100644
--- a/lib/Krawfish/Koral/Compile/Node/Sort.pm
+++ b/lib/Krawfish/Koral/Compile/Node/Sort.pm
@@ -2,7 +2,7 @@
use Krawfish::Compile::Segment::Sort;
use Krawfish::Compile::Segment::SortAfter;
use Krawfish::Compile::Segment::BundleDocs;
-use Krawfish::Query::Nowhere;
+use Krawfish::Compile::Segment::Nowhere;
use Krawfish::Log;
use strict;
use warnings;
@@ -68,7 +68,7 @@
my $query = $self->{query}->optimize($segment);
if ($query->max_freq == 0) {
- return Krawfish::Query::Nowhere->new;
+ return Krawfish::Compile::Segment::Nowhere->new;
};
# TODO:
diff --git a/lib/Krawfish/Koral/Compile/Node/Sort/Sample.pm b/lib/Krawfish/Koral/Compile/Node/Sort/Sample.pm
index abedc35..56eada1 100644
--- a/lib/Krawfish/Koral/Compile/Node/Sort/Sample.pm
+++ b/lib/Krawfish/Koral/Compile/Node/Sort/Sample.pm
@@ -1,6 +1,6 @@
package Krawfish::Koral::Compile::Node::Sort::Sample;
use Krawfish::Compile::Segment::Sort::Sample;
-use Krawfish::Query::Nowhere;
+use Krawfish::Compile::Segment::Nowhere;
use strict;
use warnings;
@@ -43,7 +43,7 @@
my $query = $self->{query}->optimize($segment);
if ($query->max_freq == 0) {
- return Krawfish::Query::Nowhere->new;
+ return Krawfish::Compile::Segment::Nowhere->new;
};
return Krawfish::Compile::Segment::Sort::Sample->new(
diff --git a/lib/Krawfish/Query.pm b/lib/Krawfish/Query.pm
index 7b4ea91..2832a09 100644
--- a/lib/Krawfish/Query.pm
+++ b/lib/Krawfish/Query.pm
@@ -85,15 +85,6 @@
};
-
-# Clone query
-# (Not implemented yet)
-sub clone {
- warn $_[0];
- ...
-};
-
-
# TODO:
# This is a value that should probably be stored
# at span-beginnings and can help to jump through very long
@@ -121,10 +112,4 @@
};
-# Stop compilation of results in non-compile queries
-sub compile {
- return 1;
-};
-
-
1;
diff --git a/lib/Krawfish/Query/Base/Sorted.pm b/lib/Krawfish/Query/Base/Sorted.pm
index d74d6c3..d8ee044 100644
--- a/lib/Krawfish/Query/Base/Sorted.pm
+++ b/lib/Krawfish/Query/Base/Sorted.pm
@@ -46,21 +46,36 @@
};
+# Clone query
+sub clone {
+ my $self = shift;
+ return __PACKAGE__->new(
+ $self->{span},
+ $self->{capacity}
+ );
+};
+
+
+# Get maximum frequency
sub max_freq {
$_->{span}->max_freq;
};
+# Filter query
sub filter_by {
my $self = shift;
$self->{span}->filter_by(@_);
};
+# Check if the query requires filtering
sub requires_filter {
shift->{span}->requires_filter;
};
+
+# Stringification
sub to_string {
my $self = shift;
return 'sorted(' . $self->{span}->to_string . ')';
diff --git a/lib/Krawfish/Query/Nowhere.pm b/lib/Krawfish/Query/Nowhere.pm
index 89fb1f2..7510055 100644
--- a/lib/Krawfish/Query/Nowhere.pm
+++ b/lib/Krawfish/Query/Nowhere.pm
@@ -2,7 +2,7 @@
use strict;
use warnings;
use Krawfish::Util::Constants qw/NOMOREDOCS/;
-use Role::Tiny::With;
+use Role::Tiny;
with 'Krawfish::Query';
diff --git a/lib/Test/Krawfish.pm b/lib/Test/Krawfish.pm
index 83a6c2e..7e9ec2a 100644
--- a/lib/Test/Krawfish.pm
+++ b/lib/Test/Krawfish.pm
@@ -272,8 +272,13 @@
foreach my $key (sort keys %$hash) {
my $type = 'string';
my $long_key = $key;
- if ($key =~ s/^(string|integer|store)_//) {
- $type = $1;
+ if ($key =~ s/^(string|int(?:eger)?|store)_//) {
+ if ($1 eq 'int') {
+ $type = 'integer';
+ }
+ else {
+ $type = $1;
+ };
};
push(@fields, {