blob: cdf2d6584adda52c649fb675662057fd7581d132 [file]
package integration
import (
"github.com/apache/cloudberry-backup/backup"
"github.com/apache/cloudberry-backup/testutils"
"github.com/apache/cloudberry-backup/toc"
"github.com/apache/cloudberry-go-libs/structmatcher"
"github.com/apache/cloudberry-go-libs/testhelper"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)
var _ = Describe("backup integration create statement tests", func() {
BeforeEach(func() {
tocfile, backupfile = testutils.InitializeTestTOC(buffer, "predata")
})
Describe("PrintCreateTextSearchParserStatements", func() {
parser := backup.TextSearchParser{Oid: 0, Schema: "public", Name: "testparser", StartFunc: "prsd_start", TokenFunc: "prsd_nexttoken", EndFunc: "prsd_end", LexTypesFunc: "prsd_lextype", HeadlineFunc: "prsd_headline"}
It("creates a basic text search parser", func() {
backup.PrintCreateTextSearchParserStatement(backupfile, tocfile, parser, backup.ObjectMetadata{})
testhelper.AssertQueryRuns(connectionPool, buffer.String())
defer testhelper.AssertQueryRuns(connectionPool, "DROP TEXT SEARCH PARSER public.testparser")
resultParsers := backup.GetTextSearchParsers(connectionPool)
Expect(resultParsers).To(HaveLen(1))
structmatcher.ExpectStructsToMatchExcluding(&parser, &resultParsers[0], "Oid")
})
It("creates a basic text search parser with a comment", func() {
parserMetadata := testutils.DefaultMetadata(toc.OBJ_TEXT_SEARCH_PARSER, false, false, true, false)
backup.PrintCreateTextSearchParserStatement(backupfile, tocfile, parser, parserMetadata)
testhelper.AssertQueryRuns(connectionPool, buffer.String())
defer testhelper.AssertQueryRuns(connectionPool, "DROP TEXT SEARCH PARSER public.testparser")
resultParsers := backup.GetTextSearchParsers(connectionPool)
resultMetadataMap := backup.GetCommentsForObjectType(connectionPool, backup.TYPE_TS_PARSER)
Expect(resultParsers).To(HaveLen(1))
structmatcher.ExpectStructsToMatchExcluding(&parser, &resultParsers[0], "Oid")
resultMetadata := resultMetadataMap[resultParsers[0].GetUniqueID()]
structmatcher.ExpectStructsToMatch(&parserMetadata, &resultMetadata)
})
})
Describe("PrintCreateTextSearchTemplateStatement", func() {
template := backup.TextSearchTemplate{Oid: 1, Schema: "public", Name: "testtemplate", InitFunc: "dsimple_init", LexizeFunc: "dsimple_lexize"}
It("creates a basic text search template", func() {
backup.PrintCreateTextSearchTemplateStatement(backupfile, tocfile, template, backup.ObjectMetadata{})
testhelper.AssertQueryRuns(connectionPool, buffer.String())
defer testhelper.AssertQueryRuns(connectionPool, "DROP TEXT SEARCH TEMPLATE public.testtemplate")
resultTemplates := backup.GetTextSearchTemplates(connectionPool)
Expect(resultTemplates).To(HaveLen(1))
structmatcher.ExpectStructsToMatchExcluding(&template, &resultTemplates[0], "Oid")
})
It("creates a basic text search template with a comment", func() {
templateMetadata := testutils.DefaultMetadata(toc.OBJ_TEXT_SEARCH_TEMPLATE, false, false, true, false)
backup.PrintCreateTextSearchTemplateStatement(backupfile, tocfile, template, templateMetadata)
testhelper.AssertQueryRuns(connectionPool, buffer.String())
defer testhelper.AssertQueryRuns(connectionPool, "DROP TEXT SEARCH TEMPLATE public.testtemplate")
resultTemplates := backup.GetTextSearchTemplates(connectionPool)
resultMetadataMap := backup.GetCommentsForObjectType(connectionPool, backup.TYPE_TS_TEMPLATE)
Expect(resultTemplates).To(HaveLen(1))
uniqueID := testutils.UniqueIDFromObjectName(connectionPool, "public", "testtemplate", backup.TYPE_TS_TEMPLATE)
resultMetadata := resultMetadataMap[uniqueID]
structmatcher.ExpectStructsToMatchExcluding(&template, &resultTemplates[0], "Oid")
structmatcher.ExpectStructsToMatch(&templateMetadata, &resultMetadata)
})
})
Describe("PrintCreateTextSearchDictionaryStatement", func() {
dictionary := backup.TextSearchDictionary{Oid: 1, Schema: "public", Name: "testdictionary", Template: "pg_catalog.snowball", InitOption: "language = 'russian', stopwords = 'russian'"}
It("creates a basic text search dictionary", func() {
backup.PrintCreateTextSearchDictionaryStatement(backupfile, tocfile, dictionary, backup.ObjectMetadata{})
testhelper.AssertQueryRuns(connectionPool, buffer.String())
defer testhelper.AssertQueryRuns(connectionPool, "DROP TEXT SEARCH DICTIONARY public.testdictionary")
resultDictionaries := backup.GetTextSearchDictionaries(connectionPool)
Expect(resultDictionaries).To(HaveLen(1))
structmatcher.ExpectStructsToMatchExcluding(&dictionary, &resultDictionaries[0], "Oid")
})
It("creates a basic text search dictionary with a comment and owner", func() {
dictionaryMetadata := testutils.DefaultMetadata(toc.OBJ_TEXT_SEARCH_DICTIONARY, false, true, true, false)
backup.PrintCreateTextSearchDictionaryStatement(backupfile, tocfile, dictionary, dictionaryMetadata)
testhelper.AssertQueryRuns(connectionPool, buffer.String())
defer testhelper.AssertQueryRuns(connectionPool, "DROP TEXT SEARCH DICTIONARY public.testdictionary")
resultDictionaries := backup.GetTextSearchDictionaries(connectionPool)
resultMetadataMap := backup.GetMetadataForObjectType(connectionPool, backup.TYPE_TS_DICTIONARY)
Expect(resultDictionaries).To(HaveLen(1))
uniqueID := testutils.UniqueIDFromObjectName(connectionPool, "public", "testdictionary", backup.TYPE_TS_DICTIONARY)
resultMetadata := resultMetadataMap[uniqueID]
structmatcher.ExpectStructsToMatchExcluding(&dictionary, &resultDictionaries[0], "Oid")
structmatcher.ExpectStructsToMatch(&dictionaryMetadata, &resultMetadata)
})
})
Describe("PrintCreateTextSearchConfigurationStatement", func() {
configuration := backup.TextSearchConfiguration{Oid: 1, Schema: "public", Name: "testconfiguration", Parser: `pg_catalog."default"`, TokenToDicts: map[string][]string{}}
It("creates a basic text search configuration", func() {
backup.PrintCreateTextSearchConfigurationStatement(backupfile, tocfile, configuration, backup.ObjectMetadata{})
testhelper.AssertQueryRuns(connectionPool, buffer.String())
defer testhelper.AssertQueryRuns(connectionPool, "DROP TEXT SEARCH CONFIGURATION public.testconfiguration")
resultConfigurations := backup.GetTextSearchConfigurations(connectionPool)
Expect(resultConfigurations).To(HaveLen(1))
structmatcher.ExpectStructsToMatchExcluding(&configuration, &resultConfigurations[0], "Oid")
})
It("creates a basic text search configuration with a comment and owner", func() {
configurationMetadata := testutils.DefaultMetadata(toc.OBJ_TEXT_SEARCH_CONFIGURATION, false, true, true, false)
backup.PrintCreateTextSearchConfigurationStatement(backupfile, tocfile, configuration, configurationMetadata)
testhelper.AssertQueryRuns(connectionPool, buffer.String())
defer testhelper.AssertQueryRuns(connectionPool, "DROP TEXT SEARCH CONFIGURATION public.testconfiguration")
resultConfigurations := backup.GetTextSearchConfigurations(connectionPool)
resultMetadataMap := backup.GetMetadataForObjectType(connectionPool, backup.TYPE_TS_CONFIGURATION)
Expect(resultConfigurations).To(HaveLen(1))
uniqueID := testutils.UniqueIDFromObjectName(connectionPool, "public", "testconfiguration", backup.TYPE_TS_CONFIGURATION)
resultMetadata := resultMetadataMap[uniqueID]
structmatcher.ExpectStructsToMatchExcluding(&configuration, &resultConfigurations[0], "Oid")
structmatcher.ExpectStructsToMatch(&configurationMetadata, &resultMetadata)
})
})
})