Below is my script and output. But I could not get this to replicate
in a test case. I will have to review my app's data to see what I am
doing wrong.
require 'rubygems'
require 'sequel'
require 'logger'
# ---------- ---------- ----------
# make a database in memory
# ---------- ---------- ----------
begin
# Sequel.upcase_identifiers - identifiers (column names,etc) should
all be upper case
# Sequel.quote_identifiers - Quoting identifiers, caused me
problems, so don't do it.
# Only an issue if using reserved words
as an identifier.
# timeout - 1_000 milliseconds = 1 sec
# DB = Sequel.connect( 'sqlite:/',
DB = Sequel.sqlite( ':memory:',
:timeout => 1_000,
:upcase_identifiers => true,
:quote_identifiers => false,
:loggers => [ Logger.new
( $stderr ) ] )
#Logger.datetime_format = "%Y-%m-%d %H:%M:%S"
rescue StandardError => ex
$stderr.print "Unable to open accounts database\n\n"
$stderr.print ex.message + "\n"
$stderr.print "\n" + ex.backtrace.join( "\n " )
$stderr.print "\n---------- db connection ----------\n"
exit(1)
end
puts "\n\tDB: " + DB.inspect
puts "\n"
# ---------- ---------- ----------
# Make a table and a model
# ---------- ---------- ----------
DB.transaction {
begin
DB.create_table :tests do
primary_key :id
String :name, :null => false,
:size => 80
Date :tst_dt, :null => false
index [ :name ]
end
rescue StandardError => ex
$stderr.print "Error creating table TESTS\n\n"
$stderr.print ex.message + "\n"
$stderr.print "\n" + ex.backtrace.join( "\n " )
$stderr.print "\n---------- create_table ----------\n"
exit(1)
end
}
class Test < Sequel::Model
end
# ---------- ---------- ----------
# Create some data
# ---------- ---------- ----------
DB.transaction {
begin
Test.insert( :name => 'aaa',
:tst_dt => '2009-01-01' )
Test.insert( :name => 'bbb',
:tst_dt => '2009-01-02' )
Test.insert( :name => 'ccc',
:tst_dt => '2009-02-02' )
Test.insert( :name => 'ddd',
:tst_dt => '2009-07-07' )
Test.insert( :name => 'eee',
:tst_dt => '2009-07-13' )
rescue StandardError => ex
$stderr.print "Error creating data\n\n"
$stderr.print ex.message + "\n"
$stderr.print "\n" + ex.backtrace.join( "\n " )
$stderr.print "\n---------- insert ----------\n"
exit(1)
end
}
# ---------- ---------- ----------
# what do we have?
# ---------- ---------- ----------
cnt = Test.count
puts "\n\t" + 'num of rows in table: ' + cnt.to_s
puts "\n"
data = Test.select{ strftime( '%Y-%m', tst_dt ).as( month ) }.
distinct.
order( :tst_dt ).
all
puts "\n" + data.inspect
puts "\n"
data.each_with_index do |d, i|
puts "\t" + i.to_s + "\t" + d[:month]
end
exit(0)
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
C:\A\ruby>ruby t1.rb
DB: #<Sequel::SQLite::Database: "sqlite:/:memory:">
I, [2009-07-09T10:48:12.088000 #3224] INFO -- : BEGIN
I, [2009-07-09T10:48:12.088000 #3224] INFO -- : CREATE TABLE tests
(id integer PRIMARY KEY AUTOINCREMENT, name varchar(80) NOT NULL,
tst_dt date NOT NULL)
I, [2009-07-09T10:48:12.135000 #3224] INFO -- : CREATE INDEX
tests_name_index ON tests (name)
I, [2009-07-09T10:48:12.135000 #3224] INFO -- : COMMIT
I, [2009-07-09T10:48:12.135000 #3224] INFO -- : PRAGMA table_info
('tests')
I, [2009-07-09T10:48:12.151000 #3224] INFO -- : BEGIN
I, [2009-07-09T10:48:12.151000 #3224] INFO -- : INSERT INTO tests
(tst_dt, name) VALUES ('2009-01-01', 'aaa')
I, [2009-07-09T10:48:12.151000 #3224] INFO -- : INSERT INTO tests
(tst_dt, name) VALUES ('2009-01-02', 'bbb')
I, [2009-07-09T10:48:12.151000 #3224] INFO -- : INSERT INTO tests
(tst_dt, name) VALUES ('2009-02-02', 'ccc')
I, [2009-07-09T10:48:12.151000 #3224] INFO -- : INSERT INTO tests
(tst_dt, name) VALUES ('2009-07-07', 'ddd')
I, [2009-07-09T10:48:12.151000 #3224] INFO -- : INSERT INTO tests
(tst_dt, name) VALUES ('2009-07-13', 'eee')
I, [2009-07-09T10:48:12.151000 #3224] INFO -- : COMMIT
I, [2009-07-09T10:48:12.151000 #3224] INFO -- : SELECT COUNT(*) AS
'count' FROM tests LIMIT 1
num of rows in table: 5
I, [2009-07-09T10:48:12.151000 #3224] INFO -- : SELECT DISTINCT
strftime('%Y-%m', tst_dt) AS 'month' FROM tests ORDER BY tst_dt
[#<Test @values={:month=>"2009-01"}>, #<Test @values=
{:month=>"2009-02"}>, #<Test @values={:month=>"2009-07"}>]
0 2009-01
1 2009-02
2 2009-07
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sequel-talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sequel-talk?hl=en
-~----------~----~----~----~------~----~------~--~---