[prev in list] [next in list] [prev in thread] [next in thread] 

List:       postgresql-sql
Subject:    Sv: DDL in active production database
From:       Andreas Joseph Krogh <andreas () visena ! com>
Date:       2023-09-25 9:58:56
Message-ID: VisenaEmail.a6e.1bf6172a1534952b.18acbc594bb () origo02 ! app ! internal ! visena ! net
[Download RAW message or body]

[Attachment #2 (multipart/related)]

[Attachment #4 (multipart/alternative)]


På mandag 25. september 2023 kl. 02:01:28, skrev Skelton, Adam J <
Adam.Skelton@fisglobal.com <mailto:Adam.Skelton@fisglobal.com>>:

Hi,



I hope I have the correct group here.



I have a question that I am struggling to find answers for in the 
documentation. Does Postgres have problems with creation / changes to database 
schema objects when the database is actively being used?



In particular – rightly or wrongly – our developers want our application to 
occasionally issue the following kinds of DDL when it's in active use



Alter table ... add column ...

Create / drop materialised view ...

Create / drop table created with INHERITANCE





I know oracle hates this and you can run into some serious issues, SQL server 
generally lets you away with it.



Should we expect problems if we decided to do this in the latest version of 
Postgres?



Thanks for your time.

Adam

The information contained in this message is proprietary and/or confidential. 
If you are not the intended recipient, please: (i) delete the message and all 
copies; (ii) do not disclose, distribute or use the message in any manner; and 
(iii) notify the sender immediately. In addition, please be aware that any 
message addressed to our domain is subject to archiving and review by persons 
other than the intended recipient. Thank you.

It will cause problems if you mix DDL and DML when having deferred constraints 
with following updates in the same TX.






--
Andreas Joseph Krogh
CTO / Partner - Visena AS
Mobile: +47 909 56 963
andreas@visena.com <mailto:andreas@visena.com>
www.visena.com <https://www.visena.com>
 <https://www.visena.com>

[Attachment #7 (text/html)]

<style class="visena-ck-5-styles">
.ck-content {
    --ck-color-image-caption-background: #f7f7f7;
    --ck-color-image-caption-text: #333333;
    --ck-color-mention-background: #990030E6;
    --ck-color-mention-text: #990030;
    --ck-color-table-caption-background: #f7f7f7;
    --ck-color-table-caption-text: #333333;
    --ck-highlight-marker-blue: #72ccfd;
    --ck-highlight-marker-green: #62f962;
    --ck-highlight-marker-pink: #fc7899;
    --ck-highlight-marker-yellow: #fdfd77;
    --ck-highlight-pen-green: #128a00;
    --ck-highlight-pen-red: #e71313;
    --ck-image-style-spacing: 1.5em;
    --ck-spacing-large: 2px;
    --ck-inline-image-style-spacing: calc(var(--ck-image-style-spacing) / 2);
    --ck-todo-list-checkmark-size: 16px;
    /*
    This works when email is READ in Visena-reader, because there the content of the \
                email is in "shadow-DOM",
     which has it's own :root, but needs to be declared in ".ck-content p, \
                .ck-content div" as well for the actual
     CKEditor to display it correctly, else it get's its default from .liftTemplate

    */
    font-family: Arial, Helvetica, sans-serif;
    font-size: 14px;
}

/* ckeditor5-image/theme/imageresize.css */
.ck-content .image.image_resized {
    max-width: 100%;
    display: block;
    box-sizing: border-box;
}
/* ckeditor5-image/theme/imageresize.css */
.ck-content .image.image_resized img {
    width: 100%;
}
/* ckeditor5-image/theme/imageresize.css */
.ck-content .image.image_resized > figcaption {
    display: block;
}
/* ckeditor5-image/theme/imagecaption.css */
.ck-content .image > figcaption {
    display: table-caption;
    caption-side: bottom;
    word-break: break-word;
    color: var(--ck-color-image-caption-text);
    background-color: var(--ck-color-image-caption-background);
    padding: .6em;
    font-size: .75em;
    outline-offset: -1px;
}

/* ckeditor5-font/theme/fontsize.css */
/* THIS IS A VISENA SPECIFIC CONFIG */
.ck-content p, .ck-content div {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 14px;
}

.ck-content p.visenaNormal {
    margin: 0;
}

/* ckeditor5-font/theme/fontsize.css */
.ck-content .text-tiny {
    font-size: .7em;
}
/* ckeditor5-font/theme/fontsize.css */
.ck-content .text-small {
    font-size: .85em;
}
/* ckeditor5-font/theme/fontsize.css */
.ck-content .text-big {
    font-size: 1.4em;
}
/* ckeditor5-font/theme/fontsize.css */
.ck-content .text-huge {
    font-size: 1.8em;
}
/* ckeditor5-image/theme/imagestyle.css */
.ck-content .image-style-block-align-left,
.ck-content .image-style-block-align-right {
    max-width: calc(100% - var(--ck-image-style-spacing));
}
/* ckeditor5-image/theme/imagestyle.css */
.ck-content .image-style-align-left,
.ck-content .image-style-align-right {
    clear: none;
}
/* ckeditor5-image/theme/imagestyle.css */
.ck-content .image-style-side {
    float: right;
    margin-left: var(--ck-image-style-spacing);
    max-width: 50%;
}
/* ckeditor5-image/theme/imagestyle.css */
.ck-content .image-style-align-left {
    float: left;
    margin-right: var(--ck-image-style-spacing);
}
/* ckeditor5-image/theme/imagestyle.css */
.ck-content .image-style-align-center {
    margin-left: auto;
    margin-right: auto;
}
/* ckeditor5-image/theme/imagestyle.css */
.ck-content .image-style-align-right {
    float: right;
    margin-left: var(--ck-image-style-spacing);
}
/* ckeditor5-image/theme/imagestyle.css */
.ck-content .image-style-block-align-right {
    margin-right: 0;
    margin-left: auto;
}
/* ckeditor5-image/theme/imagestyle.css */
.ck-content .image-style-block-align-left {
    margin-left: 0;
    margin-right: auto;
}
/* ckeditor5-image/theme/imagestyle.css */
.ck-content p + .image-style-align-left,
.ck-content p + .image-style-align-right,
.ck-content p + .image-style-side {
    margin-top: 0;
}
/* ckeditor5-image/theme/imagestyle.css */
.ck-content .image-inline.image-style-align-left,
.ck-content .image-inline.image-style-align-right {
    margin-top: var(--ck-inline-image-style-spacing);
    margin-bottom: var(--ck-inline-image-style-spacing);
}
/* ckeditor5-image/theme/imagestyle.css */
.ck-content .image-inline.image-style-align-left {
    margin-right: var(--ck-inline-image-style-spacing);
}
/* ckeditor5-image/theme/imagestyle.css */
.ck-content .image-inline.image-style-align-right {
    margin-left: var(--ck-inline-image-style-spacing);
}
/* ckeditor5-image/theme/image.css */
.ck-content .image {
    display: table;
    clear: both;
    text-align: center;
    margin: 0 auto;
    min-width: 50px;
}
/* ckeditor5-image/theme/image.css */
.ck-content .image img {
    display: block;
    margin: 0 auto;
    max-width: 100%;
    min-width: 100%;
}
/* ckeditor5-image/theme/image.css */
.ck-content .image-inline {
    /*
     * Normally, the .image-inline would have "display: inline-block" and "img { \
                width: 100% }" (to follow the wrapper while resizing).;
     * Unfortunately, together with "srcset", it gets automatically stretched up to \
                the width of the editing root.
     * This strange behavior does not happen with inline-flex.
     */
    display: inline-flex;
    max-width: 100%;
    align-items: flex-start;
}
/* ckeditor5-image/theme/image.css */
.ck-content .image-inline picture {
    display: flex;
}
/* ckeditor5-image/theme/image.css */
.ck-content .image-inline picture,
.ck-content .image-inline img {
    flex-grow: 1;
    flex-shrink: 1;
    max-width: 100%;
}
/* ckeditor5-highlight/theme/highlight.css */
.ck-content .marker-yellow {
    background-color: var(--ck-highlight-marker-yellow);
}
/* ckeditor5-highlight/theme/highlight.css */
.ck-content .marker-green {
    background-color: var(--ck-highlight-marker-green);
}
/* ckeditor5-highlight/theme/highlight.css */
.ck-content .marker-pink {
    background-color: var(--ck-highlight-marker-pink);
}
/* ckeditor5-highlight/theme/highlight.css */
.ck-content .marker-blue {
    background-color: var(--ck-highlight-marker-blue);
}
/* ckeditor5-highlight/theme/highlight.css */
.ck-content .pen-red {
    color: var(--ck-highlight-pen-red);
    background-color: transparent;
}
/* ckeditor5-highlight/theme/highlight.css */
.ck-content .pen-green {
    color: var(--ck-highlight-pen-green);
    background-color: transparent;
}
/* ckeditor5-horizontal-line/theme/horizontalline.css */
.ck-content hr {
    margin: 15px 0;
    height: 4px;
    background: #dedede;
    border: 0;
}
/* ckeditor5-block-quote/theme/blockquote.css */
.ck-content blockquote {
    overflow: hidden;
    padding-right: 0;
    padding-left: 1ex;
    margin-left: 0;
    margin-right: 0;
    font-style: unset;
    border-left: solid 1px #cccccc;
}
/* ckeditor5-table/theme/blockquote.css */
/* THIS IS A VISENA SPECIFIC CONFIG */
.ck-content .blockquote {
    font-style: unset;
}
/* ckeditor5-block-quote/theme/blockquote.css */
.ck-content[dir="rtl"] blockquote {
    border-left: 0;
    border-right: solid 1px #cccccc;
}
/* ckeditor5-basic-styles/theme/code.css */
.ck-content code {
    background-color: #c7c7c7;
    padding: 0 1px;
    font-size: small;
    border-radius: 2px;
}
/* ckeditor5-table/theme/tablecaption.css */
.ck-content .table > figcaption {
    display: table-caption;
    caption-side: top;
    word-break: break-word;
    text-align: center;
    color: var(--ck-color-table-caption-text);
    background-color: var(--ck-color-table-caption-background);
    padding: .6em;
    font-size: .75em;
    outline-offset: -1px;
}
/* ckeditor5-table/theme/table.css */
.ck-content .table {
    margin: 0 auto;
    display: table;
}
/* ckeditor5-table/theme/table.css */
.ck-content .table table {
    border-collapse: collapse;
    border-spacing: 0;
    width: 100%;
    height: 100%;
    border: 1px double #b3b3b3;
}
/* ckeditor5-table/theme/table.css */
.ck-content .table table td,
.ck-content .table table th {
    min-width: 2em;
    padding: .4em;
    border: 1px solid #bfbfbf;
}
/* ckeditor5-table/theme/table.css */
.ck-content .table table th {
    font-weight: bold;
    background: #000000E6;
}
/* ckeditor5-table/theme/table.css */
.ck-content[dir="rtl"] .table th {
    text-align: right;
}
/* ckeditor5-table/theme/table.css */
.ck-content[dir="ltr"] .table th {
    text-align: left;
}

/*Visena specific*/
.ck-content .table {
    margin-left: 0;
}

.ck-content .table table {
}

.ck-content .table table td {
}
/* ckeditor5-page-break/theme/pagebreak.css */
.ck-content .page-break {
    position: relative;
    clear: both;
    padding: 5px 0;
    display: flex;
    align-items: center;
    justify-content: center;
}
/* ckeditor5-page-break/theme/pagebreak.css */
.ck-content .page-break::after {
    content: '';
    position: absolute;
    border-bottom: 2px dashed #c4c4c4;
    width: 100%;
}
/* ckeditor5-page-break/theme/pagebreak.css */
.ck-content .page-break__label {
    position: relative;
    z-index: 1;
    padding: .3em .6em;
    display: block;
    text-transform: uppercase;
    border: 1px solid #c4c4c4;
    border-radius: 2px;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 0.75em;
    font-weight: bold;
    color: #333333;
    background: #ffffff;
    box-shadow: 2px 2px 1px #000000;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}
/* ckeditor5-media-embed/theme/mediaembed.css */
.ck-content .media {
    clear: both;
    margin: 0 0;
    display: block;
    min-width: 15em;
}
/* ckeditor5-list/theme/todolist.css */
.ck-content .todo-list {
    list-style: none;
}
/* ckeditor5-list/theme/todolist.css */
.ck-content .todo-list li {
    margin-bottom: 5px;
}
/* ckeditor5-list/theme/todolist.css */
.ck-content .todo-list li .todo-list {
    margin-top: 5px;
}
/* ckeditor5-list/theme/todolist.css */
.ck-content .todo-list .todo-list__label > input {
    -webkit-appearance: none;
    display: inline-block;
    position: relative;
    width: var(--ck-todo-list-checkmark-size);
    height: var(--ck-todo-list-checkmark-size);
    vertical-align: middle;
    border: 0;
    left: -25px;
    margin-right: -15px;
    right: 0;
    margin-left: 0;
}
/* ckeditor5-list/theme/todolist.css */
.ck-content .todo-list .todo-list__label > input::before {
    display: block;
    position: absolute;
    box-sizing: border-box;
    content: '';
    width: 100%;
    height: 100%;
    border: 1px solid #333333;
    border-radius: 2px;
    transition: 250ms ease-in-out box-shadow, 250ms ease-in-out background, 250ms \
ease-in-out border; }
/* ckeditor5-list/theme/todolist.css */
.ck-content .todo-list .todo-list__label > input::after {
    display: block;
    position: absolute;
    box-sizing: content-box;
    pointer-events: none;
    content: '';
    left: calc( var(--ck-todo-list-checkmark-size) / 3 );
    top: calc( var(--ck-todo-list-checkmark-size) / 5.3 );
    width: calc( var(--ck-todo-list-checkmark-size) / 5.3 );
    height: calc( var(--ck-todo-list-checkmark-size) / 2.6 );
    border-style: solid;
    border-color: transparent;
    border-width: 0 calc( var(--ck-todo-list-checkmark-size) / 8 ) calc( \
var(--ck-todo-list-checkmark-size) / 8 ) 0;  transform: rotate(45deg);
}
/* ckeditor5-list/theme/todolist.css */
.ck-content .todo-list .todo-list__label > input[checked]::before {
    background: #26ab33;
    border-color: #26ab33;
}
/* ckeditor5-list/theme/todolist.css */
.ck-content .todo-list .todo-list__label > input[checked]::after {
    border-color: #ffffff;
}
/* ckeditor5-list/theme/todolist.css */
.ck-content .todo-list .todo-list__label .todo-list__label__description {
    vertical-align: middle;
}
/* ckeditor5-language/theme/language.css */
.ck-content span[lang] {
    font-style: italic;
}
/* ckeditor5-code-block/theme/codeblock.css */
.ck-content pre {
    padding: 1em;
    color: #353535;
    background: #c7c7c7;
    border: 1px solid #c4c4c4;
    border-radius: 2px;
    text-align: left;
    direction: ltr;
    tab-size: 4;
    white-space: pre-wrap;
    font-style: normal;
    min-width: 200px;
}
/* ckeditor5-code-block/theme/codeblock.css */
.ck-content pre code {
    background: unset;
    padding: 0;
    border-radius: 0;
}
/* ckeditor5-mention/theme/mention.css */
.ck-content .mention {
    background: var(--ck-color-mention-background);
    color: var(--ck-color-mention-text);
}
@media print {
    /* ckeditor5-page-break/theme/pagebreak.css */
    .ck-content .page-break {
        padding: 0;
    }
    /* ckeditor5-page-break/theme/pagebreak.css */
    .ck-content .page-break::after {
        display: none;
    }
}
</style><div class="ck-content" \
data-visena-message-id="_VisenaEmail.a6e.1bf6172a1534952b.18acbc594bb@origo02.app.internal.visena.net_"><div>På \
mandag 25. september 2023 kl. 02:01:28, skrev Skelton, Adam J &lt;<a \
href="mailto:Adam.Skelton@fisglobal.com">Adam.Skelton@fisglobal.com</a>&gt;:</div><blockquote><div \
class="WordSection1"><p class="MsoNormal visenaNormal">Hi,</p><p class="MsoNormal \
visenaNormal">  </p><p class="MsoNormal visenaNormal">I hope I have the correct group \
here.</p><p class="MsoNormal visenaNormal">  </p><p class="MsoNormal visenaNormal">I \
have a question that I am struggling to find answers for in the documentation.   Does \
Postgres have problems with creation / changes to database schema objects when the \
database is actively being used?</p><p class="MsoNormal visenaNormal">  </p><p \
class="MsoNormal visenaNormal">In particular – rightly or wrongly – our \
developers want our application to occasionally issue the following kinds of DDL when \
it's in active use</p><p class="MsoNormal visenaNormal">  </p><p class="MsoNormal \
visenaNormal"><span style="font-family:&quot;Courier New&quot;;">Alter table ... add \
column ...</span></p><p class="MsoNormal visenaNormal"><span \
style="font-family:&quot;Courier New&quot;;">Create / drop materialised view \
...</span></p><p class="MsoNormal visenaNormal"><span \
style="font-family:&quot;Courier New&quot;;">Create / drop table created with \
INHERITANCE</span></p><p class="MsoNormal visenaNormal"><span \
style="font-family:&quot;Courier New&quot;;">  </span></p><p class="MsoNormal \
visenaNormal"><span style="font-family:&quot;Courier New&quot;;">  </span></p><p \
class="MsoNormal visenaNormal">I know oracle hates this and you can run into some \
serious issues, SQL server generally lets you away with it.   </p><p class="MsoNormal \
visenaNormal">  </p><p class="MsoNormal visenaNormal">Should we expect problems if we \
decided to do this in the latest version of Postgres?</p><p class="MsoNormal \
visenaNormal">  </p><p class="MsoNormal visenaNormal">Thanks for your time.</p><p \
class="MsoNormal visenaNormal">Adam</p></div><p class="visenaNormal">The information \
contained in this message is proprietary and/or confidential. If you are not the \
intended recipient, please: (i) delete the message and all copies; (ii) do not \
disclose, distribute or use the message in any manner; and (iii) notify the sender \
immediately. In addition, please be aware that any message addressed to our domain is \
subject to archiving and review by persons other than the intended recipient. Thank \
you.</p></blockquote><p class="visenaNormal">It will cause problems if you mix DDL \
and DML when having deferred constraints with following updates in the same TX.</p><p \
class="visenaNormal">  </p><div class="visena-email-signature" \
data-visena-message-id="_VisenaEmail.a6e.1bf6172a1534952b.18acbc594bb@origo02.app.internal.visena.net_"><div><div><div>--</div><div><span \
style="font-family:arial,helvetica,sans-serif;"><strong>Andreas Joseph \
Krogh</strong></span></div><div><span \
style="font-family:arial,helvetica,sans-serif;">CTO / Partner</span> - Visena \
AS</div><div><span style="font-family:arial,helvetica,sans-serif;">Mobile: +47 909 56 \
963</span></div><div><a \
href="mailto:andreas@visena.com">andreas@visena.com</a></div><div><a \
href="https://www.visena.com">www.visena.com</a></div><div \
style="padding-top:5px;"><a href="https://www.visena.com"><img alt="" \
src="cid:part_F724072878303JF5G4K"></a></div></div></div></div><div>  </div></div>


[Attachment #8 (image/png)]

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic