imparcial 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. data/lib/imparcial/driver/base/expression/base.rb +104 -0
  2. data/lib/imparcial/driver/base/expression/delete.rb +72 -0
  3. data/lib/imparcial/driver/base/expression/index.rb +199 -0
  4. data/lib/imparcial/driver/base/expression/insert.rb +33 -0
  5. data/lib/imparcial/driver/base/expression/lock.rb +11 -0
  6. data/lib/imparcial/driver/base/expression/select.rb +36 -0
  7. data/lib/imparcial/driver/base/expression/sequence.rb +189 -0
  8. data/lib/imparcial/driver/base/expression/statement.rb +128 -0
  9. data/lib/imparcial/driver/base/expression/table_diff.rb +154 -0
  10. data/lib/imparcial/driver/base/expression/table_evolution.rb +94 -0
  11. data/lib/imparcial/driver/base/expression/table_metadata.rb +122 -0
  12. data/lib/imparcial/driver/base/expression/table_operation.rb +137 -0
  13. data/lib/imparcial/driver/base/expression/transaction.rb +59 -0
  14. data/lib/imparcial/driver/base/expression/update.rb +33 -0
  15. data/lib/imparcial/driver/base/expression/util.rb +45 -0
  16. data/lib/imparcial/driver/base/expression.rb +37 -0
  17. data/lib/imparcial/driver/base/result.rb +94 -0
  18. data/lib/imparcial/driver/base/sql/delete.rb +22 -0
  19. data/lib/imparcial/driver/base/sql/index.rb +53 -0
  20. data/lib/imparcial/driver/base/sql/insert.rb +63 -0
  21. data/lib/imparcial/driver/base/sql/select.rb +101 -0
  22. data/lib/imparcial/driver/base/sql/sequence.rb +55 -0
  23. data/lib/imparcial/driver/base/sql/table_metadata.rb +29 -0
  24. data/lib/imparcial/driver/base/sql/table_operation.rb +49 -0
  25. data/lib/imparcial/driver/base/sql/transaction.rb +43 -0
  26. data/lib/imparcial/driver/base/sql/update.rb +29 -0
  27. data/lib/imparcial/driver/base/sql.rb +25 -0
  28. data/lib/imparcial/driver/base/typemap.rb +214 -0
  29. data/lib/imparcial/driver/base/util.rb +41 -0
  30. data/lib/imparcial/driver/base.rb +156 -0
  31. data/lib/imparcial/driver/mysql/expression/index.rb +44 -0
  32. data/lib/imparcial/driver/mysql/expression/table.rb +26 -0
  33. data/lib/imparcial/driver/mysql/expression.rb +11 -0
  34. data/lib/imparcial/driver/mysql/result.rb +33 -0
  35. data/lib/imparcial/driver/mysql/sql/index.rb +51 -0
  36. data/lib/imparcial/driver/mysql/sql/sequence.rb +39 -0
  37. data/lib/imparcial/driver/mysql/sql/table_metadata.rb +43 -0
  38. data/lib/imparcial/driver/mysql/sql/table_operation.rb +20 -0
  39. data/lib/imparcial/driver/mysql/sql.rb +15 -0
  40. data/lib/imparcial/driver/mysql/typemap.rb +13 -0
  41. data/lib/imparcial/driver/mysql/util.rb +13 -0
  42. data/lib/imparcial/driver/mysql.rb +48 -0
  43. data/lib/imparcial/driver/postgre/expression/index.rb +10 -0
  44. data/lib/imparcial/driver/postgre/expression/sequence.rb +9 -0
  45. data/lib/imparcial/driver/postgre/expression/table.rb +20 -0
  46. data/lib/imparcial/driver/postgre/expression.rb +13 -0
  47. data/lib/imparcial/driver/postgre/result.rb +35 -0
  48. data/lib/imparcial/driver/postgre/sql/index.rb +53 -0
  49. data/lib/imparcial/driver/postgre/sql/sequence.rb +28 -0
  50. data/lib/imparcial/driver/postgre/sql/table_metadata.rb +46 -0
  51. data/lib/imparcial/driver/postgre/sql/table_operation.rb +9 -0
  52. data/lib/imparcial/driver/postgre/sql.rb +15 -0
  53. data/lib/imparcial/driver/postgre/typemap.rb +29 -0
  54. data/lib/imparcial/driver/postgre/util.rb +19 -0
  55. data/lib/imparcial/driver/postgre.rb +43 -0
  56. data/lib/imparcial/driver.rb +1 -0
  57. data/lib/imparcial/exception.rb +61 -0
  58. data/lib/imparcial.rb +82 -0
  59. metadata +114 -0
@@ -0,0 +1,13 @@
1
+ module Imparcial
2
+ module Driver
3
+ module TypemapMysql
4
+
5
+ def sql_types
6
+
7
+ super.dup.merge!('INT' => :integer)
8
+
9
+ end
10
+
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module Imparcial
2
+ module Driver
3
+ module UtilMysql
4
+
5
+ def quote ( val )
6
+
7
+ "`#{val}`"
8
+
9
+ end
10
+
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,48 @@
1
+ require 'mysql'
2
+ require 'imparcial/driver/mysql/util'
3
+ require 'imparcial/driver/mysql/typemap'
4
+ require 'imparcial/driver/mysql/result'
5
+ require 'imparcial/driver/mysql/sql'
6
+ require 'imparcial/driver/mysql/expression'
7
+
8
+ module Imparcial
9
+ module Driver
10
+ class AdapterMysql < AdapterBase
11
+
12
+ def adapter_specific_exception
13
+
14
+ Mysql::Error
15
+
16
+ end
17
+
18
+ include UtilMysql
19
+ include TypemapMysql
20
+ include SQLMysql
21
+ include ExpressionMysql
22
+
23
+ def connect
24
+
25
+ @conn = Mysql.real_connect @host, @user, @pass, @database
26
+
27
+ rescue adapter_specific_exception => ex
28
+
29
+ raise AdapterConnectionError.new(ex.message)
30
+
31
+ end
32
+
33
+ def version
34
+
35
+ conn.get_server_info
36
+
37
+ end
38
+
39
+ def query ( sql )
40
+
41
+ result = conn.query sql
42
+ @result = ResultMysql.new result
43
+
44
+ end
45
+
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,10 @@
1
+ module Imparcial
2
+ module Driver
3
+ module ExpressionPostgre
4
+ module Index
5
+
6
+
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,9 @@
1
+ module Imparcial
2
+ module Driver
3
+ module ExpressionPostgre
4
+ module Sequence
5
+
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,20 @@
1
+ module Imparcial
2
+ module Driver
3
+ module ExpressionPostgre
4
+ module Table
5
+
6
+ private
7
+
8
+ def field_to_column ( field )
9
+
10
+ column = super
11
+ column[:type] = 'SERIAL' if field[:auto_increment]
12
+
13
+ column
14
+
15
+ end
16
+
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,13 @@
1
+ require 'imparcial/driver/postgre/expression/sequence'
2
+ require 'imparcial/driver/postgre/expression/table'
3
+ require 'imparcial/driver/postgre/expression/index'
4
+
5
+ module Imparcial
6
+ module Driver
7
+ module ExpressionPostgre
8
+ include Sequence
9
+ include Table
10
+ include Index
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,35 @@
1
+ module Imparcial
2
+ module Driver
3
+ class ResultPostgre < ResultBase
4
+
5
+ def rows
6
+
7
+ @specific.result.length
8
+
9
+ end
10
+
11
+ def fetch
12
+
13
+ fields = @specific.fields
14
+ rows = @specific.result
15
+
16
+ rows.each do |row|
17
+
18
+ v = []
19
+
20
+ row.each_with_index do |value, index|
21
+
22
+ v << Row.new(fields[index], value)
23
+
24
+ end
25
+
26
+ yield(*v)
27
+
28
+ end
29
+
30
+
31
+ end
32
+
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,53 @@
1
+ module Imparcial
2
+ module Driver
3
+ module SQLPostgre
4
+ module Index
5
+
6
+ private
7
+
8
+ # Generate SQL statement for verifying if a given index exists.
9
+
10
+ def sql_for_index_exists? ( options )
11
+
12
+ %{
13
+ SELECT 1 FROM pg_class WHERE relkind = 'i' AND
14
+ relname = #{quote_value(options[:index_name])}
15
+ }
16
+
17
+ end
18
+
19
+ # Generate SQL statement for retrieving all indexes.
20
+
21
+ def sql_for_retrieving_indexes
22
+
23
+ %{
24
+ SELECT
25
+ c2.relname as "table",
26
+ (select attname from pg_attribute where attrelid = i.indexrelid AND attnum > 0) as "column" ,
27
+ c.relname as "index"
28
+ FROM pg_class c
29
+ JOIN pg_roles r ON r.oid = c.relowner
30
+ LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
31
+ LEFT JOIN pg_index i ON i.indexrelid = c.oid
32
+ LEFT JOIN pg_class c2 ON i.indrelid = c2.oid
33
+ WHERE c.relkind IN ('i','')
34
+ AND n.nspname NOT IN ('pg_catalog', 'pg_toast')
35
+ }
36
+
37
+ end
38
+
39
+ # Generate SQL statement for retrieving indexes for a specific table.
40
+
41
+ def sql_for_retrieving_indexes_for_table ( options )
42
+
43
+ sql_for_retrieving_indexes + %{
44
+ AND c2.relname = #{quote_value(options[:table_name])}
45
+ }
46
+
47
+ end
48
+
49
+
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,28 @@
1
+ module Imparcial
2
+ module Driver
3
+ module SQLPostgre
4
+ module Sequence
5
+
6
+ private
7
+
8
+ def sql_for_sequence_exists? ( options )
9
+
10
+ %{
11
+ SELECT 1 FROM pg_class WHERE relkind = 'S' AND
12
+ relname = #{quote_value(options[:sequence_name])}
13
+ }
14
+
15
+ end
16
+
17
+ # Generate SQL statement for retrieving sequences.
18
+
19
+ def sql_for_retrieving_sequences
20
+
21
+ "SELECT relname FROM pg_class WHERE relkind = 'S'"
22
+
23
+ end
24
+
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,46 @@
1
+ module Imparcial
2
+ module Driver
3
+ module SQLPostgre
4
+ module TableMetadata
5
+
6
+ private
7
+
8
+ # Generate SQL statement for retrieving tables.
9
+
10
+ def sql_for_retrieving_tables
11
+
12
+ %{
13
+ SELECT table_name FROM information_schema.tables
14
+ WHERE table_schema = 'public'
15
+ }
16
+
17
+ end
18
+
19
+ # Generate SQL statement for retrieving columns.
20
+
21
+ def sql_for_retrieving_columns ( options )
22
+
23
+ %{
24
+ SELECT
25
+ A.column_name, A.data_type, A.character_maximum_length,
26
+ (A.is_nullable = 'YES') as allow_null,
27
+ (A.column_name = B.column_name) as pk,
28
+ A.column_default,
29
+ A.column_default LIKE 'nextval%' as auto_inc,
30
+ A.column_name in (SELECT sa.attname from pg_class sc
31
+ JOIN pg_index si ON sc.oid = si.indexrelid
32
+ JOIN pg_class sc2 ON sc2.oid = si.indrelid
33
+ JOIN pg_attribute sa ON sc.oid = sa.attrelid
34
+ WHERE sc2.relname = #{quote_value(options[:table_name])} AND sa.attname = A.column_name
35
+ ) as column_indexed
36
+ FROM information_schema.columns A
37
+ LEFT JOIN information_schema.key_column_usage B ON A.table_name = B.table_name
38
+ WHERE A.table_name = #{quote_value(options[:table_name])};
39
+ }
40
+
41
+ end
42
+
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,9 @@
1
+ module Imparcial
2
+ module Driver
3
+ module SQLPostgre
4
+ module TableOperation
5
+
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,15 @@
1
+ require 'imparcial/driver/postgre/sql/table_operation'
2
+ require 'imparcial/driver/postgre/sql/table_metadata'
3
+ require 'imparcial/driver/postgre/sql/sequence'
4
+ require 'imparcial/driver/postgre/sql/index'
5
+
6
+ module Imparcial
7
+ module Driver
8
+ module SQLPostgre
9
+ include TableOperation
10
+ include TableMetadata
11
+ include Sequence
12
+ include Index
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,29 @@
1
+ module Imparcial
2
+ module Driver
3
+ module TypemapPostgre
4
+
5
+ def sql_types
6
+
7
+ super.dup.merge!('CHARACTER VARYING' => :string)
8
+
9
+ end
10
+
11
+ private
12
+
13
+ # Due to nextval, we have to format the default value
14
+
15
+ def parse_column ( column )
16
+
17
+ super
18
+
19
+ if column[:default_value]
20
+
21
+ column[:default_value].gsub!(/::.*/,'')
22
+
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,19 @@
1
+ module Imparcial
2
+ module Driver
3
+ module UtilPostgre
4
+
5
+ def quote_value ( val )
6
+
7
+ conn.class.quote val
8
+
9
+ end
10
+
11
+ def quote ( val )
12
+
13
+ "\"#{val}\""
14
+
15
+ end
16
+
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,43 @@
1
+ require 'postgres'
2
+ require 'imparcial/driver/postgre/util'
3
+ require 'imparcial/driver/postgre/typemap'
4
+ require 'imparcial/driver/postgre/result'
5
+ require 'imparcial/driver/postgre/sql'
6
+ require 'imparcial/driver/postgre/expression'
7
+
8
+ module Imparcial
9
+ module Driver
10
+ class AdapterPostgre < AdapterBase
11
+
12
+ def adapter_specific_exception
13
+
14
+ PGError
15
+
16
+ end
17
+
18
+ include UtilPostgre
19
+ include TypemapPostgre
20
+ include SQLPostgre
21
+ include ExpressionPostgre
22
+
23
+ def connect
24
+
25
+ @conn = PGconn.connect @host, @port, '', '', @database, @user, @pass
26
+
27
+ rescue adapter_specific_exception => ex
28
+
29
+ raise AdapterConnectionError.new(ex.message)
30
+
31
+ end
32
+
33
+ def query ( sql )
34
+
35
+ result = conn.exec sql
36
+ @result = ResultPostgre.new result
37
+
38
+ end
39
+
40
+
41
+ end
42
+ end
43
+ end
@@ -0,0 +1 @@
1
+ require 'imparcial/driver/base'
@@ -0,0 +1,61 @@
1
+ module Imparcial
2
+
3
+ # Main class
4
+
5
+ class ImparcialError < StandardError; end
6
+
7
+ # Adapter
8
+
9
+ class AdapterError < ImparcialError; end
10
+ class AdapterNotFound < AdapterError; end
11
+ class AdapterConfigError < AdapterError; end
12
+ class AdapterConnectionError < AdapterError; end
13
+
14
+ # Result
15
+
16
+ class ResultError < ImparcialError; end
17
+
18
+ # Expression
19
+
20
+ class ExpressionError < ImparcialError; end
21
+
22
+ class FeatureNotFound < ExpressionError; end
23
+
24
+ # Table
25
+
26
+ class TableError < ExpressionError; end
27
+ class TableCreateError < TableError; end
28
+ class TableDropError < TableError; end
29
+ class TableRetrieveError < TableError; end
30
+
31
+ class ConditionError < ExpressionError; end
32
+ class OptionError < ExpressionError; end
33
+
34
+ # Crud
35
+
36
+ class SelectError < ExpressionError; end
37
+ class InsertError < ExpressionError; end
38
+ class DeleteError < ExpressionError; end
39
+ class UpdateError < ExpressionError; end
40
+
41
+ # Sequence
42
+
43
+ class SequenceError < ExpressionError; end
44
+ class SequenceCreateError < SequenceError; end
45
+ class SequenceDropError < SequenceError; end
46
+
47
+ # Transaction
48
+
49
+ class TransactionError < ExpressionError; end
50
+
51
+ # Lock
52
+
53
+ class LockError < ExpressionError; end
54
+
55
+ # Index
56
+
57
+ class IndexError < ExpressionError; end
58
+ class IndexCreateError < IndexError; end
59
+ class IndexDropError < IndexError; end
60
+
61
+ end
data/lib/imparcial.rb ADDED
@@ -0,0 +1,82 @@
1
+ require 'rubygems'
2
+
3
+ require 'facets/core/string/camelize'
4
+ require 'facets/core/string/to_const'
5
+ require 'facets/core/symbol/to_const'
6
+
7
+ require 'imparcial/exception'
8
+ require 'imparcial/driver'
9
+
10
+ module Imparcial
11
+ class Initializer
12
+
13
+ attr_accessor :host, :driver, :port, :user, :pass, :socket, :database
14
+
15
+ alias_method :adapter=, :driver=
16
+ alias_method :username=, :user=
17
+ alias_method :password=, :pass=
18
+ alias_method :sock=, :socket=
19
+ alias_method :db=, :database=
20
+ alias_method :hostname=, :host=
21
+
22
+ alias_method :adapter, :driver
23
+ alias_method :username, :user
24
+ alias_method :password, :pass
25
+ alias_method :sock, :socket
26
+ alias_method :db, :database
27
+ alias_method :hostname, :host
28
+
29
+ # Default is localhost.
30
+
31
+ def host
32
+
33
+ @host || 'localhost'
34
+
35
+ end
36
+
37
+ # Default is Mysql
38
+
39
+ def driver
40
+
41
+ @driver || 'mysql'
42
+
43
+ end
44
+
45
+ # Default is STDOUT
46
+
47
+ def logger
48
+
49
+ @logger || Logger.new( STDERR )
50
+
51
+ end
52
+
53
+ def self.run
54
+
55
+ instance = new
56
+
57
+ yield instance
58
+
59
+ instance.start_me
60
+
61
+ end
62
+
63
+ def start_me
64
+
65
+ require 'imparcial/driver/' + driver
66
+
67
+ # Get an adapter const.
68
+
69
+ adapter_const = ('Imparcial::Driver::Adapter' + driver.camelize).to_const
70
+
71
+ adapter = adapter_const.new self
72
+
73
+ adapter
74
+
75
+ rescue LoadError
76
+
77
+ raise AdapterNotFound.new(driver + ' cannot be found')
78
+
79
+ end
80
+
81
+ end
82
+ end
metadata ADDED
@@ -0,0 +1,114 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.4.3
3
+ specification_version: 1
4
+ name: imparcial
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.0.1
7
+ date: 2007-08-22 00:00:00 -03:00
8
+ summary: Standard Database Interface for ruby
9
+ require_paths:
10
+ - lib
11
+ email: antonio@gmail.com
12
+ homepage: http://guilherme-antonio.blogspot.com
13
+ rubyforge_project:
14
+ description:
15
+ autorequire:
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: false
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ post_install_message:
29
+ authors:
30
+ - Guilherme Antoniolo Ferreira
31
+ files:
32
+ - lib/imparcial
33
+ - lib/imparcial.rb
34
+ - lib/imparcial/driver
35
+ - lib/imparcial/driver.rb
36
+ - lib/imparcial/exception.rb
37
+ - lib/imparcial/driver/base.rb
38
+ - lib/imparcial/driver/base
39
+ - lib/imparcial/driver/postgre.rb
40
+ - lib/imparcial/driver/mysql.rb
41
+ - lib/imparcial/driver/mysql
42
+ - lib/imparcial/driver/postgre
43
+ - lib/imparcial/driver/base/expression
44
+ - lib/imparcial/driver/base/result.rb
45
+ - lib/imparcial/driver/base/typemap.rb
46
+ - lib/imparcial/driver/base/expression.rb
47
+ - lib/imparcial/driver/base/util.rb
48
+ - lib/imparcial/driver/base/sql
49
+ - lib/imparcial/driver/base/sql.rb
50
+ - lib/imparcial/driver/base/expression/select.rb
51
+ - lib/imparcial/driver/base/expression/base.rb
52
+ - lib/imparcial/driver/base/expression/table_diff.rb
53
+ - lib/imparcial/driver/base/expression/transaction.rb
54
+ - lib/imparcial/driver/base/expression/delete.rb
55
+ - lib/imparcial/driver/base/expression/sequence.rb
56
+ - lib/imparcial/driver/base/expression/insert.rb
57
+ - lib/imparcial/driver/base/expression/table_operation.rb
58
+ - lib/imparcial/driver/base/expression/index.rb
59
+ - lib/imparcial/driver/base/expression/lock.rb
60
+ - lib/imparcial/driver/base/expression/statement.rb
61
+ - lib/imparcial/driver/base/expression/util.rb
62
+ - lib/imparcial/driver/base/expression/table_metadata.rb
63
+ - lib/imparcial/driver/base/expression/update.rb
64
+ - lib/imparcial/driver/base/expression/table_evolution.rb
65
+ - lib/imparcial/driver/base/sql/select.rb
66
+ - lib/imparcial/driver/base/sql/transaction.rb
67
+ - lib/imparcial/driver/base/sql/delete.rb
68
+ - lib/imparcial/driver/base/sql/sequence.rb
69
+ - lib/imparcial/driver/base/sql/insert.rb
70
+ - lib/imparcial/driver/base/sql/table_operation.rb
71
+ - lib/imparcial/driver/base/sql/index.rb
72
+ - lib/imparcial/driver/base/sql/table_metadata.rb
73
+ - lib/imparcial/driver/base/sql/update.rb
74
+ - lib/imparcial/driver/mysql/expression
75
+ - lib/imparcial/driver/mysql/result.rb
76
+ - lib/imparcial/driver/mysql/typemap.rb
77
+ - lib/imparcial/driver/mysql/expression.rb
78
+ - lib/imparcial/driver/mysql/util.rb
79
+ - lib/imparcial/driver/mysql/sql
80
+ - lib/imparcial/driver/mysql/sql.rb
81
+ - lib/imparcial/driver/mysql/expression/table.rb
82
+ - lib/imparcial/driver/mysql/expression/index.rb
83
+ - lib/imparcial/driver/mysql/sql/sequence.rb
84
+ - lib/imparcial/driver/mysql/sql/table_operation.rb
85
+ - lib/imparcial/driver/mysql/sql/index.rb
86
+ - lib/imparcial/driver/mysql/sql/table_metadata.rb
87
+ - lib/imparcial/driver/postgre/expression
88
+ - lib/imparcial/driver/postgre/result.rb
89
+ - lib/imparcial/driver/postgre/typemap.rb
90
+ - lib/imparcial/driver/postgre/expression.rb
91
+ - lib/imparcial/driver/postgre/util.rb
92
+ - lib/imparcial/driver/postgre/sql
93
+ - lib/imparcial/driver/postgre/sql.rb
94
+ - lib/imparcial/driver/postgre/expression/table.rb
95
+ - lib/imparcial/driver/postgre/expression/sequence.rb
96
+ - lib/imparcial/driver/postgre/expression/index.rb
97
+ - lib/imparcial/driver/postgre/sql/sequence.rb
98
+ - lib/imparcial/driver/postgre/sql/table_operation.rb
99
+ - lib/imparcial/driver/postgre/sql/index.rb
100
+ - lib/imparcial/driver/postgre/sql/table_metadata.rb
101
+ test_files: []
102
+
103
+ rdoc_options: []
104
+
105
+ extra_rdoc_files: []
106
+
107
+ executables: []
108
+
109
+ extensions: []
110
+
111
+ requirements: []
112
+
113
+ dependencies: []
114
+