pg_conn 0.3.5 → 0.4.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7ac1d6afe8aefb33c2abfb88f2741ff2e1d1bacf4d6abc1936ecd178a36eaec5
4
- data.tar.gz: 1596428cde81f7d3fe9cb9087e2c6c8c3d8a58ff696ead2156b512cb72ea6497
3
+ metadata.gz: 9c6b35126469d1a4c72a3ecdfe32502266eefce16574d91f0b00b9c969b586f8
4
+ data.tar.gz: ad15bf23023dad7d1a41716c7d3587e0b27400c4fee41bb3870f692adef9e908
5
5
  SHA512:
6
- metadata.gz: a04dd7e76e131e04e4e1b37786b2667bc09786ae5dc570fc3d4cd6a52909ea9d2335e27b0bfa5ca1fb30d371e76055f8d498d106f919e52cb001a0f7b11e3a60
7
- data.tar.gz: 31db0d179111b95440acf06b743c3cefbf30900f85ac311b81c82a224f73e5b871439ede71d2bf5b50393bfd0c79c75254d33ab77f1a26c998ec9a2bc855888e
6
+ metadata.gz: b49f50d2ceb9b87e55d6ae9a076bc477db4e5df474fa291d1c9f03747bb919996b209ec2bf15680651d93b1900f9067690a5653d2e492834348d6c4996b8d2de
7
+ data.tar.gz: 62ad8e07479117796196ff0cf8894a7d4562ab4d6f54eccf826830ba03df0d69897277fb307e7fb0e924e701b8bbe95ea5d81b9b5d0e964b36e879e318e2f11a
@@ -69,13 +69,13 @@ module PgConn
69
69
  end
70
70
 
71
71
  # Hollow-out a database by removing all schemas in the database. The public
72
- # schema is recreated afterwards. Use the current database if @database is
73
- # nil
72
+ # schema is recreated afterwards if :public is true. Uses the current
73
+ # database if @database is nil
74
74
  #
75
75
  # Note that the database can have active users logged in while the database
76
76
  # is emptied
77
77
  #
78
- def empty!(database = nil, exclude: [])
78
+ def empty!(database = nil, public: true, exclude: [])
79
79
  local = !database.nil?
80
80
  begin
81
81
  conn = local ? PgConn.new(database) : self.conn
@@ -84,11 +84,11 @@ module PgConn
84
84
  .values("select nspname from pg_namespace where nspowner != 10 or nspname = 'public'")
85
85
  .select { |schema| !exclude.include?(schema) }
86
86
  .join(", ")
87
+ conn.exec "drop schema #{schemas} cascade"
87
88
  conn.exec %(
88
- drop schema #{schemas} cascade;
89
89
  create schema public authorization postgres;
90
90
  grant usage, create on schema public to public
91
- )
91
+ ) if public
92
92
  ensure
93
93
  conn&.terminate if local
94
94
  end
@@ -44,11 +44,10 @@ module PgConn
44
44
  # Create a new role
45
45
  def create(rolename, superuser: false, create_database: false, can_login: false, create_role: false)
46
46
  user_decl = "create role \"#{rolename}\""
47
- superuser_decl = superuser ? "--superuser" : nil
48
- create_database_decl = create_database ? "--createdb" : "--nocreatedb"
49
- can_login_decl = can_login ? "--login" : "--nologin"
50
- create_role_decl = create_role ? "--createrole" : "--nocreaterole"
51
-
47
+ superuser_decl = superuser ? "superuser" : "nosuperuser"
48
+ create_database_decl = create_database ? "createdb" : "nocreatedb"
49
+ can_login_decl = can_login ? "login" : "nologin"
50
+ create_role_decl = create_role ? "createrole" : "nocreaterole"
52
51
  stmt = [user_decl, superuser_decl, can_login_decl, create_role_decl].compact.join(" ")
53
52
  conn.exec stmt
54
53
  end
@@ -35,8 +35,8 @@ module PgConn
35
35
  true
36
36
  end
37
37
 
38
- # List schemas. By built-in schemas are not listed unless the :all option
39
- # is true. The :exclude option can be used to exclude named schemas
38
+ # List schemas. Built-in schemas are not listed unless the :all option is
39
+ # true. The :exclude option can be used to exclude named schemas
40
40
  def list(all: false, exclude: [])
41
41
  conn.values(%(
42
42
  select schema_name
@@ -53,7 +53,7 @@ module PgConn
53
53
 
54
54
  # Return true if table exists
55
55
  def exist_table?(schema, table)
56
- conn.exist?(relation_exist_query(schema, table, kind: %w(r)))
56
+ conn.exist?(relation_exist_query(schema, table, kind: %w(r f)))
57
57
  end
58
58
 
59
59
  # Return true if view exists
@@ -73,7 +73,7 @@ module PgConn
73
73
 
74
74
  # Return list of tables in the schema
75
75
  def list_tables(schema)
76
- conn.values relation_list_query(schema, kind: %w(r))
76
+ conn.values relation_list_query(schema, kind: %w(r f))
77
77
  end
78
78
 
79
79
  # Return list of view in the schema
@@ -103,7 +103,7 @@ module PgConn
103
103
 
104
104
  private
105
105
  def relation_exist_query(schema, relation, kind: nil)
106
- kind_sql_list = "'" + (kind.nil? ? %w(r v m) : Array(kind).flatten).join("', '") + "'"
106
+ kind_sql_list = "'" + (kind.nil? ? %w(r f v m) : Array(kind).flatten).join("', '") + "'"
107
107
  %(
108
108
  select 1
109
109
  from pg_class
@@ -114,7 +114,7 @@ module PgConn
114
114
  end
115
115
 
116
116
  def relation_list_query(schema, kind: nil)
117
- kind_sql_list = "'" + (kind.nil? ? %w(r v m) : Array(kind).flatten).join("', '") + "'"
117
+ kind_sql_list = "'" + (kind.nil? ? %w(r f v m) : Array(kind).flatten).join("', '") + "'"
118
118
  %(
119
119
  select relname
120
120
  from pg_class
@@ -1,3 +1,3 @@
1
1
  module PgConn
2
- VERSION = "0.3.5"
2
+ VERSION = "0.4.0"
3
3
  end
data/lib/pg_conn.rb CHANGED
@@ -451,8 +451,7 @@ module PgConn
451
451
  raise ArgumentError, "Unrecognized value: #{arg.inspect}"
452
452
  end
453
453
  }.join(", ")
454
- query = "select * from #{name}(#{args_sql})"
455
- r = pg_exec(query)
454
+ r = pg_exec "select * from #{name}(#{args_sql})"
456
455
  if r.ntuples == 0
457
456
  raise Error, "No records returned"
458
457
  elsif r.ntuples == 1
@@ -478,7 +477,7 @@ module PgConn
478
477
  # fail is false #exec instead return nil but note that postgres doesn't
479
478
  # ignore it so that if you're inside a transaction, the transaction will be
480
479
  # in an error state and if you're also using subtransactions the whole
481
- # transaction stack collapses.
480
+ # transaction stack has collapsed
482
481
  #
483
482
  # TODO: Make sure the transaction stack is emptied on postgres errors
484
483
  def exec(sql, commit: true, fail: true, silent: false)
@@ -583,6 +582,7 @@ module PgConn
583
582
  rescue PgConn::Rollback
584
583
  pop_trancaction(commit: false)
585
584
  return nil
585
+ # FIXME: Rescue other postgres errors and wipe-out stack
586
586
  end
587
587
  pop_transaction(commit: commit)
588
588
  result
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg_conn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Claus Rasmussen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-04-13 00:00:00.000000000 Z
11
+ date: 2022-05-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg
@@ -106,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
106
  - !ruby/object:Gem::Version
107
107
  version: '0'
108
108
  requirements: []
109
- rubygems_version: 3.1.4
109
+ rubygems_version: 3.1.2
110
110
  signing_key:
111
111
  specification_version: 4
112
112
  summary: Gem pg_conn