// This is an automatically generated code sample.
// To make this code sample work in your Oracle Cloud tenancy,
// please replace the values for any parameters whose current values do not fit
// your use case (such as resource IDs, strings containing ‘EXAMPLE’ or ‘unique_id’, and
// boolean, number, and enum parameters with values not fitting your use case).

package main

import (
	"context"
	"fmt"

	"github.com/oracle/oci-go-sdk/v65/common"
	"github.com/oracle/oci-go-sdk/v65/example/helpers"
	"github.com/oracle/oci-go-sdk/v65/mysql"
)

func ExampleCreateConfiguration() {
	// Create a default authentication provider that uses the DEFAULT
	// profile in the configuration file.
	// Refer to <see href="https://docs.cloud.oracle.com/en-us/iaas/Content/API/Concepts/sdkconfig.htm#SDK_and_CLI_Configuration_File>the public documentation</see> on how to prepare a configuration file.
	client, err := mysql.NewMysqlaasClientWithConfigurationProvider(common.DefaultConfigProvider())
	helpers.FatalIfError(err)

	// Create a request and dependent object(s).

	req := mysql.CreateConfigurationRequest{OpcRequestId: common.String("2XYMOKHS7EUKAZUZBRFC<unique_ID>"),
		OpcRetryToken: common.String("EXAMPLE-opcRetryToken-Value"),
		CreateConfigurationDetails: mysql.CreateConfigurationDetails{InitVariables: &mysql.InitializationVariables{LowerCaseTableNames: mysql.InitializationVariablesLowerCaseTableNamesSensitive},
			ParentConfigurationId: common.String("ocid1.test.oc1..<unique_ID>EXAMPLE-parentConfigurationId-Value"),
			DisplayName:           common.String("EXAMPLE-displayName-Value"),
			ShapeName:             common.String("EXAMPLE-shapeName-Value"),
			Variables: &mysql.ConfigurationVariables{ConnectionMemoryChunkSize: common.Int(3.21196349e+08),
				MysqlZstdDefaultCompressionLevel:       common.Int(7),
				InnodbStrictMode:                       common.Bool(true),
				MaxBinlogCacheSize:                     common.Int64(5.3933334322564e+13),
				MaxConnections:                         common.Int(16942),
				SkipNameResolve:                        common.Bool(true),
				CollationServer:                        mysql.ConfigurationVariablesCollationServerUtf8mb4Pl0900AsCs,
				InnodbMaxPurgeLagDelay:                 common.Int(267990),
				InnodbRollbackOnTimeout:                common.Bool(true),
				LongQueryTime:                          common.Int(2.8892749e+07),
				ParserMaxMemSize:                       common.Int64(4.341932415378355e+18),
				RequireSecureTransport:                 common.Bool(false),
				ExplainFormat:                          mysql.ConfigurationVariablesExplainFormatTraditional,
				InnodbStatsTransientSamplePages:        common.Int64(8.41045691893525e+18),
				MaxExecutionTime:                       common.Int64(8.91393861124593e+18),
				MysqlxMaxAllowedPacket:                 common.Int(2.7737503e+08),
				TableOpenCache:                         common.Int(302372),
				BinlogGroupCommitSyncDelay:             common.Int(511305),
				CompletionType:                         mysql.ConfigurationVariablesCompletionTypeNoChain,
				InnodbSortBufferSize:                   common.Int(3.402856e+06),
				ThreadPoolTransactionDelay:             common.Int(288997),
				TimeZone:                               common.String("EXAMPLE-timeZone-Value"),
				AutoIncrementIncrement:                 common.Int(34314),
				BinlogTransactionCompression:           common.Bool(true),
				InnodbFtNumWordOptimize:                common.Int(126),
				InnodbFtResultCacheLimit:               common.Int64(1.231870367e+09),
				MysqlxConnectTimeout:                   common.Int(6.093737e+08),
				MysqlxZstdDefaultCompressionLevel:      common.Int(16),
				RegexpTimeLimit:                        common.Int(1.599959986e+09),
				CteMaxRecursionDepth:                   common.Int64(3.333500906e+09),
				InnodbOnlineAlterLogMaxSize:            common.Int64(3.290838295284219e+18),
				MysqlxIdleWorkerThreadTimeout:          common.Int(516),
				TmpTableSize:                           common.Int64(2.733332904579392e+18),
				ConnectionMemoryLimit:                  common.Int64(6.669801577346544e+18),
				InnodbDdlThreads:                       common.Int(58),
				MaxPreparedStmtCount:                   common.Int(1.798819e+06),
				InnodbLockWaitTimeout:                  common.Int(9.8430989e+07),
				ThreadPoolSize:                         common.Int(474),
				WaitTimeout:                            common.Int(1.806411e+06),
				BinlogExpireLogsSeconds:                common.Int(74),
				InnodbBufferPoolSize:                   common.Int64(3.908007688152495e+17),
				MysqlxEnableHelloNotice:                common.Bool(true),
				MysqlFirewallMode:                      common.Bool(true),
				ReplicaNetTimeout:                      common.Int(1.4733426e+07),
				BinlogGroupCommitSyncNoDelayCount:      common.Int(27945),
				TableDefinitionCache:                   common.Int(165998),
				RangeOptimizerMaxMemSize:               common.Int64(5.035420967999071e+18),
				ThreadPoolQueryThreadsPerGroup:         common.Int(1664),
				AutoIncrementOffset:                    common.Int(3474),
				DefaultAuthenticationPlugin:            mysql.ConfigurationVariablesDefaultAuthenticationPluginMysqlNativePassword,
				InnodbMaxPurgeLag:                      common.Int64(2.077145945e+09),
				ForeignKeyChecks:                       common.Bool(true),
				MysqlxDeflateDefaultCompressionLevel:   common.Int(3),
				MysqlxInteractiveTimeout:               common.Int(345956),
				ExplicitDefaultsForTimestamp:           common.Bool(false),
				InnodbRedoLogCapacity:                  common.Int64(8.1418628313e+10),
				NetWriteTimeout:                        common.Int(5.569011e+06),
				InformationSchemaStatsExpiry:           common.Int(7.224092e+06),
				InnodbFtEnableStopword:                 common.Bool(true),
				InnodbNumaInterleave:                   common.Bool(true),
				SqlWarnings:                            common.Bool(true),
				MaxSeeksForKey:                         common.Int64(1.5434461486721536e+18),
				GroupReplicationConsistency:            mysql.ConfigurationVariablesGroupReplicationConsistencyBeforeOnPrimaryFailover,
				SqlRequirePrimaryKey:                   common.Bool(false),
				BinlogRowMetadata:                      mysql.ConfigurationVariablesBinlogRowMetadataMinimal,
				BlockEncryptionMode:                    common.String("EXAMPLE-blockEncryptionMode-Value"),
				CharacterSetServer:                     mysql.ConfigurationVariablesCharacterSetServerGb18030,
				GlobalConnectionMemoryLimit:            common.Int64(4.928998097114857e+18),
				MysqlxWriteTimeout:                     common.Int(850170),
				ReplicaTypeConversions:                 common.String("EXAMPLE-replicaTypeConversions-Value"),
				OptimizerSwitch:                        common.String("EXAMPLE-optimizerSwitch-Value"),
				ThreadPoolMaxTransactionsLimit:         common.Int(44886),
				GlobalConnectionMemoryTracking:         common.Bool(true),
				InnodbChangeBuffering:                  mysql.ConfigurationVariablesInnodbChangeBufferingAll,
				RelayLogSpaceLimit:                     common.Int64(8.333366044009502e+18),
				GeneratedRandomPasswordLength:          common.Int(112),
				InnodbBufferPoolInstances:              common.Int(32),
				InnodbFtMaxTokenSize:                   common.Int(31),
				InnodbFtServerStopwordTable:            common.String("EXAMPLE-innodbFtServerStopwordTable-Value"),
				MaxAllowedPacket:                       common.Int(7.32460702e+08),
				QueryPreallocSize:                      common.Int64(2.1034756169855378e+18),
				InnodbUndoLogTruncate:                  common.Bool(true),
				MaxConnectErrors:                       common.Int64(8.107513248636018e+18),
				MysqlxDeflateMaxClientCompressionLevel: common.Int(6),
				SqlMode:                                common.String("EXAMPLE-sqlMode-Value"),
				SortBufferSize:                         common.Int64(1.3184155679940254e+17),
				SqlGenerateInvisiblePrimaryKey:         common.Bool(true),
				Autocommit:                             common.Bool(false),
				ConnectTimeout:                         common.Int(9.035476e+06),
				InnodbAutoincLockMode:                  common.Int(373),
				MysqlxLz4DefaultCompressionLevel:       common.Int(15),
				MysqlxWaitTimeout:                      common.Int(732705),
				ReplicaParallelWorkers:                 common.Int(98),
				InnodbDdlBufferSize:                    common.Int64(3.54767305e+09),
				MandatoryRoles:                         common.String("EXAMPLE-mandatoryRoles-Value"),
				ThreadPoolDedicatedListeners:           common.Bool(false),
				JoinBufferSize:                         common.Int64(5.02536905663161e+18),
				MaxHeapTableSize:                       common.Int64(5.966729263300392e+18),
				TransactionIsolation:                   mysql.ConfigurationVariablesTransactionIsolationReadUncommitted,
				InnodbFtMinTokenSize:                   common.Int(12),
				MysqlxMinWorkerThreads:                 common.Int(53),
				InnodbStatsPersistentSamplePages:       common.Int64(8.952242213881435e+18),
				InteractiveTimeout:                     common.Int(1.3413691e+07),
				LocalInfile:                            common.Bool(false),
				MaxUserConnections:                     common.Int64(3.59906683e+08),
				MysqlxDocumentIdUniquePrefix:           common.Int(64881),
				MysqlxReadTimeout:                      common.Int(1.900537e+06),
				NetReadTimeout:                         common.Int(9.672902e+06),
				QueryAllocBlockSize:                    common.Int64(3.568884832e+09),
				BinlogRowValueOptions:                  common.String("EXAMPLE-binlogRowValueOptions-Value"),
				GroupConcatMaxLen:                      common.Int64(5.088714018991077e+18),
				InnodbBufferPoolDumpPct:                common.Int(90),
				MysqlxLz4MaxClientCompressionLevel:     common.Int(8),
				TemptableMaxRam:                        common.Int64(2.0870695287945446e+18),
				InnodbAdaptiveHashIndex:                common.Bool(true),
				InnodbLogWriterThreads:                 common.Bool(false),
				MysqlxZstdMaxClientCompressionLevel:    common.Int(6),
				BigTables:                              common.Bool(false)},
			CompartmentId: common.String("ocid1.test.oc1..<unique_ID>EXAMPLE-compartmentId-Value"),
			DefinedTags:   map[string]map[string]interface{}{"EXAMPLE_KEY_WOdd4": map[string]interface{}{"EXAMPLE_KEY_czcjy": "EXAMPLE--Value"}},
			Description:   common.String("EXAMPLE-description-Value"),
			FreeformTags:  map[string]string{"EXAMPLE_KEY_T25Xp": "EXAMPLE_VALUE_Hn1eLIHdJofvxd5PGsU6"}}}

	// Send the request using the service client
	resp, err := client.CreateConfiguration(context.Background(), req)
	helpers.FatalIfError(err)

	// Retrieve value from the response.
	fmt.Println(resp)
}