Skip to content

support views in structure_load #956

Description

@jonahgeorge

Issue

Given an example schema:

create table posts
(
    ID   int identity,
    Body varchar(max) not null,
)
go

create view popular_posts
as
select *
from posts

structure_dump generates the following file (which strips the Go statements added in between the various objects).

	/* The object 'dbo.posts' does not have any indexes, or you do not have permissions. */
	/* No constraints are defined on object 'dbo.posts', or you do not have permissions. */
	/* No foreign keys reference table 'dbo.posts', or you do not have permissions on referencing tables. */
	/* No views with schema binding reference table 'dbo.posts'. */

CREATE TABLE dbo.posts
	( ID   int             NOT NULL
	, Body varchar(-1)     NOT NULL
	)



CREATE VIEW popular_posts
AS
SELECT *
FROM posts

As a result, when loading the objects back into the database via structure_load, the following error is thrown.

$ rails db:setup
...
rails aborted!
ActiveRecord::StatementInvalid: TinyTds::Error: 'CREATE VIEW' must be the first statement in a query batch.
/Users/jonahgeorge/src/funcard/funcard/bin/rails:5:in `<top (required)>'
/Users/jonahgeorge/src/funcard/funcard/bin/spring:10:in `block in <top (required)>'
/Users/jonahgeorge/src/funcard/funcard/bin/spring:7:in `<top (required)>'

Expected behavior

structure_load should be capable of loading a structure.sql file generated by structure_dump.

Actual behavior

TinyTds::Error: 'CREATE VIEW' must be the first statement in a query batch. exception is raised.

Details

  • Rails version: 6.1.4
  • SQL Server adapter version: v6.1.2.1
  • FreeTDS details:
$ tsql -C    
Compile-time settings (established with the "configure" script)
                           Version: freetds v1.3.3
            freetds.conf directory: /opt/homebrew/etc
    MS db-lib source compatibility: no
       Sybase binary compatibility: yes
                     Thread safety: yes
                     iconv library: yes
                       TDS version: 7.3
                             iODBC: no
                          unixodbc: yes
             SSPI "trusted" logins: no
                          Kerberos: yes
                           OpenSSL: yes
                            GnuTLS: no
                              MARS: yes

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions