Question: I have a date of birth DATE column in a customer table with ~13 million rows. I would like to query this table to find all customers who were born on a certain month and day of that month, but any year. 

Can I do this by casting the date into a char and doing a subscript query on the cast, or should I create an aditional char column, update it to hold just the month and day, or create three new integer columns to hold month, day and year, respectively?

This will be a very frequently used query criteria...

**EDIT:**... and the table has ~13 million rows.

Can you please provide an example of your best solution?

Answer: 
Unfortunately, having preprocessor directives in the argument of a macro is undefined, so you can't do this directly. But as long as none of your shaders need preprocessor directives other than `#version`, you could do something like:

```
#define GLSL(version, shader)  "#version " #version "\n" #shader

const GLchar* vert = GLSL(120,
    attribute vec2 position;
    void main()
    {
        gl_Position = vec4( position, 0.0, 1.0 );
    }
);

```
An alternative approach: include a header file, but with a `.glsl` extension.

For example, I have a file called `bar.h.glsl`. It exposes my vertex and fragment shader code as raw literals:

```c
#pragma once

namespace bar {

static const char vertex[] = R"(#version 410 core

// ----- vertex shader start -----
layout( location = 0 ) in vec4 vPosition;

uniform float Time;
uniform float Width;

void main()
{
    float x = vPosition.x;
    float y = vPosition.y * Width;
    float yOffset = mix(sin(Time), sin(Time * 0.75), x * 0.5 + 0.5);
    gl_Position = vec4(x, y + yOffset, vPosition.z, vPosition.w);
}
// ------ vertex shader end ------

)";
static const char fragment[] = R"(#version 410 core

// ----- fragment shader start ----
out vec4 fragColor;

void main()
{
    fragColor = vec4(1.0, 1.0, 1.0, 1.0);
}
// ------ fragment shader end -----

)";

}

```

Then in my source, I simply include the file:

```
#include "bar.h.glsl"

```

and access the glsl strings like so:

```
bool success = barShader.Compile( bar::vertex, bar::fragment );

```

This way, although I need to overlook a bit of C code in my glsl files, I get the best of glsl syntax highlighting without having to dynamically load the file.