use lib '.'; use Relations::Query; $query_one = "select barney as fife " . "from moogoo as green_teeth ". "where flotsam>jetsam " . "group by denali " . "having fortune=cookie " . "order by was,is,will ". "limit 1"; $query = new Relations::Query(-select => {'fife' => 'barney'}, -from => {'green_teeth' => 'moogoo'}, -where => "flotsam>jetsam", -group_by => "denali", -having => {'fortune' => 'cookie'}, -order_by => ['was','is','will'], -limit => '1'); $get_query = $query->get(); die "Query new or get failed" unless ($get_query eq $query_one); $clone = $query->clone(); $clone_query = $clone->get(); die "Query clone failed" unless ($get_query eq $clone_query); $query_two = "select barney as fife,aunt as bee " . "from moogoo as green_teeth,fish as sea ". "where flotsam>jetsam and lighter=dark " . "group by denali,sally,merman " . "having fortune=cookie and sushiadd(-select => {'bee' => 'aunt'}, -from => {'sea' => 'fish'}, -where => {'lighter' => 'dark'}, -group_by => ['sally','merman'], -having => "sushi {'n' => 'cheese'}, -limit => '2'); $add_query = $query->get(); die "Query add failed" unless ($query_two eq $add_query); $query_thr = "select sparkle as clean " . "from book as lean ". "where fighting is between courage and chaos " . "group by a,raging,fire " . "having fishes in (the sea) " . "order by sense,faith,passion ". "limit 123"; $query->set(-select => {'clean' => 'sparkle'}, -from => {'lean' => 'book'}, -where => "fighting is between courage and chaos", -group_by => ['a','raging','fire'], -having => "fishes in (the sea)", -order_by => ['sense','faith','passion'], -limit => '123'); $set_query = $query->get(); die "Query set failed" unless ($query_thr eq $set_query); $query_num_for = "select sparkle as clean,dog as mean " . "from book as lean,stern as obscene ". "where fighting is between courage and chaos and running is null " . "group by a,raging,fire,water " . "having fishes in (the sea) and kitties=on_tv " . "order by sense,faith,passion,for,lust,is,nowhere,bound ". "limit 123,9678"; $get_add_query = $query->get_add(-select => {'mean' => 'dog'}, -from => {'obscene' => 'stern'}, -where => "running is null", -order_by => ['for','lust','is','nowhere','bound'], -having => {'kitties'=> 'on_tv'}, -group_by => 'water', -limit => ['9678']); die "Query get_add failed" unless ($query_num_for eq $get_add_query); $query_num_fiv = "select sparkle as clean " . "from shoes as clean ". "where fighting is between courage and chaos " . "group by nothing,much " . "having fishes in (the sea) " . "order by logic,reason,might ". "limit 123"; $get_set_query = $query->get_set(-from => {'clean' => 'shoes'}, -order_by => ['logic','reason','might'], -group_by => ['nothing' => 'much']); die "Query get_set failed" unless ($query_num_fiv eq $get_set_query); $query_num_six = "select nothing"; $query->set(-select => 'nothing', -from => '', -where => '', -group_by => '', -having => '', -order_by => '', -limit => ''); $get_not_query = $query->get(); die "Destructive query failed" unless ($query_num_six eq $get_not_query); $string = to_string('select this from that'); die "to_string string failed" unless ($string eq 'select this from that'); $minus = to_string({-select => 'this', -from => 'that'}); die "to_string minus failed" unless ($minus eq 'select this from that'); $hash = to_string({'select' => 'this', 'from' => 'that'}); die "to_string hash failed" unless ($hash eq 'select this from that'); $query = to_string(Relations::Query->new(-select => 'this',-from => 'that')); die "to_string query failed" unless ($query eq 'select this from that'); print "\nEverything seems fine\n";